Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
307a12b
feat: /awos:flow — generates the project's /implement-ticket delivery…
Jun 10, 2026
a14313b
fix(flow): interview UX — docs question first and alone, batch indepe…
Jun 10, 2026
4dded1b
fix(flow): docs question shows findings first, accepts any locator, p…
Jun 10, 2026
03b103b
feat(flow): cover CI gate, merge step, and post-merge activities
Jun 11, 2026
c69c0a5
feat(flow): context strategy — subagent-isolated stages, flow log, re…
Jun 11, 2026
a06e9ab
fix(flow): interview rules from live runs — option schema, one axis p…
Jun 11, 2026
af27d93
feat(flow): latency — local review before CI spend, concurrent remote…
Jun 11, 2026
6c86e8c
feat(flow): target-sync conflict checkpoints and Monitor-based gate w…
Jun 11, 2026
d016525
feat(flow): evaluate existing automation, notifications dimension, co…
Jun 15, 2026
b86d9d4
chore: ignore tmp/ and review/ scratch directories
Jun 15, 2026
182fe1e
refactor(flow): rework /awos:flow per review — plugin delivery, featu…
Jun 16, 2026
6a99e14
fix(flow): bundle generation templates in the plugin so /awos:flow is…
Jun 17, 2026
96fd39d
refactor(flow): address review follow-ups — plugin desc, Step 4 struc…
Jun 17, 2026
64a3902
fix(flow): broaden trigger example to all input shapes; scope resume …
Jun 17, 2026
39c5759
fix(flow): make the local-review file path reliably surfaced
Jun 18, 2026
70f2769
fix(flow): granular re-run, holistic autonomy, dirty-tree + header gu…
Jun 30, 2026
1978e04
fix(flow): catch project-config drift at generation time
Jun 30, 2026
68a32d1
fix(flow): surface the local review in the hand-off report
Jun 30, 2026
d74a3d7
feat(flow): generate /fix-bug, a spec-aware bug-fix command (2.3.0)
Jun 30, 2026
487f438
feat(flow): interview the command set and names
Jun 30, 2026
8ae0b5b
feat(flow): crash-report bug source for fix-bug
Jun 30, 2026
101e542
feat(flow): ticket-state lifecycle + CI-wait escalation
Jun 30, 2026
d249073
feat(flow): platform build/verify toolchains + resume-on-status
Jun 30, 2026
08a9195
fix(flow): verify stage drives the app itself instead of asking the u…
Jul 1, 2026
3101c19
fix(flow): finalize the flow-log at commit-push so it is never an unc…
Jul 1, 2026
8c16206
feat(flow): distinguish interactive vs unattended AskUserQuestion tim…
Jul 2, 2026
6ec65be
Merge remote-tracking branch 'origin/main' into feat/flow-command
Jul 2, 2026
46218f5
feat(flow): apply road-test #2 findings to the generator
Jul 7, 2026
4cffbd8
docs: prefer AskUserQuestion for every fixed-choice ask in prompt bodies
Jul 7, 2026
96d1acc
feat(flow): routing-policy flag and facts-only self-correction loop
Jul 7, 2026
d053feb
fix(flow): regenerate stages on generator update, not only on decisio…
Jul 8, 2026
1518dbb
fix(flow): road-test #3 fixes — clean output, hops-style loop, review…
Jul 8, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@
},
"metadata": {
"description": "AWOS plugins for AI-native development workflows",
"version": "2.1.0"
"version": "2.3.0"
},
"plugins": [
{
"name": "awos",
"source": "./plugins/awos",
"description": "Comprehensive code quality audit framework with auto-discoverable dimensions",
"version": "2.1.0"
"description": "Extends AWOS core with AI-powered delivery automation: audits a project's AI-readiness across auto-discoverable quality dimensions (/awos:ai-readiness-audit) and sets up an end-to-end delivery flow — feature and optional bug-fix commands — tailored to the team (/awos:flow).",
"version": "2.3.0"
}
]
}
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,7 @@ node_modules
.idea
.DS_Store
docs/superpowers/
tmp/

