@fernado03/zoo-flow 0.5.2 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +105 -90
- package/bin/zoo-flow.js +405 -56
- package/docs/architecture.md +380 -0
- package/docs/bloat-control.md +49 -0
- package/docs/command-design.md +38 -0
- package/docs/command-flow.md +133 -0
- package/docs/comparison.md +86 -0
- package/docs/context-packs.md +35 -0
- package/docs/dogfood/01-small-library.md +28 -0
- package/docs/dogfood/02-web-app.md +29 -0
- package/docs/dogfood/03-mixed-monorepo.md +29 -0
- package/docs/mode-rules.md +86 -0
- package/docs/npm-publishing.md +79 -0
- package/docs/out-of-scope/mainstream-issue-trackers-only.md +25 -0
- package/docs/out-of-scope/question-limits.md +18 -0
- package/docs/out-of-scope/setup-skill-verify-mode.md +15 -0
- package/docs/overview.md +61 -0
- package/docs/philosophy.md +73 -0
- package/docs/quality-scorecard.md +23 -0
- package/docs/skill-maintenance.md +32 -0
- package/docs/skills-index.md +61 -0
- package/docs/team-mode.md +46 -0
- package/docs/token-budget.md +22 -0
- package/docs/troubleshooting.md +288 -0
- package/examples/demo-transcripts/01-small-tweak.md +37 -0
- package/examples/demo-transcripts/02-unknown-bug-fix.md +37 -0
- package/examples/demo-transcripts/03-new-feature.md +37 -0
- package/examples/demo-transcripts/04-refactor.md +37 -0
- package/examples/demo-transcripts/05-review-and-verify.md +37 -0
- package/examples/feature-flow.md +117 -0
- package/examples/fix-flow.md +139 -0
- package/package.json +16 -5
- package/quality/scorecard.json +88 -0
- package/quality/token-budget.exceptions.json +13 -0
- package/scripts/bundle.ps1 +135 -0
- package/scripts/check-golden-transcripts.js +69 -0
- package/scripts/check-package-links.js +72 -0
- package/scripts/check-package-manifest.js +70 -0
- package/scripts/eval-routing.js +149 -0
- package/scripts/score-quality.js +292 -0
- package/scripts/test-doctor.js +107 -0
- package/scripts/test-project-shapes.js +99 -0
- package/scripts/token-budget.js +105 -0
- package/templates/full/.roo/commands/caveman.md +1 -1
- package/templates/full/.roo/commands/diagnose.md +2 -1
- package/templates/full/.roo/commands/explore.md +13 -13
- package/templates/full/.roo/commands/feature.md +1 -1
- package/templates/full/.roo/commands/fix.md +1 -1
- package/templates/full/.roo/commands/grill-me.md +2 -1
- package/templates/full/.roo/commands/grill-with-docs.md +2 -1
- package/templates/full/.roo/commands/handoff.md +2 -1
- package/templates/full/.roo/commands/improve-codebase-architecture.md +2 -1
- package/templates/full/.roo/commands/prototype.md +1 -1
- package/templates/full/.roo/commands/refactor.md +1 -1
- package/templates/full/.roo/commands/review.md +11 -0
- package/templates/full/.roo/commands/scaffold-context.md +13 -13
- package/templates/full/.roo/commands/setup-matt-pocock-skills.md +8 -8
- package/templates/full/.roo/commands/tdd.md +1 -1
- package/templates/full/.roo/commands/to-issues.md +2 -1
- package/templates/full/.roo/commands/to-prd.md +2 -1
- package/templates/full/.roo/commands/triage.md +1 -1
- package/templates/full/.roo/commands/tweak.md +1 -1
- package/templates/full/.roo/commands/update-docs.md +22 -22
- package/templates/full/.roo/commands/verify.md +11 -0
- package/templates/full/.roo/commands/write-a-skill.md +2 -1
- package/templates/full/.roo/commands/zoom-out.md +2 -1
- package/templates/full/.roo/rules/01-command-protocol.md +1 -1
- package/templates/full/.roo/rules/04-context-economy.md +27 -29
- package/templates/full/.roo/rules-code-tweaker/01-completion.md +12 -8
- package/templates/full/.roo/rules-custom-orchestrator/00-routing.md +77 -63
- package/templates/full/.roo/rules-custom-orchestrator/01-delegation-message.md +59 -55
- package/templates/full/.roo/rules-system-architect/02-completion.md +6 -2
- package/templates/full/.roo/skills/engineering/README.md +2 -0
- package/templates/full/.roo/skills/engineering/commit-and-document/SKILL.md +1 -2
- package/templates/full/.roo/skills/engineering/grill-with-docs/ADR-FORMAT.md +1 -1
- package/templates/full/.roo/skills/engineering/grill-with-docs/CONTEXT-FORMAT.md +36 -61
- package/templates/full/.roo/skills/engineering/grill-with-docs/SKILL.md +1 -1
- package/templates/full/.roo/skills/engineering/improve-codebase-architecture/SKILL.md +3 -3
- package/templates/full/.roo/skills/engineering/prototype/SKILL.md +37 -37
- package/templates/full/.roo/skills/engineering/review/SKILL.md +111 -0
- package/templates/full/.roo/skills/engineering/scaffold-context/SKILL.md +218 -152
- package/templates/full/.roo/skills/engineering/scaffold-context/templates/writing-patterns.md +17 -0
- package/templates/full/.roo/skills/engineering/setup-matt-pocock-skills/SKILL.md +3 -3
- package/templates/full/.roo/skills/engineering/setup-matt-pocock-skills/domain.md +2 -3
- package/templates/full/.roo/skills/engineering/tdd/SKILL.md +2 -0
- package/templates/full/.roo/skills/engineering/to-prd/SKILL.md +57 -57
- package/templates/full/.roo/skills/engineering/tweak/SKILL.md +2 -1
- package/templates/full/.roo/skills/engineering/verify/SKILL.md +80 -0
- package/templates/full/.roo/skills/in-progress/README.md +0 -1
- package/templates/full/.roomodes +47 -47
- package/templates/full/.zoo-flow/CONTEXT.md +8 -8
- package/templates/full/.zoo-flow/START_HERE.md +61 -61
- package/templates/full/.zoo-flow/docs/adr/0001-record-architecture-decisions.md +22 -22
- package/templates/full/.zoo-flow/evals/no-regression-checklist.md +26 -24
- package/templates/full/.zoo-flow/evals/routing-cases.jsonl +20 -0
- package/templates/full/.zoo-flow/evals/routing-cases.md +213 -189
- package/templates/full/.zoo-flow/project-profile.json +24 -0
- package/tests/fixtures/bad-routing-cases/bad-json.jsonl +1 -0
- package/tests/fixtures/bad-routing-cases/bad-mode.jsonl +1 -0
- package/tests/fixtures/bad-routing-cases/missing-command.jsonl +1 -0
- package/tests/fixtures/doctor/bad-built-in-delegation/fixture.json +1 -0
- package/tests/fixtures/doctor/bad-mode-slug/fixture.json +1 -0
- package/tests/fixtures/doctor/bad-skill-wrapper/fixture.json +1 -0
- package/tests/fixtures/doctor/bad-zoo-path/fixture.json +1 -0
- package/tests/fixtures/doctor/helper-missing-mode/fixture.json +1 -0
- package/tests/fixtures/doctor/helper-not-permitted/fixture.json +1 -0
- package/tests/fixtures/doctor/manual-good-template/fixture.json +1 -0
- package/tests/fixtures/doctor/missing-command/fixture.json +1 -0
- package/tests/fixtures/doctor/missing-roomodes/fixture.json +1 -0
- package/tests/fixtures/doctor/missing-skill/fixture.json +1 -0
- package/tests/fixtures/project-shapes/cli-tool/cmd/root.go +1 -0
- package/tests/fixtures/project-shapes/cli-tool/fixture.json +1 -0
- package/tests/fixtures/project-shapes/cli-tool/package.json +1 -0
- package/tests/fixtures/project-shapes/data-pipeline/fixture.json +1 -0
- package/tests/fixtures/project-shapes/data-pipeline/pipelines/invoices.py +1 -0
- package/tests/fixtures/project-shapes/data-pipeline/pyproject.toml +2 -0
- package/tests/fixtures/project-shapes/library/fixture.json +1 -0
- package/tests/fixtures/project-shapes/library/package.json +1 -0
- package/tests/fixtures/project-shapes/library/src/index.ts +1 -0
- package/tests/fixtures/project-shapes/monorepo/fixture.json +1 -0
- package/tests/fixtures/project-shapes/monorepo/package.json +1 -0
- package/tests/fixtures/project-shapes/monorepo/packages/core/index.ts +1 -0
- package/tests/fixtures/project-shapes/monorepo/packages/web/index.ts +1 -0
- package/tests/fixtures/project-shapes/serverless/fixture.json +1 -0
- package/tests/fixtures/project-shapes/serverless/functions/webhook.ts +1 -0
- package/tests/fixtures/project-shapes/serverless/package.json +1 -0
- package/tests/fixtures/project-shapes/web-app/app/routes/index.tsx +1 -0
- package/tests/fixtures/project-shapes/web-app/fixture.json +1 -0
- package/tests/fixtures/project-shapes/web-app/package.json +1 -0
- package/tests/golden-transcripts/01-small-tweak-golden.md +21 -0
- package/tests/golden-transcripts/02-diagnosis-golden.md +26 -0
- package/tests/golden-transcripts/03-verification-golden.md +24 -0
- package/tests/golden-transcripts/04-review-golden.md +26 -0
- package/tests/golden-transcripts/05-feature-planning-golden.md +23 -0
- package/templates/full/.roo/skills/in-progress/review/SKILL.md +0 -39
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Context Packs
|
|
2
|
+
|
|
3
|
+
Context packs are optional reusable groups of documentation, rules,
|
|
4
|
+
commands, and skills that can be layered on top of Zoo Flow for
|
|
5
|
+
specific project needs.
|
|
6
|
+
|
|
7
|
+
## When to use
|
|
8
|
+
|
|
9
|
+
- A project needs specialized workflow patterns (e.g., writing
|
|
10
|
+
workflows, database migrations, CI/CD).
|
|
11
|
+
- A team wants to share a common set of conventions across repos.
|
|
12
|
+
- A user wants optional extras without modifying core Zoo Flow files.
|
|
13
|
+
|
|
14
|
+
## How it works
|
|
15
|
+
|
|
16
|
+
Context packs live under `.roo/templates/context-packs/`. Each pack is a
|
|
17
|
+
directory with its own `manifest.json` declaring what it adds.
|
|
18
|
+
|
|
19
|
+
The `/scaffold-context` command detects candidate packs based on project
|
|
20
|
+
shape and offers them as optional additions.
|
|
21
|
+
|
|
22
|
+
## Built-in candidate packs
|
|
23
|
+
|
|
24
|
+
These are templates evaluated by `/scaffold-context` but never applied
|
|
25
|
+
without user confirmation:
|
|
26
|
+
|
|
27
|
+
- **Writing patterns** — shapes, beats, fragments for content projects
|
|
28
|
+
- **ADR starter** — minimal ADR template and convention
|
|
29
|
+
- **Setup docs** — setup conventions beyond the boiletplate
|
|
30
|
+
|
|
31
|
+
## Quality gate
|
|
32
|
+
|
|
33
|
+
Context packs must follow the same quality rules as core Zoo Flow:
|
|
34
|
+
canonical `Skill:` markers, correct mode declarations, no built-in
|
|
35
|
+
delegation. They are validated by `doctor`.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Dogfood Report: Small Library
|
|
2
|
+
|
|
3
|
+
**Date:** YYYY-MM-DD
|
|
4
|
+
**Project shape:** library (npm package, ~2K LOC, 10 exports)
|
|
5
|
+
**Zoo Flow version:** 0.7.0
|
|
6
|
+
|
|
7
|
+
## Commands tested
|
|
8
|
+
|
|
9
|
+
- `/scaffold-context` — should detect library shape, propose 5-8 domain terms, 0-1 ADRs
|
|
10
|
+
- `/verify` — should detect package.json, run npm test
|
|
11
|
+
- `/commit-and-document` — should stage, commit, write journal entry
|
|
12
|
+
|
|
13
|
+
## What Zoo Flow routed correctly
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
## What it over-read
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
## What it tried to create unnecessarily
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
## Token budget impact
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
## Fixes made to Zoo Flow
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
## Remaining risk
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Dogfood Report: Web App
|
|
2
|
+
|
|
3
|
+
**Date:** YYYY-MM-DD
|
|
4
|
+
**Project shape:** web app (Next.js, auth, payments, ~20K LOC)
|
|
5
|
+
**Zoo Flow version:** 0.7.0
|
|
6
|
+
|
|
7
|
+
## Commands tested
|
|
8
|
+
|
|
9
|
+
- `/feature` — new payment flow with phase gates
|
|
10
|
+
- `/fix` — checkout crash diagnosis
|
|
11
|
+
- `/review` — branch review with Security/Risk axis
|
|
12
|
+
- `/verify` — targeted test run
|
|
13
|
+
|
|
14
|
+
## What Zoo Flow routed correctly
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
## What it over-read
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
## What it tried to create unnecessarily
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
## Token budget impact
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
## Fixes made to Zoo Flow
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
## Remaining risk
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Dogfood Report: Mixed Monorepo
|
|
2
|
+
|
|
3
|
+
**Date:** YYYY-MM-DD
|
|
4
|
+
**Project shape:** monorepo (apps/web, services/api, workers/billing, packages/core)
|
|
5
|
+
**Zoo Flow version:** 0.7.0
|
|
6
|
+
|
|
7
|
+
## Commands tested
|
|
8
|
+
|
|
9
|
+
- `/scaffold-context` — should detect monorepo shape, propose MONOREPO_MAP.md as recommended
|
|
10
|
+
- `/explore` — should map unfamiliar sub-package
|
|
11
|
+
- `/refactor` — should plan cross-package design change
|
|
12
|
+
- `/tweak` — should handle localized change in one package
|
|
13
|
+
|
|
14
|
+
## What Zoo Flow routed correctly
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
## What it over-read
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
## What it tried to create unnecessarily
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
## Token budget impact
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
## Fixes made to Zoo Flow
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
## Remaining risk
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# Mode-specific rules
|
|
2
|
+
|
|
3
|
+
Zoo Flow uses three rule scopes, each loaded by Zoo Code automatically:
|
|
4
|
+
|
|
5
|
+
- `.roo/rules/` — loaded for **every** mode, every turn.
|
|
6
|
+
- `.roo/rules-{modeSlug}/` — loaded **only** when that mode is active.
|
|
7
|
+
- `.roo/skills/` — **on-demand**, loaded by slash commands. Never auto-loaded.
|
|
8
|
+
|
|
9
|
+
> Zoo Flow uses the preferred `.roo/rules-{modeSlug}/` directory form
|
|
10
|
+
> only. Legacy single-file fallbacks such as `.roorules-{modeSlug}` and
|
|
11
|
+
> `.clinerules-{modeSlug}` are not used by this template.
|
|
12
|
+
|
|
13
|
+
Mode-specific behavior lives in dedicated folders under `.roo/`:
|
|
14
|
+
|
|
15
|
+
- `.roo/rules-custom-orchestrator/` — routing rules and the delegation
|
|
16
|
+
message contract for the orchestrator.
|
|
17
|
+
- `.roo/rules-system-architect/` — scope, feature-prototype handoff, and
|
|
18
|
+
completion rules for the architect.
|
|
19
|
+
- `.roo/rules-code-tweaker/` — scope and completion rules for the
|
|
20
|
+
tweaker, including the git hard stop.
|
|
21
|
+
|
|
22
|
+
Files inside these folders are short on purpose. They are concatenated
|
|
23
|
+
into the model's context every turn the matching mode is active, so each
|
|
24
|
+
extra paragraph costs tokens for the entire session.
|
|
25
|
+
|
|
26
|
+
## What belongs in a mode rules folder
|
|
27
|
+
|
|
28
|
+
- Standing instructions specific to that mode's job (e.g. "the architect
|
|
29
|
+
cannot edit application source").
|
|
30
|
+
- Short hard stops (e.g. "halt for explicit user approval before
|
|
31
|
+
publishing issues").
|
|
32
|
+
- Pointers to global rules the mode must follow.
|
|
33
|
+
|
|
34
|
+
## What does NOT belong here
|
|
35
|
+
|
|
36
|
+
- **On-demand skills.** Those live under `.roo/skills/` and are loaded
|
|
37
|
+
explicitly by slash commands.
|
|
38
|
+
- **Workspace-wide always-on rules** that apply to every mode. Those
|
|
39
|
+
stay in `.roo/rules/`.
|
|
40
|
+
- **Long policy or knowledge files.** If a policy is long enough to need
|
|
41
|
+
multiple paragraphs of explanation, write it under `docs/` and
|
|
42
|
+
reference it from the rule. The mode rule should be a short reminder,
|
|
43
|
+
not a full essay.
|
|
44
|
+
- **Duplicates of the global command protocol or path safety.** Those
|
|
45
|
+
live in `.roo/rules/01-command-protocol.md` and
|
|
46
|
+
`.roo/rules/00-paths.md` respectively.
|
|
47
|
+
|
|
48
|
+
## Why `.roomodes` is intentionally minimal
|
|
49
|
+
|
|
50
|
+
Each `customInstructions` block in `.roomodes` is loaded with the mode
|
|
51
|
+
metadata. Putting detailed behavior there duplicates what already lives
|
|
52
|
+
in `.roo/rules-{modeSlug}/`, costs tokens twice, and creates two places
|
|
53
|
+
to keep in sync.
|
|
54
|
+
|
|
55
|
+
The current `.roomodes` keeps four things per mode:
|
|
56
|
+
|
|
57
|
+
1. `slug`, `name`, `roleDefinition`, `whenToUse`, `description`,
|
|
58
|
+
`groups` — these can't move.
|
|
59
|
+
2. A short `customInstructions` that:
|
|
60
|
+
- points at the matching `.roo/rules-{modeSlug}/` folder,
|
|
61
|
+
- lists permitted routed commands and permitted direct helper commands
|
|
62
|
+
(or the routing matrix, for the orchestrator),
|
|
63
|
+
- references the global rules it calls out directly (`00-paths.md`,
|
|
64
|
+
`01-command-protocol.md`, `03-manual-reply-protocol.md`). Other
|
|
65
|
+
global rules, such as `02-three-failure-rule.md` and
|
|
66
|
+
`04-context-economy.md`, are loaded automatically from
|
|
67
|
+
`.roo/rules/`.
|
|
68
|
+
- says what to do if an unsupported command is assigned.
|
|
69
|
+
|
|
70
|
+
Documented helper commands must have `mode:` frontmatter unless they are
|
|
71
|
+
explicitly modeless utilities such as `/caveman`.
|
|
72
|
+
|
|
73
|
+
Everything else lives in the mode rules folder.
|
|
74
|
+
|
|
75
|
+
## Related directories
|
|
76
|
+
|
|
77
|
+
- [`.roo/rules/`](../templates/full/.roo/rules/) — always-on rules for **all** modes.
|
|
78
|
+
- [`.roo/skills/`](../templates/full/.roo/skills/) — on-demand skills, invoked by slash commands.
|
|
79
|
+
- [`.roo/commands/`](../templates/full/.roo/commands/) — slash command definitions
|
|
80
|
+
(e.g. `/tweak`, `/fix`).
|
|
81
|
+
- [`.roo/rules-custom-orchestrator/`](../templates/full/.roo/rules-custom-orchestrator/) —
|
|
82
|
+
router-only rules.
|
|
83
|
+
- [`.roo/rules-system-architect/`](../templates/full/.roo/rules-system-architect/) —
|
|
84
|
+
architect rules.
|
|
85
|
+
- [`.roo/rules-code-tweaker/`](../templates/full/.roo/rules-code-tweaker/) —
|
|
86
|
+
tweaker rules.
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# npm Publishing
|
|
2
|
+
|
|
3
|
+
Zoo Flow is published as a CLI installer.
|
|
4
|
+
|
|
5
|
+
## Package name
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
@fernado03/zoo-flow
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Local validation
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npm run release:check
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Publish
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npm login
|
|
21
|
+
npm publish --access public
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Test install after publish
|
|
25
|
+
|
|
26
|
+
From a separate test project:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
npx @fernado03/zoo-flow@latest init
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
If the project already has `.roomodes` or `.roo/`, test:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
npx @fernado03/zoo-flow@latest init --force
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Test update after publish
|
|
39
|
+
|
|
40
|
+
From a temporary directory:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
tmpdir="$(mktemp -d)"
|
|
44
|
+
cd "$tmpdir"
|
|
45
|
+
|
|
46
|
+
npx @fernado03/zoo-flow@latest init
|
|
47
|
+
npx @fernado03/zoo-flow@latest update --dry-run
|
|
48
|
+
npx @fernado03/zoo-flow@latest update
|
|
49
|
+
|
|
50
|
+
test -f .roomodes
|
|
51
|
+
test -d .roo
|
|
52
|
+
test -d .zoo-flow-backup
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## What ships in the package
|
|
56
|
+
|
|
57
|
+
The `files` field in `package.json` controls what npm publishes:
|
|
58
|
+
|
|
59
|
+
- `bin/` — the CLI entry point
|
|
60
|
+
- `scripts/` — validation and release checks
|
|
61
|
+
- `templates/` — the runtime template (`.roomodes` and `.roo/`)
|
|
62
|
+
- `docs/` — product documentation linked from the README
|
|
63
|
+
- `examples/` — worked examples linked from the README
|
|
64
|
+
- `README.md`
|
|
65
|
+
- `LICENSE`
|
|
66
|
+
|
|
67
|
+
`node_modules/`, `.git/`, `.scratch/`, backups, and generated tarballs are not shipped.
|
|
68
|
+
|
|
69
|
+
## Versioning
|
|
70
|
+
|
|
71
|
+
Bump `version` in `package.json` before each publish, following
|
|
72
|
+
[Semantic Versioning](https://semver.org/):
|
|
73
|
+
|
|
74
|
+
- patch: bug fixes in the CLI or template content
|
|
75
|
+
- minor: new commands, new modes, new skills
|
|
76
|
+
- major: breaking changes to mode slugs, command names, or routing
|
|
77
|
+
|
|
78
|
+
Update `CHANGELOG.md` under `## [Unreleased]` with the change, then
|
|
79
|
+
move it under a new versioned section when you publish.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Issue tracker integrations are limited to mainstream tools
|
|
2
|
+
|
|
3
|
+
`setup-matt-pocock-skills` only offers first-class support for **mainstream** issue trackers. Requests to add support for niche, new, or single-vendor experimental trackers are out of scope.
|
|
4
|
+
|
|
5
|
+
## Why this is out of scope
|
|
6
|
+
|
|
7
|
+
Every issue-tracker backend hard-codes a CLI shape into the skills (commands, flags, output parsing). Each new backend is permanent maintenance surface — it has to keep working as the tool's CLI evolves, and it has to keep being tested against `/to-prd`, `/to-issues`, `/triage`, and friends. That cost is only worth paying for trackers a meaningful fraction of users actually have.
|
|
8
|
+
|
|
9
|
+
"Mainstream" is a judgment call, not a numeric bar:
|
|
10
|
+
|
|
11
|
+
- GitHub, GitLab, and Backlog.md are the kind of tools we'd consider mainstream — broadly known, widely used, well past the experimental phase.
|
|
12
|
+
- A brand-new agent-focused tool with a few hundred GitHub stars is not, no matter how interesting the design.
|
|
13
|
+
|
|
14
|
+
Stars, age, and download counts are useful signals when making the call but none of them is the rule. The rule is: would a typical engineer recognise this tool and have plausibly chosen it for their team?
|
|
15
|
+
|
|
16
|
+
The escape hatches for non-mainstream trackers already exist:
|
|
17
|
+
|
|
18
|
+
- `local markdown` for lightweight in-repo tracking.
|
|
19
|
+
- `other/custom` for users who want to wire something up themselves.
|
|
20
|
+
|
|
21
|
+
Neither requires the core skills to know about the specific tool.
|
|
22
|
+
|
|
23
|
+
## Prior requests
|
|
24
|
+
|
|
25
|
+
- #99 — "Add dex as an issue tracker backend" (dex was ~3 months old and ~300 stars at the time of the request)
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Hard limits on the number of questions during grilling
|
|
2
|
+
|
|
3
|
+
The `/grill-me` skill (and grilling sessions inside other skills) does not enforce a maximum number of questions. Requests to add a configurable cap or hard ceiling are out of scope.
|
|
4
|
+
|
|
5
|
+
## Why this is out of scope
|
|
6
|
+
|
|
7
|
+
Grilling is intentionally open-ended. The point is to keep digging until each branch of the decision tree is resolved — some plans need three questions, some need fifty. A fixed cap would either cut off useful exploration on hard problems or feel arbitrary on easy ones.
|
|
8
|
+
|
|
9
|
+
If a session feels too long, the right escape hatches already exist:
|
|
10
|
+
|
|
11
|
+
- The user can stop the session at any time and accept the current state of the plan.
|
|
12
|
+
- The user can tell the model to wrap up, summarise, and move on — natural-language steering is the intended control surface, not a numeric limit.
|
|
13
|
+
|
|
14
|
+
Adding a hard cap would also conflate two different failure modes: a model that asks too many questions because the plan is genuinely under-specified (working as intended) vs. a model that asks redundant or low-value questions (a prompt-quality issue, not a quantity issue). The fix for the latter belongs in the skill prompt, not in a counter.
|
|
15
|
+
|
|
16
|
+
## Prior requests
|
|
17
|
+
|
|
18
|
+
- #44 — "Codex just asked me 200 questions"
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Verify/Check Mode for `setup-matt-pocock-skills`
|
|
2
|
+
|
|
3
|
+
This project will not add a dedicated verify/check mode (or a separate verify skill) for `setup-matt-pocock-skills`.
|
|
4
|
+
|
|
5
|
+
## Why this is out of scope
|
|
6
|
+
|
|
7
|
+
A second skill — or a `--verify` flag — for checking whether `docs/agents/*.md` artifacts still match the seed-template schema would duplicate work the existing setup skill already handles in conversation.
|
|
8
|
+
|
|
9
|
+
The intended workflow is: **run `/setup-matt-pocock-skills` and tell it to verify your current setup.** The skill is prompt-driven, so the maintainer can scope it to a verification pass ("don't rewrite anything, just check my existing files against the current seed templates and report drift") without needing a separate code path. Adding a flag or a sibling skill would split the surface area of a feature that's already expressible through the natural-language entry point.
|
|
10
|
+
|
|
11
|
+
Keeping configuration management to a single skill also avoids the maintenance cost of two skills drifting from each other when seed templates evolve.
|
|
12
|
+
|
|
13
|
+
## Prior requests
|
|
14
|
+
|
|
15
|
+
- #106 — Feature request: verify/check mode for setup-matt-pocock-skills
|
package/docs/overview.md
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Overview
|
|
2
|
+
|
|
3
|
+
Zoo Flow is a small, opinionated template that turns
|
|
4
|
+
[Zoo Code](https://docs.zoocode.dev/) into a predictable mode +
|
|
5
|
+
command + skill orchestrator. It defines three modes, a fixed routing
|
|
6
|
+
matrix, a command protocol, and path-safety rules. Drop it into a
|
|
7
|
+
workspace and your AI assistant stops freelancing.
|
|
8
|
+
|
|
9
|
+
## Why this exists
|
|
10
|
+
|
|
11
|
+
Out of the box, AI coding assistants tend to skip planning when you
|
|
12
|
+
want planning, plan when you want a tweak, and quietly invent file
|
|
13
|
+
paths that do not exist. Adding a pile of skills makes it worse.
|
|
14
|
+
|
|
15
|
+
Zoo Flow takes a different bet:
|
|
16
|
+
|
|
17
|
+
- A **router mode** chooses the workflow.
|
|
18
|
+
- An **architect mode** plans, diagnoses, and triages — and cannot
|
|
19
|
+
edit source code.
|
|
20
|
+
- A **tweaker mode** implements, runs tests, prototypes, and commits —
|
|
21
|
+
only when explicitly approved.
|
|
22
|
+
- A small set of **slash commands** acts as the public API between
|
|
23
|
+
you and the modes. Free-form requests go through the orchestrator;
|
|
24
|
+
typing a slash command jumps straight to its configured mode.
|
|
25
|
+
- A few **always-on rules** keep the path layout honest and stop
|
|
26
|
+
skill paths from drifting under `.roo/rules/`.
|
|
27
|
+
|
|
28
|
+
Everything else is optional. The skills bundled in the template are a
|
|
29
|
+
sensible starting point, not the point of the project.
|
|
30
|
+
|
|
31
|
+
## Core workflow
|
|
32
|
+
|
|
33
|
+
```mermaid
|
|
34
|
+
flowchart TD
|
|
35
|
+
User([User])
|
|
36
|
+
Orchestrator[🪃 custom-orchestrator<br/>router only]
|
|
37
|
+
Architect[🏗️ system-architect<br/>plan / diagnose / triage<br/>Markdown edits only]
|
|
38
|
+
Tweaker[⚡ code-tweaker<br/>implement / test / prototype / commit]
|
|
39
|
+
|
|
40
|
+
User -- "free-form request" --> Orchestrator
|
|
41
|
+
Orchestrator -- "proposes /command, waits" --> User
|
|
42
|
+
User -- "/tweak, /tdd, /update-docs,<br/>/commit-and-document, /prototype, /verify" --> Orchestrator
|
|
43
|
+
User -- "/fix, /feature, /refactor,<br/>/explore, /triage, /review" --> Orchestrator
|
|
44
|
+
|
|
45
|
+
Orchestrator -- "new_task" --> Tweaker
|
|
46
|
+
Orchestrator -- "new_task" --> Architect
|
|
47
|
+
|
|
48
|
+
Architect -- "switch_mode (same window)" --> Tweaker
|
|
49
|
+
Tweaker -- "switch_mode (same window)" --> Architect
|
|
50
|
+
|
|
51
|
+
Tweaker -- "attempt_completion" --> Orchestrator
|
|
52
|
+
Architect -- "attempt_completion" --> Orchestrator
|
|
53
|
+
Orchestrator -- "summarize, HALT" --> User
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
For the deeper "why", see [`philosophy.md`](philosophy.md). For the
|
|
57
|
+
component-level reference, see [`architecture.md`](architecture.md).
|
|
58
|
+
|
|
59
|
+
For non-trivial work, the normal endgame is implementation, then
|
|
60
|
+
`/verify`, then `/review`, then `/commit-and-document`. These are
|
|
61
|
+
recommendations only; Zoo Flow does not auto-run follow-up commands.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Philosophy
|
|
2
|
+
|
|
3
|
+
Zoo Flow is built around a small number of opinions. They are listed here so
|
|
4
|
+
you can decide whether the template is a good fit before you adopt it.
|
|
5
|
+
|
|
6
|
+
## 1. The router should not write code
|
|
7
|
+
|
|
8
|
+
Most failure modes in agentic coding come from a single agent trying to do
|
|
9
|
+
three jobs at once: deciding what to do, planning how to do it, and doing
|
|
10
|
+
it. Zoo Flow splits those into three modes and refuses to collapse them.
|
|
11
|
+
|
|
12
|
+
- `custom-orchestrator` decides **what** to do, by mapping a request to a
|
|
13
|
+
command from a fixed routing matrix.
|
|
14
|
+
- `system-architect` decides **how** to do it, in Markdown.
|
|
15
|
+
- `code-tweaker` does it.
|
|
16
|
+
|
|
17
|
+
The orchestrator has no `read`, `edit`, `command`, or `mcp` tool groups.
|
|
18
|
+
It cannot freelance into implementation work even if it wants to.
|
|
19
|
+
|
|
20
|
+
## 2. Slash commands are the public API
|
|
21
|
+
|
|
22
|
+
Free-form requests are fine, but the moment work starts, it goes through a
|
|
23
|
+
slash command. Commands are the only way the orchestrator delegates and
|
|
24
|
+
the only way modes know which workflow they are running.
|
|
25
|
+
|
|
26
|
+
This has two payoffs:
|
|
27
|
+
|
|
28
|
+
- A command name in chat is a checkable artifact. You can grep your history
|
|
29
|
+
for `/fix` or `/feature` and know exactly which workflow ran.
|
|
30
|
+
- Each command file is a single, readable place to change behavior. No
|
|
31
|
+
hunting through prompts.
|
|
32
|
+
|
|
33
|
+
Commands live at `templates/full/.roo/commands/{command}.md` and are loaded
|
|
34
|
+
through the protocol described in
|
|
35
|
+
[`architecture.md`](architecture.md#command-protocol).
|
|
36
|
+
|
|
37
|
+
## 3. Path safety beats cleverness
|
|
38
|
+
|
|
39
|
+
Skills always live at `templates/full/.roo/skills/{bucket}/{skill}/SKILL.md`.
|
|
40
|
+
Never under `.roo/rules/`. Never relative to the command file. Never invented
|
|
41
|
+
by the model.
|
|
42
|
+
|
|
43
|
+
This is enforced by `00-paths.md`, which ships as an always-on rule. If a
|
|
44
|
+
skill path drifts, the rule catches it. The cost is one rule file. The
|
|
45
|
+
benefit is no more `ENOENT` rabbit holes.
|
|
46
|
+
|
|
47
|
+
## 4. Same-window switches for tight loops, `new_task` for clean boundaries
|
|
48
|
+
|
|
49
|
+
There are two delegation primitives in Zoo Code:
|
|
50
|
+
|
|
51
|
+
- `switch_mode` keeps the same task window and hands the keyboard to a
|
|
52
|
+
different mode. Cheap. Good for `/fix` going architect → tweaker → architect.
|
|
53
|
+
- `new_task` opens a delegated subtask with its own window. Expensive. Good
|
|
54
|
+
for orchestrator handing real work to architect or tweaker.
|
|
55
|
+
|
|
56
|
+
Zoo Flow uses both, deliberately. The orchestrator only ever uses
|
|
57
|
+
`new_task`. Modes only ever use `switch_mode`. They never cross.
|
|
58
|
+
|
|
59
|
+
## 5. HITL hard stops are features
|
|
60
|
+
|
|
61
|
+
Several commands force a halt. `/feature` halts after sharpening, after
|
|
62
|
+
prototype, after PRD, after issues. `/fix` halts after diagnosis. The git
|
|
63
|
+
flow halts before commit. These are not friction; they are the points
|
|
64
|
+
where a human review is cheaper than a rollback.
|
|
65
|
+
|
|
66
|
+
## 6. The skill set is replaceable
|
|
67
|
+
|
|
68
|
+
The bundled skills are a starting point. You should expect to delete some,
|
|
69
|
+
add some, and rename a bucket. The control plane — modes, commands, rules —
|
|
70
|
+
is the part that should be stable.
|
|
71
|
+
|
|
72
|
+
If a skill cannot be invoked through a command, it does not belong in the
|
|
73
|
+
template.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Quality Scorecard
|
|
2
|
+
|
|
3
|
+
Zoo Flow uses a deterministic rule-based quality scorecard to gate releases. Every
|
|
4
|
+
category must score >= 9.5/10 for `release:check` to pass.
|
|
5
|
+
|
|
6
|
+
## Categories
|
|
7
|
+
|
|
8
|
+
| Category | Weight | What it measures |
|
|
9
|
+
|---|---|---|
|
|
10
|
+
| command_integrity | 20% | Every command has a correct `mode:` declaration matching the command-policy map. Required rules exist. Routing table is in sync. |
|
|
11
|
+
| skill_quality | 20% | Skills use canonical `Skill:` marker. Referenced skills exist. Skills have purpose, steps, and output format. No thin wrappers. Bucket layout. |
|
|
12
|
+
| validation_depth | 20% | Doctor validates files, skill refs, mode slugs, built-in bans, .roomodes permission, routing rows, old-doc leakage, ADR path consistency. |
|
|
13
|
+
| token_economy | 10% | Context-economy rule exists. Domain-doc read gate. Completion evidence format. Risk-based routing. |
|
|
14
|
+
| verification | 10% | Verify command + skill with evidence output and no-claim-unless-run rule. Fixture tests. Routing evals. Package-link check. |
|
|
15
|
+
| review_process | 10% | Review command + skill with standards/spec/Security-Risk axes. Severity-ordered findings. Canonical result line. |
|
|
16
|
+
| release_readiness | 10% | `release:check` runs all validation scripts. Score thresholds enforced. `npm pack --dry-run` passes. |
|
|
17
|
+
|
|
18
|
+
## How scoring works
|
|
19
|
+
|
|
20
|
+
- Each category defines specific checks (see `quality/scorecard.json`).
|
|
21
|
+
- Each check is pass/fail. Missing items reduce the category score toward 0.
|
|
22
|
+
- The weighted composite score must be >= 9.5 for `npm run release:check` to pass.
|
|
23
|
+
- Scoring is fully deterministic — no AI grading, no subjective evaluation.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Skill maintenance policy
|
|
2
|
+
|
|
3
|
+
This is repo-maintenance policy for the bundled skill set. It does not
|
|
4
|
+
need to be in the model's context on every turn, so it lives in `docs/`
|
|
5
|
+
rather than `.roo/rules/`. The runtime path-safety contract is in
|
|
6
|
+
[`templates/full/.roo/rules/00-paths.md`](../templates/full/.roo/rules/00-paths.md).
|
|
7
|
+
|
|
8
|
+
## Skill bucket layout
|
|
9
|
+
|
|
10
|
+
Skills are organized into bucket folders under `.roo/skills/`:
|
|
11
|
+
|
|
12
|
+
- `.roo/skills/engineering/` — daily code work
|
|
13
|
+
- `.roo/skills/productivity/` — daily non-code workflow tools
|
|
14
|
+
- `.roo/skills/misc/` — kept around but rarely used
|
|
15
|
+
- `.roo/skills/personal/` — tied to a maintainer's setup, not promoted
|
|
16
|
+
- `.roo/skills/in-progress/` — drafts not yet ready to ship
|
|
17
|
+
- `.roo/skills/deprecated/` — no longer used
|
|
18
|
+
|
|
19
|
+
## Promotion rules
|
|
20
|
+
|
|
21
|
+
Skills in `.roo/skills/personal/`, `.roo/skills/in-progress/`, and
|
|
22
|
+
`.roo/skills/deprecated/` must not appear in the top-level `README.md`
|
|
23
|
+
as promoted skills. They may appear in internal indexes only when
|
|
24
|
+
clearly marked as personal, in-progress, or deprecated.
|
|
25
|
+
|
|
26
|
+
Every skill in `.roo/skills/engineering/`, `.roo/skills/productivity/`,
|
|
27
|
+
or `.roo/skills/misc/` must have a reference in the top-level
|
|
28
|
+
`README.md`.
|
|
29
|
+
|
|
30
|
+
Each bucket folder has a `README.md` that lists every skill in the
|
|
31
|
+
bucket with a one-line description, with the skill name linked to its
|
|
32
|
+
`SKILL.md`.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Skills Index
|
|
2
|
+
|
|
3
|
+
This is human-facing reference documentation for Zoo Flow skills.
|
|
4
|
+
|
|
5
|
+
It is intentionally kept outside `.roo/rules/` because Zoo Code loads
|
|
6
|
+
`.roo/rules/` automatically on every turn.
|
|
7
|
+
|
|
8
|
+
Commands load skills directly from explicit `.roo/skills/.../SKILL.md`
|
|
9
|
+
paths, so this index is not required for runtime execution.
|
|
10
|
+
|
|
11
|
+
## engineering
|
|
12
|
+
|
|
13
|
+
| Skill | Path |
|
|
14
|
+
|---|---|
|
|
15
|
+
| `diagnose` | `.roo/skills/engineering/diagnose/SKILL.md` |
|
|
16
|
+
| `grill-with-docs` | `.roo/skills/engineering/grill-with-docs/SKILL.md` |
|
|
17
|
+
| `improve-codebase-architecture` | `.roo/skills/engineering/improve-codebase-architecture/SKILL.md` |
|
|
18
|
+
| `prototype` | `.roo/skills/engineering/prototype/SKILL.md` |
|
|
19
|
+
| `review` | `.roo/skills/engineering/review/SKILL.md` |
|
|
20
|
+
| `setup-matt-pocock-skills` | `.roo/skills/engineering/setup-matt-pocock-skills/SKILL.md` |
|
|
21
|
+
| `tdd` | `.roo/skills/engineering/tdd/SKILL.md` |
|
|
22
|
+
| `to-issues` | `.roo/skills/engineering/to-issues/SKILL.md` |
|
|
23
|
+
| `to-prd` | `.roo/skills/engineering/to-prd/SKILL.md` |
|
|
24
|
+
| `triage` | `.roo/skills/engineering/triage/SKILL.md` |
|
|
25
|
+
| `tweak` | `.roo/skills/engineering/tweak/SKILL.md` |
|
|
26
|
+
| `verify` | `.roo/skills/engineering/verify/SKILL.md` |
|
|
27
|
+
| `zoom-out` | `.roo/skills/engineering/zoom-out/SKILL.md` |
|
|
28
|
+
|
|
29
|
+
## productivity
|
|
30
|
+
|
|
31
|
+
| Skill | Path |
|
|
32
|
+
|---|---|
|
|
33
|
+
| `caveman` | `.roo/skills/productivity/caveman/SKILL.md` |
|
|
34
|
+
| `grill-me` | `.roo/skills/productivity/grill-me/SKILL.md` |
|
|
35
|
+
| `handoff` | `.roo/skills/productivity/handoff/SKILL.md` |
|
|
36
|
+
| `write-a-skill` | `.roo/skills/productivity/write-a-skill/SKILL.md` |
|
|
37
|
+
|
|
38
|
+
## misc
|
|
39
|
+
|
|
40
|
+
| Skill | Path |
|
|
41
|
+
|---|---|
|
|
42
|
+
| `git-guardrails-claude-code` | `.roo/skills/misc/git-guardrails-claude-code/SKILL.md` |
|
|
43
|
+
| `migrate-to-shoehorn` | `.roo/skills/misc/migrate-to-shoehorn/SKILL.md` |
|
|
44
|
+
| `scaffold-exercises` | `.roo/skills/misc/scaffold-exercises/SKILL.md` |
|
|
45
|
+
| `setup-pre-commit` | `.roo/skills/misc/setup-pre-commit/SKILL.md` |
|
|
46
|
+
|
|
47
|
+
## personal _(not promoted)_
|
|
48
|
+
|
|
49
|
+
| Skill | Path |
|
|
50
|
+
|---|---|
|
|
51
|
+
| `edit-article` | `.roo/skills/personal/edit-article/SKILL.md` |
|
|
52
|
+
| `obsidian-vault` | `.roo/skills/personal/obsidian-vault/SKILL.md` |
|
|
53
|
+
|
|
54
|
+
## in-progress _(drafts)_
|
|
55
|
+
|
|
56
|
+
| Skill | Path |
|
|
57
|
+
|---|---|
|
|
58
|
+
| `teach` | `.roo/skills/in-progress/teach/SKILL.md` |
|
|
59
|
+
| `writing-beats` | `.roo/skills/in-progress/writing-beats/SKILL.md` |
|
|
60
|
+
| `writing-fragments` | `.roo/skills/in-progress/writing-fragments/SKILL.md` |
|
|
61
|
+
| `writing-shape` | `.roo/skills/in-progress/writing-shape/SKILL.md` |
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Team Mode
|
|
2
|
+
|
|
3
|
+
Zoo Flow separates local agent runtime config from shared project knowledge.
|
|
4
|
+
|
|
5
|
+
## Local/private
|
|
6
|
+
|
|
7
|
+
Usually gitignored:
|
|
8
|
+
|
|
9
|
+
- `.roo/`
|
|
10
|
+
- `.roomodes`
|
|
11
|
+
- `.zoo-flow/`
|
|
12
|
+
- `.scratch/`
|
|
13
|
+
- `docs/journal/`
|
|
14
|
+
|
|
15
|
+
These files are local because different users may have different Zoo Code setups, different installed skills, and different scratch context.
|
|
16
|
+
|
|
17
|
+
## Shared/committed
|
|
18
|
+
|
|
19
|
+
Usually committed:
|
|
20
|
+
|
|
21
|
+
- `AGENTS.md`
|
|
22
|
+
- `CONTRIBUTING.md`
|
|
23
|
+
- `docs/agents/`
|
|
24
|
+
- `docs/architecture/`
|
|
25
|
+
- `docs/adr/`
|
|
26
|
+
- `README.md`
|
|
27
|
+
|
|
28
|
+
Project knowledge should be promoted into shared docs when it affects the team.
|
|
29
|
+
|
|
30
|
+
## When to promote local context
|
|
31
|
+
|
|
32
|
+
Promote `.zoo-flow/CONTEXT.md` or `.zoo-flow/docs/adr/` into shared docs when:
|
|
33
|
+
|
|
34
|
+
- multiple people need the same terminology
|
|
35
|
+
- architecture decisions affect future work
|
|
36
|
+
- the agent repeatedly needs the same project knowledge
|
|
37
|
+
- onboarding would improve from committed docs
|
|
38
|
+
|
|
39
|
+
## Suggested shared layout
|
|
40
|
+
|
|
41
|
+
- `AGENTS.md`
|
|
42
|
+
- `docs/agents/issue-tracker.md`
|
|
43
|
+
- `docs/agents/triage-labels.md`
|
|
44
|
+
- `docs/agents/domain.md`
|
|
45
|
+
- `docs/architecture/`
|
|
46
|
+
- `docs/adr/`
|