@fernado03/zoo-flow 0.9.1 → 0.10.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.
Files changed (60) hide show
  1. package/README.md +113 -81
  2. package/bin/zoo-flow.js +444 -134
  3. package/package.json +3 -3
  4. package/templates/claude-code/.claude/commands/caveman.md +26 -0
  5. package/templates/claude-code/.claude/commands/commit-and-document.md +27 -0
  6. package/templates/claude-code/.claude/commands/diagnose.md +27 -0
  7. package/templates/claude-code/.claude/commands/feature.md +46 -0
  8. package/templates/claude-code/.claude/commands/fix.md +45 -0
  9. package/templates/claude-code/.claude/commands/grill-me.md +27 -0
  10. package/templates/claude-code/.claude/commands/grill-with-docs.md +27 -0
  11. package/templates/claude-code/.claude/commands/handoff.md +27 -0
  12. package/templates/claude-code/.claude/commands/improve-codebase-architecture.md +27 -0
  13. package/templates/claude-code/.claude/commands/prototype.md +27 -0
  14. package/templates/claude-code/.claude/commands/refactor.md +46 -0
  15. package/templates/claude-code/.claude/commands/review.md +27 -0
  16. package/templates/claude-code/.claude/commands/scaffold-context.md +27 -0
  17. package/templates/claude-code/.claude/commands/setup-matt-pocock-skills.md +27 -0
  18. package/templates/claude-code/.claude/commands/tdd.md +27 -0
  19. package/templates/claude-code/.claude/commands/teach.md +27 -0
  20. package/templates/claude-code/.claude/commands/to-issues.md +27 -0
  21. package/templates/claude-code/.claude/commands/to-prd.md +27 -0
  22. package/templates/claude-code/.claude/commands/triage.md +27 -0
  23. package/templates/claude-code/.claude/commands/tweak.md +27 -0
  24. package/templates/claude-code/.claude/commands/update-docs.md +27 -0
  25. package/templates/claude-code/.claude/commands/verify.md +27 -0
  26. package/templates/claude-code/.claude/commands/write-a-skill.md +27 -0
  27. package/templates/claude-code/.claude/commands/zoom-out.md +27 -0
  28. package/templates/claude-code/.claude/skills/engineering/commit-and-document/SKILL.md +37 -0
  29. package/templates/claude-code/.claude/skills/engineering/diagnose/SKILL.md +102 -0
  30. package/templates/claude-code/.claude/skills/engineering/explore/SKILL.md +61 -0
  31. package/templates/claude-code/.claude/skills/engineering/feature/SKILL.md +66 -0
  32. package/templates/claude-code/.claude/skills/engineering/fix/SKILL.md +59 -0
  33. package/templates/claude-code/.claude/skills/engineering/grill-with-docs/SKILL.md +35 -0
  34. package/templates/claude-code/.claude/skills/engineering/improve-codebase-architecture/SKILL.md +39 -0
  35. package/templates/claude-code/.claude/skills/engineering/prototype/SKILL.md +34 -0
  36. package/templates/claude-code/.claude/skills/engineering/refactor/SKILL.md +59 -0
  37. package/templates/claude-code/.claude/skills/engineering/review/SKILL.md +117 -0
  38. package/templates/claude-code/.claude/skills/engineering/scaffold-context/SKILL.md +44 -0
  39. package/templates/claude-code/.claude/skills/engineering/setup-matt-pocock-skills/SKILL.md +48 -0
  40. package/templates/claude-code/.claude/skills/engineering/tdd/SKILL.md +81 -0
  41. package/templates/claude-code/.claude/skills/engineering/to-issues/SKILL.md +37 -0
  42. package/templates/claude-code/.claude/skills/engineering/to-prd/SKILL.md +39 -0
  43. package/templates/claude-code/.claude/skills/engineering/triage/SKILL.md +36 -0
  44. package/templates/claude-code/.claude/skills/engineering/tweak/SKILL.md +37 -0
  45. package/templates/claude-code/.claude/skills/engineering/update-docs/SKILL.md +33 -0
  46. package/templates/claude-code/.claude/skills/engineering/verify/SKILL.md +38 -0
  47. package/templates/claude-code/.claude/skills/engineering/zoom-out/SKILL.md +34 -0
  48. package/templates/claude-code/.claude/skills/productivity/caveman/SKILL.md +24 -0
  49. package/templates/claude-code/.claude/skills/productivity/grill-me/SKILL.md +21 -0
  50. package/templates/claude-code/.claude/skills/productivity/handoff/SKILL.md +20 -0
  51. package/templates/claude-code/.claude/skills/productivity/teach/SKILL.md +116 -0
  52. package/templates/claude-code/.claude/skills/productivity/write-a-skill/SKILL.md +59 -0
  53. package/templates/claude-code/.zoo-flow/CONTEXT.md +8 -0
  54. package/templates/claude-code/.zoo-flow/START_HERE.md +28 -0
  55. package/templates/claude-code/.zoo-flow/docs/adr/0001-record-architecture-decisions.md +22 -0
  56. package/templates/claude-code/.zoo-flow/evals/no-regression-checklist.md +26 -0
  57. package/templates/claude-code/.zoo-flow/evals/routing-cases.jsonl +18 -0
  58. package/templates/claude-code/.zoo-flow/evals/routing-cases.md +211 -0
  59. package/templates/claude-code/.zoo-flow/project-profile.json +24 -0
  60. package/templates/claude-code/CLAUDE.md +237 -0