# pr-review skill drafts (local, not committed)
review/
1 change: 1 addition & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -148,4 +148,5 @@ Non-obvious rules for this repo:
- **Prefer the built-in `Explore` and `Plan` subagents** for read-heavy context-gathering. Don't have an orchestrator command read the whole codebase in its own context.
- **Skip ceremonial preambles** like "Great!", "I will now…", "All done!" — modern models trim them naturally and AWOS prompts shouldn't fight that.
- **`AskUserQuestion` belongs in core `commands/*.md`** under an `# INTERACTION` section. AWOS targets Claude Code only, so the tool is a framework default rather than a host-specific customization — don't duplicate it into the `claude/commands/*.md` wrappers.
- **Prefer `AskUserQuestion` over plain prose for every fixed-choice ask, not just the interview.** The `# INTERACTION` bullet ("instead of plain text or numbered lists") states the rule, but it's easy to break in the `PROCESS` body: "list the spec directories and ask the user to choose" is a numbered-list question wearing prose, and a proceed/stop or keep/drop/merge decision is a two-to-three-option `AskUserQuestion`, not a sentence. `flow.md` is the reference — its interview, re-run reconciliation, and reuse tradeoffs are all `AskUserQuestion` calls. Reserve plain prose for interactions with no discrete options to enumerate: a hard stop with a single next action, a non-blocking recommendation the command then proceeds past, or open-ended "review this and tell me what to change".
- **Do not hard-wrap markdown prose at 80 columns.** Let paragraphs and list items flow as a single line per logical unit. Markdown renderers reflow soft-wrapped text, and 80-col wrapping inflates diffs when prose is edited. Wrapping is fine only where the line is semantically a single token (a URL, a code identifier) or inside a fenced block whose literal line breaks matter.
2 changes: 1 addition & 1 deletion claude/commands/spec.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
description: Creates the Functional Spec — what the feature does for the user.
argument-hint: '[topic, optional — defaults to next roadmap item]'
argument-hint: '[topic for a new spec, or an existing spec to amend]'
---

@.awos/commands/spec.md
25 changes: 25 additions & 0 deletions commands/spec.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,31 @@ Your primary task is to create a new functional specification file. You will det

Follow this process precisely.

### Mode Detection (do this first)

