Skip to content
Development
Skill

/story-workflow

Refine, analyze, improve, and groom user stories / work items for quality — readiness reports, template restructuring, adaptive gap-filling, and codebase-aware technical grooming. USER-ENTRY and HUMAN-ONLY — invoke only when the user explicitly runs /story-workflow <command>;

From plugin
ai-sdlc-harness
198 skills3 agents4 hooks
Install
$ npx -y skills add MostAshraf/ai-sdlc-harness --skill story-workflow --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/story-workflow

Context preview

The summary Claude sees to decide when to auto-load this skill.

Refine, analyze, improve, and groom user stories / work items for quality — readiness reports, template restructuring, adaptive gap-filling, and codebase-aware technical grooming. USER-ENTRY and HUMAN-ONLY — invoke only when the user explicitly runs /story-workflow <command>;

SKILL.md

story-workflow.SKILL.md
name: story-workflow
description: >
  Refine, analyze, improve, and groom user stories / work items for quality —
  readiness reports, template restructuring, adaptive gap-filling, and
  codebase-aware technical grooming. USER-ENTRY and HUMAN-ONLY — invoke only
  when the user explicitly runs /story-workflow <command>; never autonomously
  from conversation, never from a subagent (guard-enforced). Distinct from the
  /dev-workflow pipeline: this shapes the story itself, it does not build it.

story-workflow — story-quality refinement (PO-facing)

Improves work-item quality through four commands. Read-mostly: it fetches a work item, helps shape it, and — only with the user's consent — posts the result back as a comment. It never starts a dev run and never touches `ai/<run>/` run state.

Every harness call is `${CLAUDE_PLUGIN_ROOT}/bin/harness <verb> …` — the full path, run by you via Bash (a bare `harness` is not on PATH, and shell variables set in one Bash call do not persist to the next). Non-zero exit = refused; read the JSON error and act on it.

Usage

/story-workflow <command> <work-item-id> [session-notes…]

`<command>` is one of `analyze`, `refine`, `improve`, `groom`. `<work-item-id>` is whatever the configured provider uses — a number (ADO / GitHub / GitLab), a key (`PROJ-123`, Jira), or, for `local-markdown`, the story's **id** (the file stem inside `provider.stories_dir`, e.g. `WORK-7` for `WORK-7.md` — not a path). Any trailing tokens are session notes, passed through to `improve` and `refine`.

Routing

| command | file | one-line | |---|---|---| | `improve` | `commands/improve.md` | adaptive single-pass: assess → gap-fill → draft (the recommended default) | | `analyze` | `commands/analyze.md` | standalone readiness report with flags | | `refine` | `commands/refine.md` | slow, section-by-section interactive restructure | | `groom` | `commands/groom.md` | codebase-aware per-repo technical notes |

Parse `$ARGUMENTS`: the first token is the command, the second is the work-item id, the rest are notes. If the command is missing or unknown, print the usage line plus the table above and stop — do not guess. If the id is missing, ask for it — never proceed without one. Then read the one matching command file and follow it (context economy: load a single command file, not all four).

Before routing

1. Confirm the workspace is bootstrapped: `.claude/context/provider.yaml` must exist. If it doesn't, `/init-workspace` never ran — send the user there and stop. The active provider is resolved from config by the harness; you never hand-pick it. 2. The recipe for fetching a work item and posting a result back — for every provider and both transports — lives once in `shared/provider-io.md`. Read it; the commands cite it instead of repeating it. 3. Domain and convention context (for `improve` and `groom`) lives once in `shared/context.md`.

Guardrails (all four commands)

  • On a remote provider, never edit the item's Description or Acceptance-Criteria

fields — post back as a **comment** only. The single exception is a `local-markdown` story the user explicitly asks you to rewrite in place; see `shared/provider-io.md`.

  • Never invent business requirements. A gap is a question for the human, not an

assertion of what "should" be there.

  • Mirror the user's domain language; don't rename their "platform" to "system".
  • Files in `templates/` are read-only references — don't modify them while a

command runs.

  • If a story is already well-formed, say so. "This looks ready" is a valid,

valuable outcome — don't manufacture flags or questions to look busy.

Read more
Ships withai-sdlc-harness

A governed multi-agent SDLC pipeline for Claude Code and Qwen Code — a ground-up rewrite of ai-sdlc-harness.

Get the whole plugin
Stats
19
Stars
4
Forks
Active
Maintenance
Python
Language
MIT
License
20d ago
Last commit
4mo ago
Created

Repo: MostAshraf/ai-sdlc-harness

Other skills on ai-sdlc-harness.