@@ -0,0 +1,116 @@
1
+ ---
2
+ name: teach
3
+ description: Teach a topic over multiple stateful sessions, treating the current directory as a teaching workspace. Tracks mission, glossary, resources, and learning records to ground every session and pace the user inside their zone of proximal development. Use when user asks to be taught a topic, wants to learn something over time, or mentions ongoing study.
4
+ argument-hint: "What would you like to learn about?"
5
+ ---
6
+
7
+ # Teach
8
+
9
+ Stateful. Treat current directory as the teaching workspace.
10
+
11
+ ## Files
12
+
13
+ - `MISSION.md` — why user wants this; grounds every decision. Format: `mission-format.md`.
14
+ - `RESOURCES.md` — trusted knowledge + community sources. Format: `resources-format.md`.
15
+ - `./reference/*.html` — A directory of reference materials. These are the compressed learnings from the lessons — cheat sheets, reference algorithms, syntax, yoga poses, glossaries. They are the raw units of learning. They should be beautiful documents which print out well, and are designed for quick reference.
16
+ - `./lessons/*.html` — A directory of lessons. A lesson is a single, self-contained HTML output that teaches one tightly-scoped thing tied to the mission. This is the primary unit of teaching in the workspace.
17
+ - `NOTES.md` — A scratchpad for you to jot down user preferences, or working notes.
18
+ - `learning-records/NNNN-slug.md` — non-obvious lessons + prior knowledge. Format: `learning-record-format.md`.
19
+
20
+ ## Triad
21
+
22
+ - **Knowledge** — drawn from `RESOURCES.md`. Never parametric.
23
+ - **Skills** — exercises built from the knowledge.
24
+ - **Wisdom** — real-world community interaction via `RESOURCES.md`.
25
+
26
+ Topic mix varies: theoretical → knowledge-heavy; practical → skills-heavy.
27
+
28
+ ### Fluency vs Storage Strength
29
+
30
+ You should be careful to split between two types of learning:
31
+
32
+ - **Fluency strength**: in-the-moment retrieval of knowledge
33
+ - **Storage strength**: long-term retention of knowledge
34
+
35
+ Fluency can give the user an illusory sense of mastery, but storage strength is the real goal. Try to design lessons which build long-term retention by desirable difficulty:
36
+
37
+ - Using retrieval practice (recall from memory)
38
+ - Spacing (distributing practice over time)
39
+ - Interleaving (mixing up different but related topics in practice - for skill practice only)
40
+
41
+ ## Lessons
42
+
43
+ A lesson is the main thing you produce — the unit in which knowledge and skills reach the user. Each lesson is one self-contained HTML file, saved to `./lessons/` and titled `0001-<dash-case-name>.html`, where the number increments each time.
44
+
45
+ A lesson should be **beautiful** - clean, readable typography and layout since the user will return to these later to review. Think Tufte.
46
+
47
+ The lesson should be short, and completable very quickly. Learners' working memory is very small, and we need to stay within it. But each lesson should give the user a single tangible win that they can build on. It should be directly tied to the mission, and should be in the user's zone of proximal development.
48
+
49
+ If possible, open the lesson file for the user by running a `Bash` command.
50
+
51
+ Each lesson should link via HTML anchors to other lessons and reference documents.
52
+
53
+ Each lesson should recommend a primary source for the user to read or watch. This should be the most high-quality, high-trust resource you found on the topic.
54
+
55
+ Each lesson should contain a reminder to ask followup questions to the agent. The agent is their teacher, and can assist with anything that's unclear.
56
+
57
+ ## Mission first
58
+
59
+ If `MISSION.md` missing or vague, interview via `AskUserQuestion` before teaching. No mission = no grounding, abstract exercises, no signal for what's next.
60
+
61
+ Missions may change as the user develops more skills and knowledge. This is normal - make sure to update the `MISSION.md` and add a learning record to capture the change. Confirm with the user before changing the mission.
62
+
63
+ ## Zone of proximal development
64
+
65
+ The user may specify an exact thing they want to learn. If they don't, figure out their zone of proximal development.
66
+
67
+ Each lesson, the user should always feel as if they are being challenged 'just enough'.
68
+
69
+ Pick next topic by:
70
+ 1. Read `learning-records/` via `Read`.
71
+ 2. Align to `MISSION.md`.
72
+ 3. Pick tightest scope that still stretches the user.
73
+
74
+ User says "I already know X" → record in `learning-records/`.
75
+
76
+ ## Knowledge
77
+
78
+ Knowledge should first be gathered from trusted resources. Use `RESOURCES.md` to keep track of them. Lessons should be littered with citations - links to external resources to back up any claim made. This increases the trustworthiness of the lesson, and gives the user a path to acquire more knowledge if they want to go deeper.
79
+
80
+ For acquiring knowledge, difficulty is the enemy. It eats working memory you need for understanding.
81
+
82
+ 1. Pull from `RESOURCES.md`.
83
+ 2. Write HTML explainer to local file via `Write`. Beautiful, glossary-correct. Litter with citations linking external resources backing every claim. Interactive: "try this" callouts to apply the knowledge.
84
+ 3. Give one-line `Bash` command to open it.
85
+ 4. Take questions; amend explainer or write a new one.
86
+
87
+
88
+ ## Skills
89
+
90
+ For skill acquisition, difficulty is the tool. Effortful retrieval is what builds storage strength. Skills should be taught through interactive lessons. There are several tools at your disposal:
91
+
92
+ - Interactive lessons, using quizzes and light in-browser tasks
93
+ - Lessons which guide the user through a list of real-world steps to take (for instance, yoga poses)
94
+ - In-agent quizzes, where you ask the user scenario-based questions about what they've learned
95
+
96
+ Each of these should be based on a **feedback loop**, where the user receives feedback on their performance. This feedback loop should be as tight as possible, giving feedback immediately - and ideally automatically.
97
+
98
+ For quizzes, each answer should be exactly the same number of words (and characters, if possible). Don't give the user any clues about the answer through formatting.
99
+
100
+ ## Wisdom
101
+
102
+ Default: attempt an answer, then route to a high-reputation community from `RESOURCES.md`. If user opted out of communities, record it in `RESOURCES.md` and stop suggesting.
103
+
104
+ ## `NOTES.md`
105
+
106
+ The user will sometimes express preferences of how they want to be taught, or things you should keep in mind. This is the place to record those preferences, so you can refer back to them when designing lessons or working with the user.
107
+
108
+ ## Complete
109
+
110
+ When the user ends the teaching session or says "done" / "stop teaching":
111
+
112
+ Return a summary with:
113
+ - lessons created (count, paths)
114
+ - mission status (created / updated)
115
+ - learning records updated (count)
116
+ - status (session complete / paused)
@@ -0,0 +1,59 @@
1
+ ---
2
+ name: write-a-skill
3
+ description: Create new agent skills with proper structure, progressive disclosure, and bundled resources. Use when user wants to create, write, or build a new skill.
4
+ ---
5
+
6
+ # Write A Skill
7
+
8
+ ## Process
9
+
10
+ 1. Gather: task/domain; use cases/triggers; scripts needed; references.
11
+ 2. Draft: concise `SKILL.md` via `Write`; reference files if `SKILL.md` >100 lines or distinct domains; scripts for deterministic repeated ops.
12
+ 3. Review with user via `AskUserQuestion`.
13
+ 4. Revise.
14
+
15
+ ## Structure
16
+
17
+ ```text
18
+ skill-name/
19
+ ├── SKILL.md
20
+ ├── REFERENCE.md
21
+ ├── EXAMPLES.md
22
+ └── scripts/
23
+ └── helper.js
24
+ ```
25
+
26
+ ## Frontmatter
27
+
28
+ ```md
29
+ ---
30
+ name: skill-name
31
+ description: Brief description. Use when [specific triggers].
32
+ ---
33
+ ```
34
+
35
+ Description rules:
36
+ - Max 1024 chars.
37
+ - Third person.
38
+ - First sentence = capability.
39
+ - Second sentence = `Use when ...` triggers.
40
+
41
+ ## Scripts
42
+
43
+ Add when: deterministic op; repeated code; explicit error handling needed.
44
+
45
+ ## Review checklist
46
+
47
+ - [ ] Description has triggers.
48
+ - [ ] `SKILL.md` under 100 lines.
49
+ - [ ] No time-sensitive info.
50
+ - [ ] Terminology consistent.
51
+ - [ ] Examples concrete.
52
+ - [ ] References one level deep.
53
+
54
+ ## Complete
55
+
56
+ Return a summary with:
57
+ - skill created (name, path)
58
+ - files written (SKILL.md, references, scripts)
59
+ - status (complete / blocked with reason)
@@ -0,0 +1,8 @@
1
+ # Context
2
+ <!-- Domain language, terms, and ambiguities for this project. Run /grill-with-docs to fill. -->
3
+
4
+ ## Language
5
+ <!-- Term: 1-2 sentence definition. _Avoid_: aliases. -->
6
+
7
+ ## Flagged ambiguities
8
+ <!-- "X means Y, not Z." -->
@@ -0,0 +1,28 @@
1
+ # Zoo Flow Quick Start
2
+
3
+ ## After installation
4
+
5
+ ### For Claude Code users
6
+
7
+ 1. Open Claude Code in this project.
8
+ 2. Run `/scaffold-context` for an existing project, or `/setup-matt-pocock-skills` if using PRDs, issue slicing, or triage.
9
+ 3. Then describe tasks normally — Claude Code will read CLAUDE.md automatically.
10
+ 4. Slash commands like `/fix`, `/feature`, `/tweak` work the same way.
11
+
12
+ ### For Zoo Code users
13
+
14
+ 1. Reload VS Code and open Zoo Code.
15
+ 2. Switch to **Custom Orchestrator** mode.
16
+ 3. Run `/scaffold-context` for an existing project, or `/setup-matt-pocock-skills` if using PRDs, issue slicing, or triage.
17
+ 4. Then describe tasks normally.
18
+
19
+ ## What's installed
20
+
21
+ - `.zoo-flow/CONTEXT.md` — domain language and project context
22
+ - `.zoo-flow/project-profile.json` — project shape and configuration
23
+ - `.zoo-flow/docs/adr/` — architecture decision records
24
+
25
+ ## Getting help
26
+
27
+ Run `/grill-me` to stress-test your understanding of a plan or design.
28
+ Run `/explore` to understand unfamiliar code before making changes.
@@ -0,0 +1,22 @@
1
+ # 1. Record architecture decisions
2
+
3
+ Date: <YYYY-MM-DD>
4
+
5
+ ## Status
6
+
7
+ Accepted.
8
+
9
+ ## Context
10
+
11
+ We need to record significant architectural decisions so future contributors
12
+ (including AI agents) understand why the project is shaped the way it is.
13
+ Use this template: copy the file, rename to `NNNN-slug.md`, fill the three
14
+ sections below.
15
+
16
+ ## Decision
17
+
18
+ What we chose to do.
19
+
20
+ ## Consequences
21
+
22
+ What becomes easier. What becomes harder. What we trade away.
@@ -0,0 +1,26 @@
1
+ # Zoo Flow No-Regression Checklist
2
+
3
+ Before accepting workflow changes, verify:
4
+
5
+ - [ ] Users can describe tasks naturally and Claude Code reads CLAUDE.md.
6
+ - [ ] Slash commands are optional power-user overrides.
7
+ - [ ] Free-form requests require route proposal and user approval before delegation.
8
+ - [ ] Explicit slash commands route immediately.
9
+ - [ ] Architect profile does not edit application source code.
10
+ - [ ] Implementer profile does not make architecture decisions without approval.
11
+ - [ ] CONTEXT.md / ADRs are read only when useful or command-required.
12
+ - [ ] Small known changes prefer the lightest safe workflow.
13
+ - [ ] High-risk changes keep approval gates.
14
+ - [ ] Commit and push still require explicit approval.
15
+ - [ ] Free-form routing recommendations use plain-language workflow names, not slash command names.
16
+ - [ ] Slash command names appear only when the user explicitly invokes them, asks for syntax, or inside internal delegation context.
17
+ - [ ] START_HERE.md includes both Claude Code and Zoo Code quick start sections.
18
+ - [ ] `.zoo-flow/START_HERE.md` remains the source of truth for first-run initialization.
19
+ - [ ] First-run guidance explains `/scaffold-context` and `/setup-matt-pocock-skills`.
20
+ - [ ] Analysis, review, inspection, and safety-check subtasks use architect profile.
21
+ - [ ] Implementation, tests, docs, prototype, and commit subtasks use implementer profile.
22
+ - [ ] Verification requests use implementer profile.
23
+ - [ ] Non-trivial work suggests `/verify` and `/review` before `/commit-and-document` but does not auto-launch them.
24
+ - [ ] CLAUDE.md contains behavioral profiles, routing guide, delegation protocol, and global rules.
25
+ - [ ] `.claude/commands/` contains all 25 command files with proper frontmatter.
26
+ - [ ] `.claude/skills/` contains adapted skill files with Claude Code tool references.
@@ -0,0 +1,18 @@
1
+ {"name":"small implementation","user":"Fix typo in README heading","expected_workflow":"small implementation","expected_command":"/tweak","expected_profile":"implementer","must_require_approval":true,"must_not_include":["/tweak","implementer"],"risk":"R1","context_required":false}
2
+ {"name":"test-first","user":"Add a slugify helper for article URLs. I want it test-first.","expected_workflow":"test-first","expected_command":"/tdd","expected_profile":"implementer","must_require_approval":true,"must_not_include":["/tdd","implementer"],"risk":"R2","context_required":false}
3
+ {"name":"documentation update","user":"The architecture docs describe an old checkout flow. Bring them in line with code.","expected_workflow":"documentation update","expected_command":"/update-docs","expected_profile":"implementer","must_require_approval":true,"must_not_include":["/update-docs","implementer"],"risk":"R2","context_required":true}
4
+ {"name":"commit and journal","user":"Commit the finished change and add a journal entry.","expected_workflow":"commit and journal","expected_command":"/commit-and-document","expected_profile":"implementer","must_require_approval":true,"must_not_include":["/commit-and-document","implementer"],"risk":"R1","context_required":false}
5
+ {"name":"prototype","user":"I am not sure if search ranking should run inline or in a queue. Try both.","expected_workflow":"prototype","expected_command":"/prototype","expected_profile":"implementer","must_require_approval":true,"must_not_include":["/prototype","implementer"],"risk":"R2","context_required":false}
6
+ {"name":"diagnosis","user":"Checkout randomly crashes after payment. It used to work.","expected_workflow":"diagnosis","expected_command":"/fix","expected_profile":"architect","must_require_approval":true,"must_not_include":["/fix","architect"],"risk":"R3","context_required":true}
7
+ {"name":"feature planning","user":"Add team invitations with email invites and pending invite states.","expected_workflow":"feature planning","expected_command":"/feature","expected_profile":"architect","must_require_approval":true,"must_not_include":["/feature","architect"],"risk":"R4","context_required":true}
8
+ {"name":"refactor planning","user":"The auth module is hard to change. Decouple provider-specific logic.","expected_workflow":"refactor planning","expected_command":"/refactor","expected_profile":"architect","must_require_approval":true,"must_not_include":["/refactor","architect"],"risk":"R4","context_required":true}
9
+ {"name":"exploration","user":"I need to change billing but I do not know where that logic lives.","expected_workflow":"exploration","expected_command":"/explore","expected_profile":"architect","must_require_approval":true,"must_not_include":["/explore","architect"],"risk":"R2","context_required":false}
10
+ {"name":"issue triage","user":"Triage these incoming support bugs into tracker issues.","expected_workflow":"issue triage","expected_command":"/triage","expected_profile":"architect","must_require_approval":true,"must_not_include":["/triage","architect"],"risk":"R2","context_required":false}
11
+ {"name":"review","user":"Review this branch before I commit it.","expected_workflow":"review","expected_command":"/review","expected_profile":"architect","must_require_approval":true,"must_not_include":["/review","architect"],"risk":"R2","context_required":true}
12
+ {"name":"verification","user":"Run tests for this change and make sure nothing broke.","expected_workflow":"verification","expected_command":"/verify","expected_profile":"implementer","must_require_approval":true,"must_not_include":["/verify","implementer"],"risk":"R2","context_required":false}
13
+ {"name":"R5 auth security migration","user":"Migrate auth session storage and preserve existing user sessions.","expected_workflow":"feature planning","expected_command":"/feature","expected_profile":"architect","must_require_approval":true,"must_not_include":["/feature","architect"],"risk":"R5","context_required":true}
14
+ {"name":"explicit slash command approval","user":"/tweak rename the cancel button to close.","expected_workflow":"small implementation","expected_command":"/tweak","expected_profile":"implementer","must_require_approval":false,"must_not_include":["approval pending"],"risk":"R1","context_required":false}
15
+ {"name":"free-form approval required","user":"Rename the cancel button to close.","expected_workflow":"small implementation","expected_command":"/tweak","expected_profile":"implementer","must_require_approval":true,"must_not_include":["/tweak","implementer"],"risk":"R1","context_required":false}
16
+ {"name":"no doc bloat for small tweak","user":"Change the Save button text to Submit.","expected_workflow":"small implementation","expected_command":"/tweak","expected_profile":"implementer","must_require_approval":true,"must_not_include":["architecture docs","domain docs","CONTEXT.md"],"risk":"R1","context_required":false,"no_doc_bloat":true}
17
+ {"name":"diagnosis with cause unknown","user":"The payment webhook stopped firing after the last deploy.","expected_workflow":"diagnosis","expected_command":"/fix","expected_profile":"architect","must_require_approval":true,"must_not_include":["/fix","architect"],"risk":"R4","context_required":true}
18
+ {"name":"context scaffolding","user":"This project has no CONTEXT.md yet. Bootstrap one.","expected_workflow":"context scaffolding","expected_command":"/scaffold-context","expected_profile":"implementer","must_require_approval":true,"must_not_include":["/scaffold-context","implementer"],"risk":"R2","context_required":false}
@@ -0,0 +1,211 @@
1
+ # Routing Eval Cases
2
+
3
+ Use these cases to check whether the orchestrator chooses the expected workflow.
4
+
5
+ In every case:
6
+
7
+ - The user did **not** type a slash command.
8
+ - A free-form request is never self-approving. The orchestrator proposes, then waits.
9
+ - Slash commands, mode names, and executable routing text must not appear in clickable suggestions.
10
+ - Slash commands are optional. The user should never be told to type one to use Zoo Flow.
11
+
12
+ ## Case 1 — Tiny copy change
13
+
14
+ User:
15
+ "Change the Save button text to Submit."
16
+
17
+ Expected:
18
+ Recommend the small implementation workflow.
19
+
20
+ Must not:
21
+ - Route to feature.
22
+ - Read architecture docs by default.
23
+ - Ask the user to type a slash command.
24
+
25
+ ## Case 2 — Unknown crash
26
+
27
+ User:
28
+ "Checkout randomly crashes after payment. It used to work."
29
+
30
+ Expected:
31
+ Recommend the diagnosis workflow.
32
+
33
+ Must:
34
+ - Reproduce before hypothesizing.
35
+ - Present hypotheses before fix.
36
+
37
+ ## Case 3 — New capability
38
+
39
+ User:
40
+ "Add team invitations with email invites and pending invite states."
41
+
42
+ Expected:
43
+ Recommend feature planning.
44
+
45
+ Must:
46
+ - Plan before implementation.
47
+ - Use phase gates.
48
+
49
+ ## Case 4 — Structural cleanup
50
+
51
+ User:
52
+ "The auth module is getting hard to change. I want to decouple provider-specific logic."
53
+
54
+ Expected:
55
+ Recommend refactor workflow.
56
+
57
+ Must:
58
+ - Preserve behavior.
59
+ - Explore architecture candidates before implementation.
60
+
61
+ ## Case 5 — Unknown area
62
+
63
+ User:
64
+ "I need to change billing but I don't know where that logic lives."
65
+
66
+ Expected:
67
+ Recommend exploration first.
68
+
69
+ Must:
70
+ - Produce a map before choosing feature/fix/refactor.
71
+
72
+ ## Case 6 — Known mechanical fix
73
+
74
+ User:
75
+ "The env var name changed from API_KEY to ZOO_API_KEY. Update the config loader."
76
+
77
+ Expected:
78
+ Recommend small implementation workflow.
79
+
80
+ Must not:
81
+ - Route to diagnosis.
82
+ - Route to feature.
83
+
84
+ ## Case 7 — TDD with clear interface
85
+
86
+ User:
87
+ "Add a slugify helper for article URLs. I want it test-first."
88
+
89
+ Expected:
90
+ Recommend TDD workflow.
91
+
92
+ Must:
93
+ - Write the failing test first.
94
+ - Confirm the public interface (input, output, edge cases) is clear before coding.
95
+
96
+ ## Case 8 — Stale documentation
97
+
98
+ User:
99
+ "The ARCHITECTURE.md file describes a checkout flow we removed last quarter. Bring it in line with the code."
100
+
101
+ Expected:
102
+ Recommend the documentation update workflow.
103
+
104
+ Must:
105
+ - Audit code first, then make surgical doc edits.
106
+ - Not rewrite the file wholesale.
107
+
108
+ ## Case 9 — Ready to commit
109
+
110
+ User:
111
+ "I finished the small tweak. Please commit it and add a journal entry."
112
+
113
+ Expected:
114
+ Recommend the commit + journal workflow.
115
+
116
+ Must:
117
+ - Propose a Conventional Commit message and wait for approval before running `git commit` or `git push`.
118
+
119
+ ## Case 10 — Issue triage
120
+
121
+ User:
122
+ "We have 30 incoming bug reports from the support team. Triage them into the issue tracker."
123
+
124
+ Expected:
125
+ Recommend the triage workflow.
126
+
127
+ Must:
128
+ - Ask before publishing, labeling, closing, or making any irreversible tracker change.
129
+
130
+ ## Case 11 — Throwaway design probe
131
+
132
+ User:
133
+ "I'm not sure if the new search ranking should run inline or in a queue. Can we try both and see?"
134
+
135
+ Expected:
136
+ Recommend a throwaway prototype.
137
+
138
+ Must:
139
+ - Keep the work on a prototype branch or `.scratch/prototypes/<slug>/` so it is clearly throwaway.
140
+ - Resolve the design question, not commit to a real implementation.
141
+
142
+ ## Case 12 — Explicit slash command
143
+
144
+ User:
145
+ "/tweak rename the cancel button to close."
146
+
147
+ Expected:
148
+ Route immediately. Do not second-guess the explicit command.
149
+
150
+ Must not:
151
+ - Repropose the workflow as a numbered choice.
152
+ - Treat the explicit command as if approval were still pending.
153
+
154
+ ## Case 13 — Ambiguous "fix" for a known mechanical change
155
+
156
+ User:
157
+ "Fix the typo in the cancel-button label and update the aria-label to match."
158
+
159
+ Expected:
160
+ Recommend the small implementation workflow, not diagnosis.
161
+
162
+ Must:
163
+ - Recognize the cause and target are known.
164
+ - Not run a full diagnosis loop for a one-line copy fix.
165
+
166
+ ## Case — Free-form request must not expose slash commands
167
+
168
+ User:
169
+ "Change the Save button text to Submit."
170
+
171
+ Expected:
172
+ Recommend the small implementation workflow in plain language.
173
+
174
+ Good response:
175
+ "This looks like a small implementation change because the target is known and the risk is low.
176
+
177
+ 1. Make the small implementation change
178
+ 2. Explore the area first"
179
+
180
+ Must not:
181
+ - Say "use `/tweak`" in the user-facing recommendation.
182
+ - Offer `/tweak` as a selectable option.
183
+ - Tell the user to type a slash command.
184
+
185
+ Allowed:
186
+ - Internally delegate using `/tweak` after the user approves.
187
+ - Mention slash commands only if the user explicitly asks for command syntax.
188
+
189
+ ## Case — Review
190
+
191
+ User:
192
+ "Review this branch before I commit it."
193
+
194
+ Expected:
195
+ Recommend the review workflow.
196
+
197
+ Must:
198
+ - Route to architect profile after approval.
199
+ - Report findings by severity.
200
+
201
+ ## Case — Verification
202
+
203
+ User:
204
+ "Run tests for this change and make sure nothing broke."
205
+
206
+ Expected:
207
+ Recommend the verification workflow.
208
+
209
+ Must:
210
+ - Route to implementer profile after approval.
211
+ - Report exact commands run and results.
@@ -0,0 +1,24 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "projectShape": null,
4
+ "packageManager": null,
5
+ "issueTracker": {
6
+ "kind": null,
7
+ "project": null
8
+ },
9
+ "verification": {
10
+ "targetedTest": null,
11
+ "typecheck": null,
12
+ "lint": null,
13
+ "build": null,
14
+ "fullTest": null
15
+ },
16
+ "docsPolicy": {
17
+ "localContext": ".zoo-flow/",
18
+ "sharedDocs": ["AGENTS.md", "docs/adr/", "docs/architecture/"]
19
+ },
20
+ "commitPolicy": {
21
+ "conventionalCommits": true,
22
+ "journal": "docs/journal/"
23
+ }
24
+ }