Before determining a topic, decide whether this run **creates** a new spec or **amends** an existing one. Parse `<user_prompt>` for a reference to an existing spec — a spec number (`002`), a spec directory name (`002-task-scheduling`), or an explicit "amend/update spec NNN: \<what changed\>" phrasing (how the generated `fix-bug` command's `amend-spec` stage invokes this command after a behavior-changing fix).

- If the prompt names a spec whose `context/spec/[index]-[short-name]/functional-spec.md` exists, go to **Update Mode** below.
- Otherwise, fall through to **Creation Mode** (Step 1 onward) — today's flow.

Only an explicit reference to an existing spec routes to Update Mode; a fresh topic — even one adjacent to an existing feature — is Creation Mode. When the reference is ambiguous, confirm with the user via `AskUserQuestion` rather than guessing.

### Update Mode

Amend the named spec **in place**. This mode never runs `create-spec-directory.sh` and never allocates a new index — it edits the existing directory.

1. Read the named spec's `functional-spec.md`.
2. Identify the acceptance criteria (and any parent requirement statements) the change affects. Edit them to match the corrected behavior, holding to the same non-technical, user-facing Language Rules above. Leave untouched criteria as they are.
3. Append a dated entry under a `## Change Log` heading (add the heading if the spec predates it): the date, the source reference (e.g. the bug id or the fix description passed in), and what behavior changed and why.
4. **Status:** do not force a transition. A spec amended after an already-verified fix stays `Completed` — the Change Log records the amendment. Only move Status back (e.g. to `In Review`) when the user is amending a spec that was not yet verified.
5. Save in the same directory under the same index. Report the amended path, which criteria changed, and the new Change Log entry. The amendment is complete — do not run the directory script or the Creation-Mode steps.

If the prompt referenced a spec that does not exist (no matching `functional-spec.md`), do not fabricate one in Update Mode — tell the user, and offer to create it fresh via Creation Mode instead.

---

The steps below are **Creation Mode** — reached when Mode Detection finds no existing spec to amend.

### Step 1: Determine the Specification Topic

Your first goal is to determine the **topic** - the single, specific feature or capability that this specification will define. To determine the topic, follow these steps:
Expand Down
4 changes: 2 additions & 2 deletions commands/verify.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ Verify a specification's implementation against its acceptance criteria. For eac
- **`/awos:verify` is a look-and-feel + spec-freshness check, not a test runner.** Generated test suites belong in the Feature Testing & Regression slice produced by `/awos:tasks` and executed by `/awos:implement`. This command verifies that the implementation matches the spec's acceptance criteria from a user's perspective and that downstream documentation has not drifted.
- **Step 3 still requires evidence.** Do not mark an acceptance criterion `[x]` without confirming it — either by driving the UI/API yourself or by getting an explicit user confirmation via `AskUserQuestion`. "The user can verify this manually" without a check is not acceptable.
- **For non-visual criteria, pick the tool by fit.** APIs, data, CLI, and business-logic criteria can be confirmed with whatever proves them fastest and most reliably — `curl`, shell, log/database inspection, a browser-automation tool, or direct user confirmation. Do not assume any specific tool is available; if none work, fall back to `AskUserQuestion`. The one exception is look-and-feel, covered next.
- **Look-and-feel means real rendering, with screenshots kept as evidence.** For any acceptance criterion describing something a user sees or does in a UI — a rendered page, a control, a state change, a redirect — in-process or component tests are **not** sufficient: they confirm logic, not look-and-feel. Start the app if it isn't running, drive the actual UI through whatever browser-automation tool the project ships (Playwright MCP/CLI, Cypress, the chrome MCP, etc.), and capture screenshots of the states the criteria describe. Save them to `docs/screenshots/` — the same evidence folder the `testing-expert` agent writes E2E captures to — naming each file so it sorts by spec: `docs/screenshots/<spec-directory>-<short-state>.png` (e.g. `docs/screenshots/011-scheduled-tasks-amber-pill.png`). The browser tool creates the folder on first write; do not edit `.gitignore` — git-ignoring `docs/screenshots/` is a one-time project setup, not part of verification. Reference the saved paths in the report — they are what the human reviews.
- **Look-and-feel means real rendering, with screenshots kept as evidence.** For any acceptance criterion describing something a user sees or does in a UI — a rendered page, a control, a state change, a redirect — in-process or component tests are **not** sufficient: they confirm logic, not look-and-feel. Start the app if it isn't running, drive the actual UI through whatever browser-automation tool the project ships (Playwright MCP/CLI, Cypress, the chrome MCP, etc.), and capture screenshots of the states the criteria describe. **Running the app is your job, not the user's.** A shared resource the app normally binds — a port already held by a running service, a single database, a device — is not a reason to hand a `run` command to the user: reclaim it (stop the service, use an alternate port, spin a throwaway instance) or drive the project's own deploy/run step yourself, then verify against it. Only after every agent-driven way to render the behavior is genuinely unavailable does manual confirmation apply. Save them to `docs/screenshots/` — the same evidence folder the `testing-expert` agent writes E2E captures to — naming each file so it sorts by spec: `docs/screenshots/<spec-directory>-<short-state>.png` (e.g. `docs/screenshots/011-scheduled-tasks-amber-pill.png`). The browser tool creates the folder on first write; do not edit `.gitignore` — git-ignoring `docs/screenshots/` is a one-time project setup, not part of verification. Reference the saved paths in the report — they are what the human reviews.
- **Honour the `skip-tests` mode.** If the spec's `tasks.md` carries the `<!-- skip-tests: true -->` marker (set by `/awos:tasks` when the user opted out of test generation), perform Step 3 as a look-and-feel walk-through only — do not run or generate test suites, and treat missing test tooling as expected rather than as a verification failure. Visual criteria are still verified by rendering the UI and capturing screenshots; skip-tests suppresses test suites, not look-and-feel.
- **Session length does not excuse skipping.** Even in long sessions, Step 3 must run.

Expand Down Expand Up @@ -65,7 +65,7 @@ For each acceptance criterion in `functional-spec.md`:
- **Visual / UI criterion** (anything a user sees or does in a browser): start the app if needed (per `technical-considerations.md`), drive the running UI through the project's browser-automation tool, observe the actual rendered behavior, and save a screenshot of the verified state to `docs/screenshots/<spec-directory>-<short-state>.png` (the shared screenshot folder; see CONSTRAINTS). A passing component/test-client test does not satisfy a visual criterion — render it for real.
2. **If met:** mark it `[x]` and record the evidence — the command output for non-visual criteria, or the screenshot path for visual ones (e.g. "verified via curl /api/health", "see docs/screenshots/011-scheduled-tasks-amber-pill.png").
3. **If NOT met:** report which criterion failed and what's missing, then stop.
4. **If no tool can verify the criterion in this environment:** ask the user via `AskUserQuestion` — "I can't verify [criterion] automatically because [reason]. Verify manually and confirm, or stop here?" Options: "I verified manually — mark as done" / "Stop — I'll fix the tooling first". Never mark criteria `[x]` without evidence from one of the paths above.
4. **If no tool can verify the criterion in this environment:** ask the user via `AskUserQuestion` — "I can't verify [criterion] automatically because [reason]. Verify manually and confirm, or stop here?" Options: "I verified manually — mark as done" / "Stop — I'll fix the tooling first". This is a last resort: it means no agent-driven render path exists (no browser tooling, the app genuinely cannot be started here) — not that the normal run path is temporarily reserved. Starting the app on an alternate port, reclaiming a shared resource, or driving the project's deploy step are all agent-driven paths; try them before deferring. Never hand the user a `run` command to execute for you, and never mark criteria `[x]` without evidence from one of the paths above.

### Step 4: Mark as Completed

Expand Down
6 changes: 3 additions & 3 deletions plugins/awos/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
{
"name": "awos",
"version": "2.1.0",
"description": "AWOS code quality audit framework",
"version": "2.3.0",
"description": "Extends AWOS core with AI-powered delivery automation: audits a project's AI-readiness across quality dimensions (/awos:ai-readiness-audit) and sets up an end-to-end delivery flow — feature and optional bug-fix commands — tailored to the team (/awos:flow).",
"author": {
"name": "Provectus"
},
"license": "MIT",
"keywords": ["audit", "code-quality", "dimensions"]
"keywords": ["audit", "code-quality", "dimensions", "delivery-flow", "bug-fix"]
}
19 changes: 18 additions & 1 deletion plugins/awos/README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
# AWOS Audit Plugin
# AWOS Plugin

Two AI-powered capabilities for AWOS projects: an extensible AI-readiness audit (`/awos:ai-readiness-audit`) and a delivery-flow generator (`/awos:flow`). The audit is documented below; the delivery flow has its own section near the end.

Extensible, dimension-based code quality audit for Claude Code. Each dimension runs in its own context window for thorough analysis. Run `/awos:ai-readiness-audit` and get a scored report with actionable recommendations.

Expand Down Expand Up @@ -86,12 +88,27 @@ context/audits/YYYY-MM-DD/

When a previous audit exists, the report includes score deltas per dimension.

## Delivery Flow

`/awos:flow` interviews the team and investigates the repo, then writes a decision record (`context/product/delivery-flow.md`) and generates one or two project-specific commands in `.claude/commands/`:

- **`/implement-feature <feature>`** — drives one feature end to end through the AWOS chain (`spec → tech → tasks → implement → verify`) and the team's delivery steps (branch, review, change request, merge, deploy, close).
- **`/fix-bug <bug>`** — generated only when the team opts in. The lighter sibling: its middle is `diagnose → fix → scoped re-verify → targeted spec amendment` instead of the full feature pipeline. It classifies each bug as a _conformance_ fix (code violated a correct spec → fix + regression test) or a _divergence_ (the spec was wrong or behavior intentionally changed → also amend the owning `functional-spec.md` via `/awos:spec` in update mode), so a behavior-changing fix never silently drifts the spec.

Both commands are user-owned and generated outside `.claude/commands/awos/`, so framework updates never touch them; re-running `/awos:flow` reconciles each stage and preserves manual edits. The generated commands are derived from the same flow-agnostic decision record, so they share the team's git flow, review gates, merge policy, and notifications.

## Plugin Structure

```
plugins/awos/
├── .claude-plugin/
│ └── plugin.json # plugin manifest
├── commands/
│ └── flow.md # /awos:flow — delivery-flow generator
├── templates/
│ ├── delivery-flow-template.md # decision-record scaffold
│ ├── implement-feature-template.md # generated feature command
│ └── fix-bug-template.md # generated bug-fix command
├── skills/
│ └── ai-readiness-audit/
│ ├── SKILL.md # orchestrator skill
Expand Down
Loading
Loading