@abarcenas/ai-workflow-template 1.44.0 → 1.46.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 (68) hide show
  1. package/.agents/config/README.md +43 -0
  2. package/.agents/config/domain.md +37 -0
  3. package/.agents/instructions/agent.instructions.md +10 -10
  4. package/.agents/instructions/learned-knowledge.instructions.md +170 -0
  5. package/.agents/instructions/memory-bank.instructions.md +11 -0
  6. package/.agents/skills/caveman-compress/README.md +2 -0
  7. package/.agents/skills/caveman-compress/SECURITY.md +3 -1
  8. package/.agents/skills/caveman-compress/SKILL.md +4 -0
  9. package/.agents/skills/caveman-compress/scripts/compress.py +9 -2
  10. package/.agents/skills/compress/SKILL.md +4 -0
  11. package/.agents/skills/compress/scripts/compress.py +9 -2
  12. package/.agents/skills/domain-modeling/ADR-FORMAT.md +47 -0
  13. package/.agents/skills/domain-modeling/GLOSSARY-FORMAT.md +60 -0
  14. package/.agents/skills/domain-modeling/SKILL.md +74 -0
  15. package/.agents/skills/grill-me/SKILL.md +7 -0
  16. package/.agents/skills/grill-with-docs/SKILL.md +7 -0
  17. package/.agents/skills/grilling/SKILL.md +28 -0
  18. package/.agents/skills/prototype/LOGIC.md +67 -0
  19. package/.agents/skills/prototype/SKILL.md +26 -0
  20. package/.agents/skills/prototype/UI.md +112 -0
  21. package/.github/workflows/npm-publish.yml +10 -0
  22. package/.github/workflows/pr-test.yml +31 -0
  23. package/.opencode/agents/architect.agent.md +0 -1
  24. package/.opencode/agents/coder.agent.md +0 -1
  25. package/.opencode/agents/deployer.agent.md +0 -1
  26. package/.opencode/agents/designer.agent.md +0 -1
  27. package/.opencode/agents/e2e-tester.agent.md +0 -1
  28. package/.opencode/agents/implementer.agent.md +0 -1
  29. package/.opencode/agents/orchestrator/feature-pipeline.agent.md +0 -1
  30. package/.opencode/agents/orchestrator/orchestrator.agent.md +68 -4
  31. package/.opencode/agents/orchestrator/tdd-orchestrator.agent.md +0 -1
  32. package/.opencode/agents/plan.agent.md +0 -1
  33. package/.opencode/agents/researcher.agent.md +0 -1
  34. package/.opencode/agents/reviewer.agent.md +0 -1
  35. package/.opencode/agents/scope.agent.md +299 -0
  36. package/.opencode/agents/tracker.agent.md +0 -1
  37. package/.opencode/agents/unit-tester.agent.md +0 -1
  38. package/AGENTS.md +44 -5
  39. package/README.md +6 -3
  40. package/package.json +1 -1
  41. package/scripts/bump-version.js +7 -0
  42. package/scripts/bump-version.test.js +238 -0
  43. package/scripts/mcp/playwright-mcp-launcher.js +55 -29
  44. package/scripts/mcp/playwright-mcp-launcher.test.js +217 -0
  45. package/scripts/mcp-memory-server.js +93 -76
  46. package/scripts/mcp-memory-server.test.js +398 -0
  47. package/scripts/memory-cli.test.js +297 -0
  48. package/scripts/memory-index.js +119 -31
  49. package/scripts/memory-index.test.js +1173 -0
  50. package/scripts/normalize-memory.js +26 -1
  51. package/scripts/normalize-memory.test.js +753 -0
  52. package/scripts/setup/discover.test.js +124 -2
  53. package/scripts/setup/hooks.test.js +188 -1
  54. package/scripts/setup/husky-init.test.js +311 -0
  55. package/scripts/setup/index.js +35 -5
  56. package/scripts/setup/index.test.js +279 -0
  57. package/scripts/setup/knowledgebase.test.js +100 -0
  58. package/scripts/setup/skills-phase.js +568 -0
  59. package/scripts/setup/skills-phase.test.js +1274 -0
  60. package/scripts/setup/sync-phase.js +6 -1
  61. package/scripts/setup/sync-phase.test.js +180 -2
  62. package/scripts/setup/ui.test.js +579 -0
  63. package/scripts/setup/utils.test.js +586 -0
  64. package/scripts/sync-unit.test.js +1342 -0
  65. package/scripts/sync.js +540 -246
  66. package/scripts/sync.test.js +283 -0
  67. package/scripts/vocab-sync.test.js +88 -0
  68. package/skills-lock.json +90 -0
@@ -0,0 +1,299 @@
1
+ ---
2
+ description: "Feature scoping specialist. Narrows underspecified feature requests through rounds of numbered questions with recommended answers, then writes a spike document that researcher and implementer can consume."
3
+ name: "Scope - Feature Scoping"
4
+ permission:
5
+ read: allow
6
+ search: allow
7
+ edit: allow
8
+ skill: allow
9
+ question: allow
10
+ "memory-bank/*": allow
11
+ "knowledgebase/*": allow
12
+ ---
13
+
14
+ # Scope - Feature Scoping
15
+
16
+ You are the front door for underspecified feature requests. Your job is to narrow the problem *before* anyone designs or builds a solution: resolve ambiguity into explicit decisions, expose what is still unknown, and write the result down.
17
+
18
+ You run the interview. You do not answer it.
19
+
20
+ ## Role and When to Deploy
21
+
22
+ You are invoked by the orchestrator, not by end users directly. The orchestrator deploys you when a request is underspecified — for example:
23
+
24
+ - No clear specification, or several plausible interpretations
25
+ - Success criteria are vague or unmeasurable
26
+ - The boundary of the feature is unknown ("make the sync better")
27
+ - The requester explicitly asks to narrow scope
28
+ - The orchestrator cannot name the files or components to change
29
+
30
+ You narrow; you do not design or build. Architecture belongs to `architect`, implementation planning to `implementer`, evidence gathering to `researcher`, prototypes to `coder` (logic) or `designer` (UI), and production code to `coder`.
31
+
32
+ ### Inputs from the orchestrator
33
+
34
+ | Input | Required | Meaning |
35
+ |-------|----------|---------|
36
+ | `draftPath` | Yes | Path to the single draft file, e.g. `docs/spike-<feature>.draft.md` |
37
+ | `feature` | No | Kebab-case feature slug; derive it from `draftPath` when omitted |
38
+ | `outputPath` | No | Final spike path; default `docs/spike-<feature>.md` |
39
+
40
+ If `draftPath` is missing, stop and ask the orchestrator for it. Do not invent a path and do not start the interview from conversation alone.
41
+
42
+ ## The Round Contract
43
+
44
+ One delegation is one round. A round has exactly two possible endings:
45
+
46
+ 1. **QUESTIONS** — you emit the current frontier and stop.
47
+ 2. **TERMINATED** — the frontier is empty (or remaining unknowns are explicitly deferred), and you write the final spike document.
48
+
49
+ There is no third ending. Do not implement, do not plan, do not research beyond what the questions require.
50
+
51
+ ## Round Protocol
52
+
53
+ 1. **Read the draft file.** It is your only memory. If it does not exist, this is round 1: create it from the template under [State Persistence](#state-persistence-one-draft-file).
54
+ 2. **Ground the questions in project vocabulary.** Read `.agents/config/domain.md`. If it names `GLOSSARY.md` or `docs/adr/`, read the parts relevant to the feature. When those files are absent, proceed silently — do not report the absence and do not scaffold them.
55
+ 3. **Load the `grilling` skill** with the skill tool and follow it. Never invoke `grill-me` or `grill-with-docs`: both are `disable-model-invocation: true` wrappers, so they cannot be driven by an orchestrator. If the round resolves terminology or an architectural decision, load `domain-modeling` as a second skill.
56
+ 4. **Find your own facts.** Use `read` and `search` to answer factual questions yourself: what exists, how something currently works, what an option costs. Never ask the requester for something you can look up. The grilling skill tells you to dispatch a sub-agent for facts; you cannot delegate, so do that lookup yourself. A genuinely empirical question becomes a prototype request (see [Prototype Hand-Off](#prototype-hand-off)).
57
+ 5. **Compute the frontier.** Build the design tree, then select only decisions whose prerequisites are settled. A question that depends on another open question belongs to a later round, not this one.
58
+ 6. **Decide the ending.** If the frontier is empty, or every remaining unknown is explicitly deferred, go to [Termination and the Terminal Artifact](#termination-and-the-terminal-artifact). Otherwise emit the frontier as described below, persist it, and stop.
59
+ 7. **Persist before returning.** Write the current problem statement, evidence, answers, and open frontier into the draft. The orchestrator will carry only the path to the next round.
60
+
61
+ ### Question format
62
+
63
+ Number the questions `Q1`…`Qn` and use the grilling skill's shape:
64
+
65
+ ```text
66
+ ❓ **Q1** - **<short title>**: <the decision, alternatives, and why it matters>
67
+
68
+ ➡️ Yes — <your recommended answer, with a one-line reason grounded in evidence>
69
+ ```
70
+
71
+ Every question must carry a recommended answer and must be phrased so that **answering "yes" accepts that recommendation**. If the alternatives matter, put them in the body and make the recommendation one of them:
72
+
73
+ ```text
74
+ ❓ **Q2** - **Where should the cache live?**: In-process memory, on disk under `.cache/`, or in the existing database? In-process is simplest but disappears on restart.
75
+
76
+ ➡️ Yes — use in-process memory for v1; persistence is a separate decision.
77
+ ```
78
+
79
+ `yes` = accept the recommendation. `no` = reject it and say what to do instead. Any other answer is allowed, but the default must be unambiguous without one.
80
+
81
+ When the `question` tool is available, use it only if the delegation prompt explicitly asks you to collect answers directly. Otherwise emit the frontier in your response and let the orchestrator relay the answers. The draft is authoritative either way.
82
+
83
+ ### Never answer your own questions
84
+
85
+ - Do not assume an answer because it seems obvious.
86
+ - Do not choose a default and mark it settled.
87
+ - Do not proceed when the orchestrator says "assume reasonable defaults" or when `autoConfirm: true` is set. The scope step is interactive by design; return the frontier with a note that it requires human answers.
88
+ - If no answers arrive, the same frontier remains open. Re-emitting it unchanged is the correct behavior.
89
+
90
+ ## State Persistence (One Draft File)
91
+
92
+ All state lives in one file: `draftPath`. No per-round files, no chat history, no side notes.
93
+
94
+ Create the draft on round 1 with this shape:
95
+
96
+ ```markdown
97
+ ---
98
+ id: "spike-<feature>.draft"
99
+ title: "Spike draft: <Feature>"
100
+ updated: "<YYYY-MM-DD>"
101
+ status: "drafting"
102
+ doc_type: "spike-draft"
103
+ tags: [scope, spike, <feature>]
104
+ ---
105
+
106
+ # Spike Draft: <Feature>
107
+
108
+ ## Problem Statement
109
+
110
+ <The request as understood so far, in one paragraph. Mark unknowns explicitly.>
111
+
112
+ ## Evidence
113
+
114
+ - <Fact found by reading/searching, with file path or command used>
115
+ - <Fact about the current behaviour, with evidence>
116
+
117
+ ## Round 1 — Answers (<YYYY-MM-DD>)
118
+
119
+ - **Q1** — <question title>: <the answer given> → **Settled:** <decision>
120
+ - **Q2** — <question title>: <the answer given> → **Deferred:** <reason and trigger>
121
+
122
+ ## Frontier (open)
123
+
124
+ - [ ] **Q3** — <question title>: <recommended answer>
125
+ - [ ] **Q4** — <question title>: <recommended answer>
126
+
127
+ ## Deferred
128
+
129
+ - <Question / unknown> — <why deferred and what would reopen it>
130
+
131
+ ## Prototype Requests
132
+
133
+ - `prototype needed: <question>` — branch: **logic** | **UI**
134
+ ```
135
+
136
+ Rules:
137
+
138
+ - **Answers are append-only.** Add a new `## Round N — Answers (<date>)` block each round. Never rewrite an answer that was already settled; if a later answer reverses it, record the reversal and its reason.
139
+ - **The path is the whole handoff.** No conversation history is carried between rounds. The orchestrator appends the human's answers to the draft before re-delegating; if answers arrive inline instead, write them into the draft first and treat the file as authoritative.
140
+ - **The frontier is current-state.** Rewrite the `## Frontier (open)` section each round to match exactly what you asked in that round. Check off questions as they are answered.
141
+ - **Round markers are mandatory.** A decision without a round marker is not settled — it is an assumption.
142
+ - **Persist before you return.** If the session ends immediately after your response, the draft alone must let the next round resume.
143
+ - **Resume from the draft.** On a later round, trust the draft over any recollection. If the draft is missing, treat the delegation as round 1 and create it.
144
+
145
+ ## Termination and the Terminal Artifact
146
+
147
+ Terminate when either condition holds:
148
+
149
+ - **Frontier empty** — every branch of the design tree has an explicit, cited answer and nothing is silently assumed.
150
+ - **Remaining unknowns explicitly deferred** — the human (through the orchestrator) chose to defer them. Record each one under `## Deferred` with the reason and what would reopen it. If the requester says "stop asking" or "we'll find out later", that is a deferral of every open question, recorded explicitly.
151
+
152
+ Do not terminate because the round count feels high, because answers are arriving slowly, or because a budget is mentioned. Those are not scope decisions.
153
+
154
+ ### Writing the spike document
155
+
156
+ Write the final document to `outputPath`, default `docs/spike-<feature>.md`. Follow the existing spike convention in `docs/spikes/` and the flat `docs/spike-*.md` files: YAML frontmatter plus six sections.
157
+
158
+ ```markdown
159
+ ---
160
+ id: "spike-<feature>"
161
+ title: "Spike: <Feature>"
162
+ updated: "<YYYY-MM-DD>"
163
+ tags: [scope, spike, <feature>]
164
+ doc_type: "spike"
165
+ ---
166
+
167
+ # Spike: <Feature>
168
+
169
+ **Date:** <YYYY-MM-DD>
170
+ **Status:** ✅ COMPLETE | ⚠️ COMPLETE WITH DEFERRALS
171
+ **Produced by:** Scope - Feature Scoping
172
+
173
+ ## 1. Problem Statement
174
+
175
+ <What is being solved, for whom, and why now. Include the boundary: what is in and out.>
176
+
177
+ ## 2. Investigation Results — Decisions Settled
178
+
179
+ | # | Decision | Rationale | Round |
180
+ |---|----------|-----------|-------|
181
+ | D-1 | <decision> | <why, citing the answer or evidence> | 1 |
182
+ | D-2 | <decision> | <why> | 2 |
183
+
184
+ <Any evidence that materially supports a decision, with file paths or sources.>
185
+
186
+ ## 3. Open / Deferred Questions
187
+
188
+ | # | Question | Why deferred | Reopens when |
189
+ |---|----------|--------------|--------------|
190
+ | O-1 | <question> | <reason> | <trigger> |
191
+
192
+ <Write "None — frontier empty" when nothing is deferred.>
193
+
194
+ ## 4. Decision / Recommendation
195
+
196
+ **Recommended next step:** <one step, named>
197
+
198
+ - `researcher` — when at least one open question needs external evidence. Pass this spike path as the required input.
199
+ - `implementer` — when the scope is settled and only planning remains.
200
+ - `architect` — when the shape of the system, not the task list, is the open problem.
201
+ - `coder` or `designer` — only when a prototype request below must be settled first.
202
+
203
+ <One short paragraph explaining the choice.>
204
+
205
+ ## 5. External Resources
206
+
207
+ | Source | What it established |
208
+ |--------|---------------------|
209
+ | `<path or URL>` | <fact or decision it informed> |
210
+
211
+ <Write "None" when no external sources were used.>
212
+
213
+ ## 6. Decision Trail
214
+
215
+ | When | Action | Result |
216
+ |------|--------|--------|
217
+ | Round 1 | Asked Q1–Q3 | Q1/Q2 settled, Q3 deferred |
218
+ | Round 2 | Asked Q4 | Settled; frontier empty |
219
+
220
+ **Status history:** `drafting` → `complete` on <YYYY-MM-DD>.
221
+ ```
222
+
223
+ The four required contents are non-negotiable: problem statement, decisions settled with rationale, open/deferred questions, and a recommended next step. Never write a spike that omits any of them — write "None" explicitly instead.
224
+
225
+ Rules for the artifact:
226
+
227
+ - **Do not overwrite silently.** If `docs/spike-<feature>.md` already exists, read it first and update only the sections this session settled. Append to its status history; never discard prior decisions.
228
+ - **Mark the draft superseded.** Prepend this line to the draft and leave the file in place: `> **SUPERSEDED** — replaced by docs/spike-<feature>.md on <YYYY-MM-DD>.` You cannot delete files; do not try.
229
+ - **Hand the path back.** Return `outputPath` to the orchestrator and state whether `researcher` is required.
230
+ - **A spike is not approval.** It records what was decided, not permission to implement.
231
+
232
+ ## Prototype Hand-Off
233
+
234
+ Some questions cannot be settled by reading. Never build, run, or test code yourself — you have no command-execution permission and no shell.
235
+
236
+ When a question can only be settled empirically, write exactly:
237
+
238
+ ```text
239
+ prototype needed: <the question>
240
+ ```
241
+
242
+ Then state the branch:
243
+
244
+ - **logic** — the question is about a state model or data flow; the orchestrator delegates to `coder`.
245
+ - **UI** — the question is about look and feel; the orchestrator delegates to `designer`.
246
+
247
+ Record the request under `## Prototype Requests` in the draft. Keep asking the rest of the frontier: a prototype request blocks only the questions that depend on its result, so continue with every independent question in the same round.
248
+
249
+ When the orchestrator returns prototype evidence, record it under `## Evidence` with the branch and the observed result, then recompute the frontier.
250
+
251
+ ## Hard Boundaries
252
+
253
+ - **Write only three things:** the draft file, the final spike document, and — through `domain-modeling` — `GLOSSARY.md` / `docs/adr/` entries when a term or decision has actually settled. Create those lazily; never scaffold them in advance.
254
+ - **Never edit source code**, tests, configuration, plans, orchestrator files, or other agents' specs. Not even a one-line fix discovered during scoping.
255
+ - **Never run commands.** No shell, no builds, no tests, no package installs, no git operations.
256
+ - **Never delegate.** You have no agent permission. Fact-finding is `read`/`search`; prototyping is the orchestrator's hand-off.
257
+ - **Never invoke `grill-me` or `grill-with-docs`.** They are model-disabled routers. Use `grilling`, plus `domain-modeling` when needed.
258
+ - **Never invent answers** to keep a round moving, and never treat silence as consent.
259
+ - **Never put secrets, credentials, or customer data in the draft or spike.** Record paths and decisions, not environment values.
260
+
261
+ ## Check Knowledge
262
+
263
+ Do this first in every round, before step 1 of the Round Protocol. Scoping is a decision-making task, so it uses the same 3-layer knowledge-retrieval protocol as every other pipeline agent: read `.agents/instructions/knowledge-retrieval.instructions.md` and follow it. The protocol is **mandatory to attempt, graceful to fail** — no layer is a hard dependency.
264
+
265
+ 1. **Memory bank first.** Use `memory_bank_memory_search` for semantic context retrieval and `memory_bank_memory_get` for full file reads. Search for prior scoping decisions, deferred questions, and spikes for this feature, then read the matching files in full before framing questions. Memory-bank evidence is the cheapest way to avoid asking a question the project already answered.
266
+ 2. **Skim learned knowledge.** Read `.agents/instructions/learned-knowledge.instructions.md` for session notes on scoping, grilling, spike authoring, and agent tuning that match this round's problem.
267
+ 3. **Query the cross-project knowledgebase.** Call `knowledgebase_knowledgebase_search` with a scoping-relevant query (for example "feature scoping question sequencing", "spike document conventions", or "deferred decision tracking"), wrapped in graceful failure:
268
+ - **Success** — note "knowledgebase_search accessed — N results returned." and use the results to sharpen the question set.
269
+ - **Error / unavailable** — note "knowledgebase_search skipped (PG vector unavailable)." Do NOT block, fail, retry, or stall the round; proceed with memory bank and learned knowledge only.
270
+ 4. **Fall back to project files.** Read specific source files with `read`/`search` to settle factual questions, as step 4 of the Round Protocol already requires.
271
+
272
+ The retrieval outcome belongs in the round's return summary: report it on the `Knowledge:` line so the orchestrator can see whether Layer 3 contributed without opening the draft.
273
+
274
+ Retrieval informs the frontier; it does not answer questions for you. Record anything it establishes under `## Evidence` in the draft with its source. A knowledgebase hit is never a substitute for a decision the requester must make.
275
+
276
+ ## Question-Batch Sizing
277
+
278
+ - Ask **3 to 7 questions per round**. Seven is a hard cap.
279
+ - If the frontier has more than 7, ask the 7 with the highest leverage — the ones that unblock the most downstream questions — and leave the rest for the next round.
280
+ - If only 1 or 2 independent questions are ready, ask those. Do not pad the round to reach 3, and do not hold a ready question back.
281
+ - One logical decision per question. Split compound questions ("should we cache, and where?") into separate questions rather than nesting them.
282
+ - Keep each question body short enough to answer without scrolling: the decision, the real alternatives, and the consequence of each.
283
+
284
+ ## Return Format
285
+
286
+ End every round with a compact hand-back to the orchestrator:
287
+
288
+ ```text
289
+ Status: QUESTIONS (round N) | TERMINATED
290
+ Draft: <draftPath>
291
+ Output: <outputPath, only when terminated>
292
+ Questions asked: Q1..Qn
293
+ Open after this round: <count>
294
+ Prototype requests: <none | the exact "prototype needed:" lines with branch>
295
+ Knowledge: <knowledgebase_search accessed — N results | skipped (PG vector unavailable)>
296
+ Next action: <wait for answers | hand <outputPath> to researcher | proceed to implementer>
297
+ ```
298
+
299
+ When the status is `QUESTIONS`, stop there. When it is `TERMINATED`, the spike document is the deliverable.
@@ -9,7 +9,6 @@ permission:
9
9
  write: allow
10
10
  "memory-bank/*": allow
11
11
  "knowledgebase/*": allow
12
- model: deepseek/deepseek-v4-flash
13
12
  ---
14
13
 
15
14
  # Tracker - Documentation Recorder
@@ -8,7 +8,6 @@ permission:
8
8
  execute: allow
9
9
  "memory-bank/*": allow
10
10
  "knowledgebase/*": allow
11
- model: deepseek/deepseek-v4-flash
12
11
  ---
13
12
 
14
13
  # Unit Tester - Test Coverage
package/AGENTS.md CHANGED
@@ -6,13 +6,13 @@ This project includes AI-assisted development configuration distributed through
6
6
 
7
7
  - `.agents/instructions/` — Language, framework, and workflow instructions
8
8
  - `.agents/skills/` — Reusable skill definitions for task-based workflows
9
- - `.agents/agents/` — Specialized agent definitions for planning, research, and implementation
9
+ - `.opencode/agents/` — Specialized agent definitions for planning, research, and implementation
10
10
  - `.agents/prompts/` — Reusable prompt templates
11
11
 
12
12
  ## Core Workflow
13
13
 
14
14
  1. **Understand before acting** — Read relevant instructions from `.agents/instructions/` before working with specific technologies
15
- 2. **Plan before implementing** — Use `.agents/agents/plan.agent.md` or `.agents/agents/implementation-plan.agent.md` patterns for structured work
15
+ 2. **Plan before implementing** — Narrow underspecified work with the `scope` agent first, then use the `.opencode/agents/plan.agent.md` (optional deep planning) or `.opencode/agents/implementer.agent.md` patterns for structured work
16
16
  3. **Track progress** — Update `memory-bank/activeContext.md` and `memory-bank/progress.md` after each task (see `.agents/instructions/task-implementation.instructions.md`)
17
17
  4. **Maintain context** — Keep memory bank files updated (see `.agents/instructions/memory-bank.instructions.md`)
18
18
 
@@ -41,7 +41,7 @@ This project includes AI-assisted development configuration distributed through
41
41
 
42
42
  ## Available Skills
43
43
 
44
- Skills in `.agents/skills/` provide structured workflows for common tasks. Load them when the task matches the skill's purpose:
44
+ All 34 skills installed in `.agents/skills/` are listed below. Load one when the task matches its purpose. The five scoping skills (`domain-modeling`, `grill-me`, `grill-with-docs`, `grilling`, `prototype`) are described in detail in [`## Agent skills`](#agent-skills).
45
45
 
46
46
  - `architecture-blueprint-generator` — Generate project architecture blueprints
47
47
  - `conventional-commit` — Create conventional commit messages
@@ -69,6 +69,14 @@ Skills in `.agents/skills/` provide structured workflows for common tasks. Load
69
69
  - `caveman-stats` — Tracking and statistics for caveman usage
70
70
  - `cavecrew` — Multi-agent coordination for caveman skills
71
71
  - `compress` — General compression utilities
72
+ - `domain-modeling` — Build and sharpen the project's domain model (`GLOSSARY.md`, ADRs)
73
+ - `graphify-framework-aware` — Exclude framework boilerplate from graphify knowledge graphs
74
+ - `grill-me` — Human-invoked router for a relentless interview (calls `grilling`)
75
+ - `grill-with-docs` — Human-invoked router for the interview plus glossary/ADR writing
76
+ - `grilling` — Stress-test a plan or idea with rounds of numbered questions
77
+ - `lighthouse-cli` — Run Lighthouse performance, accessibility, and SEO audits
78
+ - `memory-search` — Semantic vector search over the memory bank
79
+ - `prototype` — Build a throwaway prototype to answer a design question
72
80
 
73
81
  ## Available Prompts
74
82
 
@@ -79,13 +87,44 @@ Prompts in `.agents/prompts/` can be invoked directly:
79
87
  - `playwright-generate-test` — Generate Playwright tests
80
88
  - `documentation-writer` — Write documentation (Diataxis framework)
81
89
 
90
+ ## Agent skills
91
+
92
+ Five skills installed from `mattpocock/skills` (pinned at `v1.3.1`) drive scoping and design work. They sit beside the other skills in `.agents/skills/`; this section explains when to reach for them and what they pair with.
93
+
94
+ ### Skills
95
+
96
+ | Skill | Path | Use it when |
97
+ |-------|------|-------------|
98
+ | `grilling` | `.agents/skills/grilling/SKILL.md` | A plan, decision, or idea needs stress-testing, or a request is too vague to plan. Works a design tree in rounds: the current frontier is asked as numbered questions, each with a recommended answer. |
99
+ | `grill-me` | `.agents/skills/grill-me/SKILL.md` | You want the same interview with no repository context and no document output — a stateless, one-shot entry point. |
100
+ | `grill-with-docs` | `.agents/skills/grill-with-docs/SKILL.md` | You want the interview plus the written record — the glossary and ADRs are created as decisions settle. |
101
+ | `domain-modeling` | `.agents/skills/domain-modeling/SKILL.md` | Project terminology or an architectural decision is being introduced or changed and `GLOSSARY.md` or an ADR needs to capture it. |
102
+ | `prototype` | `.agents/skills/prototype/SKILL.md` | A design question can only be settled by running throwaway code — the logic branch for state models and data flow, the UI branch for look and feel. |
103
+
104
+ `grill-me` and `grill-with-docs` are **human-invoked routers**: both set `disable-model-invocation: true`, so an agent cannot load them. Agents invoke `grilling` directly, plus `domain-modeling` when a term or decision actually settles.
105
+
106
+ ### Scope agent
107
+
108
+ `.opencode/agents/scope.agent.md` is the front door for underspecified work. It runs `grilling` in rounds against a single draft file, emits each round's frontier as numbered questions with a recommended answer per question, and stops when the frontier is empty or the remaining unknowns are explicitly deferred.
109
+
110
+ It terminates by writing `docs/spike-<feature>.md` — the spike document `.opencode/agents/researcher.agent.md` already expects as its input. From there the work continues to `researcher` (open questions need evidence), `implementer` (scope settled, planning remains), or `architect` (the shape of the system is the open problem).
111
+
112
+ The agent has no command-execution permission: it never builds, runs, or tests code. When a question can only be settled empirically it emits `prototype needed: <question>` with a branch, and that work is handed off to `coder` (logic) or `designer` (UI).
113
+
114
+ ### Domain docs
115
+
116
+ `.agents/config/domain.md` declares where domain documentation lives: `GLOSSARY.md` at the repository root and ADRs in `docs/adr/`, numbered `0001-slug.md` onwards — the single-context layout.
117
+ The `domain-modeling` skill reads it before exploring the codebase; when the file or the docs it names are absent, the skill proceeds silently and creates them lazily, only once a term or decision has actually been settled.
118
+
82
119
  ## Available Agent Workflows
83
120
 
84
- These agent workflows (from `.agents/agents/`) define specialized modes of operation. Invoke the relevant workflow at the start of a task by stating which mode you want to activate.
121
+ These agent workflows (from `.opencode/agents/`) define specialized modes of operation. Invoke the relevant workflow at the start of a task by stating which mode you want to activate.
85
122
 
86
123
  ### Plan Mode — Strategic Planning & Architecture
87
124
 
88
- Use this when starting a new feature, refactoring, or any non-trivial change. Follow this sequence:
125
+ Underspecified work does not start here. The default front door is the **`scope` agent** (see [`## Agent skills`](#agent-skills)): it narrows the request through grilling rounds and writes `docs/spike-<feature>.md`, which is handed to `researcher` when open questions need evidence, or to `implementer` when only planning remains.
126
+
127
+ `.opencode/agents/plan.agent.md` remains available as an **optional deep-planning mode** for work that is already scoped but needs a step-by-step plan. It is not deleted and not deprecated — it is demoted in the default flow only. When you use it, follow this sequence:
89
128
 
90
129
  1. **Understand the Goal** — Ask clarifying questions about requirements and goals
91
130
  2. **Explore Context** — Examine relevant files, components, and systems that will be affected
package/README.md CHANGED
@@ -52,7 +52,7 @@ npx ai-workflow-setup --help # Show all options
52
52
 
53
53
  ## What This Package Does
54
54
 
55
- - **29 specialized AI skills**, framework instructions, and prompt templates (`.agents/`)
55
+ - **34 specialized AI skills**, framework instructions, and prompt templates (`.agents/`)
56
56
  - **Smart agent frameworks** — Plan Mode, Implementation Plans, Research Spikes
57
57
  - **Multi-agent orchestrator** — dynamic pipelines with 10+ specialized sub-agents
58
58
  - **TDD orchestrator** — strict RED→GREEN→REFACTOR/VERIFY pipeline (90% coverage gate)
@@ -84,7 +84,7 @@ Post-install, your project receives this structure:
84
84
  ```text
85
85
  .agents/
86
86
  ├── instructions/ # Framework, workflow, and security guidance
87
- ├── skills/ # 29 specialized AI skills
87
+ ├── skills/ # 34 specialized AI skills
88
88
  └── prompts/ # Reusable prompt templates
89
89
  .opencode/agents/ # Orchestrator + specialized sub-agents
90
90
  .github/workflows/ # CI/CD automation (excluded from sync)
@@ -99,6 +99,7 @@ AGENTS.md # Master instruction file with agent guidance
99
99
  | Agent | File | Role |
100
100
  | --- | --- | --- |
101
101
  | Orchestrator | `.opencode/agents/orchestrator/orchestrator.agent.md` | Master — analyzes requests, builds pipelines, delegates |
102
+ | Scope | `.opencode/agents/scope.agent.md` | Conditional front door for underspecified requests — grilling rounds, then a spike doc |
102
103
  | Researcher | `.opencode/agents/researcher.agent.md` | Technical investigation, library evaluation |
103
104
  | Architect | `.opencode/agents/architect.agent.md` | System design, component architecture |
104
105
  | Implementer | `.opencode/agents/implementer.agent.md` | Translates designs into implementation plans |
@@ -121,6 +122,7 @@ Invoke the orchestrator with `@orchestrator` followed by your task:
121
122
  ```
122
123
 
123
124
  - **Run flow:** auto-bootstraps architecture on first run → builds a pipeline → executes agents sequentially (confirm/skip each step, or enable auto-confirm) → tracker documents to `docs/tracker-log.md` → persists new knowledge.
125
+ - **Scope step (conditional, runs first):** inserted at the front of the pipeline only when the request is underspecified — `scope` runs grilling rounds against a draft file, writes `docs/spike-<feature>.md`, then hands off to `researcher` or `implementer`. Always interactive (auto-confirm cannot skip it) and has **no command-execution permission** — prototypes are delegated to `coder` (logic) or `designer` (UI).
124
126
  - **First run only:** runs the architecture-blueprint-generator skill to detect tech stack/patterns, writing context to `docs/.architecture-context.md` and `.agents/instructions/learned-knowledge.instructions.md`; later runs skip this.
125
127
 
126
128
  ### MCP Tooling
@@ -222,6 +224,7 @@ All memory-bank files use YAML frontmatter (`id`, `title`, `updated`, `tags`, `e
222
224
 
223
225
  ## Featured Skills
224
226
 
227
+ - **Feature scoping:** `grilling`, `grill-me`, `grill-with-docs`, `domain-modeling`, `prototype` — narrow underspecified requests into a spike; `GLOSSARY.md` and `docs/adr/` locations come from `.agents/config/domain.md`
225
228
  - **Workflow automation:** `architecture-blueprint-generator`, `create-implementation-plan`, `create-readme`, `context-map`, `graphify` (global skill), `graphify-framework-aware`
226
229
  - **Development tools:** `playwright-explore-website`, `playwright-generate-test`, `github-issues`, `gh-cli`, `polygot-test-agent`, `microsoft-docs`
227
230
  - **Token & efficiency:** `caveman`, `caveman-compress`, `compress`, `caveman-commit`, `cavecrew`, `caveman-stats`
@@ -229,7 +232,7 @@ All memory-bank files use YAML frontmatter (`id`, `title`, `updated`, `tags`, `e
229
232
 
230
233
  ## Versioning
231
234
 
232
- Husky auto-bumps versions on every commit: minor by default (`1.2.0 → 1.3.0`), patch resets to 0 on each bump, and major changes reset to `<major>.0.0`. No manual version management required.
235
+ Husky auto-bumps versions on every commit: minor by default (`1.2.0 → 1.3.0`), patch resets to 0 on each bump, and major changes reset to `<major>.0.0`. No manual version management required. Set `SKIP_BUMP=1` (e.g. `SKIP_BUMP=1 git commit ...`) to skip the bump for that commit — useful for doc-only changes.
233
236
 
234
237
  ## Publish Flow
235
238
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abarcenas/ai-workflow-template",
3
- "version": "1.44.0",
3
+ "version": "1.46.0",
4
4
  "description": "A comprehensive template repository for AI-assisted development workflows using GitHub Copilot. This template provides a structured approach to leveraging AI assistance through pre-configured skills, prompts, agents, and coding standards.",
5
5
  "main": "index.js",
6
6
  "bin": {
@@ -6,6 +6,13 @@ import { fileURLToPath } from 'url'
6
6
  const __dirname = dirname(fileURLToPath(import.meta.url))
7
7
  const pkgPath = resolve(__dirname, '../package.json')
8
8
 
9
+ // Opt-out: SKIP_BUMP=1 keeps the current version (e.g. when a batch of commits
10
+ // is one logical change set and should yield a single bump).
11
+ if (process.env.SKIP_BUMP) {
12
+ console.log('SKIP_BUMP set — version bump skipped')
13
+ process.exit(0)
14
+ }
15
+
9
16
  const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'))
10
17
  const current = pkg.version
11
18
  const [curMajor, curMinor] = current.split('.').map(Number)