macca-method 1.1.0 → 2.0.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 (56) hide show
  1. package/.agents/legacy-payloads.json +22 -0
  2. package/{skills-lock.json → .agents/macca-lock.json} +3 -2
  3. package/.agents/macca-managed-skills.txt +2 -1
  4. package/.agents/skills/_shared/references/additional-skills.md +30 -0
  5. package/.agents/skills/_shared/references/brainstorm-session.md +42 -11
  6. package/.agents/skills/_shared/references/config-mutation.md +25 -0
  7. package/.agents/skills/_shared/references/finding-format.md +25 -0
  8. package/.agents/skills/_shared/references/fix-mode.md +39 -0
  9. package/.agents/skills/_shared/references/human-loop.md +3 -1
  10. package/.agents/skills/_shared/references/implementation-principles.md +19 -0
  11. package/.agents/skills/_shared/references/invocation-policy.md +39 -0
  12. package/.agents/skills/_shared/references/language-config.md +15 -0
  13. package/.agents/skills/_shared/references/output-ownership.md +4 -2
  14. package/.agents/skills/_shared/references/runtime-config.md +7 -168
  15. package/.agents/skills/_shared/references/skill-catalog.md +34 -0
  16. package/.agents/skills/_shared/scripts/validate-skills.py +106 -4
  17. package/.agents/skills/add-feature/SKILL.md +10 -7
  18. package/.agents/skills/brainstorm-api/SKILL.md +49 -194
  19. package/.agents/skills/brainstorm-api/assets/api.template.md +147 -0
  20. package/.agents/skills/brainstorm-architecture/SKILL.md +22 -127
  21. package/.agents/skills/brainstorm-architecture/assets/architecture.template.md +135 -0
  22. package/.agents/skills/brainstorm-prd/SKILL.md +19 -102
  23. package/.agents/skills/brainstorm-prd/assets/PRD.template.md +106 -0
  24. package/.agents/skills/brainstorm-rules/SKILL.md +17 -151
  25. package/.agents/skills/brainstorm-rules/assets/rules.template.md +127 -0
  26. package/.agents/skills/brainstorm-schema/SKILL.md +49 -115
  27. package/.agents/skills/brainstorm-schema/assets/schema.template.md +109 -0
  28. package/.agents/skills/brainstorm-styleguide/SKILL.md +19 -134
  29. package/.agents/skills/brainstorm-styleguide/assets/StyleGuide.template.md +147 -0
  30. package/.agents/skills/brainstorm-task/SKILL.md +22 -107
  31. package/.agents/skills/brainstorm-task/assets/Task.template.md +113 -0
  32. package/.agents/skills/bug-fix/SKILL.md +45 -54
  33. package/.agents/skills/code-review/SKILL.md +26 -19
  34. package/.agents/skills/code-review/references/review-checklist.md +24 -26
  35. package/.agents/skills/developer/SKILL.md +25 -39
  36. package/.agents/skills/developer/references/close-phase.md +25 -0
  37. package/.agents/skills/developer/references/execute-task.md +69 -0
  38. package/.agents/skills/developer/references/onboarding.md +47 -0
  39. package/.agents/skills/help/SKILL.md +12 -13
  40. package/.agents/skills/meet/SKILL.md +168 -0
  41. package/.agents/skills/quick-dev/SKILL.md +28 -32
  42. package/.agents/skills/release-readiness/SKILL.md +149 -0
  43. package/.agents/skills/spec-audit/SKILL.md +37 -22
  44. package/.agents/skills/spec-compliance/SKILL.md +41 -40
  45. package/.agents/skills/spec-init/SKILL.md +29 -14
  46. package/README.md +171 -122
  47. package/bin/macca-method.js +779 -85
  48. package/flow.webp +0 -0
  49. package/image-macca-method.webp +0 -0
  50. package/package.json +12 -5
  51. package/scripts/run-skill-validator.js +24 -0
  52. package/scripts/test-install.js +398 -0
  53. package/scripts/test-upgrade-legacy.js +107 -0
  54. package/scripts/validate-skill-behavior.js +124 -0
  55. package/.agents/skills/developer/references/execution-workflow.md +0 -322
  56. package/.agents/skills/rapat/SKILL.md +0 -172
@@ -0,0 +1,124 @@
1
+ #!/usr/bin/env node
2
+
3
+ "use strict";
4
+
5
+ const fs = require("node:fs");
6
+ const path = require("node:path");
7
+
8
+ const root = path.resolve(__dirname, "..");
9
+ const skillsDir = path.join(root, ".agents", "skills");
10
+ const manifestPath = path.join(root, ".agents", "macca-managed-skills.txt");
11
+ const invocationPath = path.join(skillsDir, "_shared", "references", "invocation-policy.md");
12
+ const issues = [];
13
+
14
+ function read(relativePath) {
15
+ return fs.readFileSync(path.join(root, relativePath), "utf8");
16
+ }
17
+
18
+ function requireText(file, text, message) {
19
+ if (!file.includes(text)) issues.push(message);
20
+ }
21
+
22
+ const managed = fs.readFileSync(manifestPath, "utf8").split(/\r?\n/).map((line) => line.trim()).filter(Boolean);
23
+ const publicSkills = fs.readdirSync(skillsDir, { withFileTypes: true })
24
+ .filter((entry) => entry.isDirectory() && entry.name !== "_shared" && fs.existsSync(path.join(skillsDir, entry.name, "SKILL.md")))
25
+ .map((entry) => entry.name)
26
+ .sort();
27
+ const manifestSkills = managed.filter((name) => name !== "_shared").sort();
28
+
29
+ if (JSON.stringify(publicSkills) !== JSON.stringify(manifestSkills)) {
30
+ issues.push(`manifest/folder mismatch: folders=${publicSkills.join(",")} manifest=${manifestSkills.join(",")}`);
31
+ }
32
+
33
+ const invocation = fs.readFileSync(invocationPath, "utf8");
34
+ for (const skill of publicSkills) {
35
+ if (!invocation.includes(`\`${skill}\``)) issues.push(`invocation policy missing ${skill}`);
36
+ }
37
+
38
+ const meet = read(".agents/skills/meet/SKILL.md");
39
+ requireText(meet, "exactly one contribution block", "meet must limit each selected persona to one contribution");
40
+ requireText(meet, "No persona gets a second response", "meet must prohibit second persona turns");
41
+
42
+ const quick = read(".agents/skills/quick-dev/SKILL.md");
43
+ requireText(quick, "active report-first gate", "quick-dev must not intercept active report-first approval");
44
+
45
+ for (const skill of ["bug-fix", "code-review", "spec-compliance", "spec-audit"]) {
46
+ const body = read(`.agents/skills/${skill}/SKILL.md`);
47
+ requireText(body, "fix-mode.md", `${skill} must load the canonical fix-mode contract`);
48
+ }
49
+
50
+ const bugFix = read(".agents/skills/bug-fix/SKILL.md");
51
+ requireText(bugFix, "Always wait for explicit user approval before the first code change", "bug-fix must require explicit approval before first code change");
52
+ requireText(bugFix, "Validate Regression Prevention", "bug-fix must validate regression-prevention changes before recording the bug");
53
+
54
+ const release = read(".agents/skills/release-readiness/SKILL.md");
55
+ requireText(release, "report-only", "release-readiness must remain report-only");
56
+ requireText(release, "Never deploys", "release-readiness description must prohibit deployment");
57
+
58
+ const brainstormSession = read(".agents/skills/_shared/references/brainstorm-session.md");
59
+ for (const depth of ["quick", "standard", "critical"]) {
60
+ requireText(brainstormSession, `\`${depth}\``, `brainstorm session must define ${depth} discovery depth`);
61
+ }
62
+ requireText(brainstormSession, "escalate the active depth to `critical`", "brainstorm session must escalate saved depth when current evidence is critical");
63
+
64
+ const requiredAssets = [
65
+ ["brainstorm-prd", "PRD.template.md"],
66
+ ["brainstorm-architecture", "architecture.template.md"],
67
+ ["brainstorm-schema", "schema.template.md"],
68
+ ["brainstorm-api", "api.template.md"],
69
+ ["brainstorm-styleguide", "StyleGuide.template.md"],
70
+ ["brainstorm-rules", "rules.template.md"],
71
+ ["brainstorm-task", "Task.template.md"]
72
+ ];
73
+ for (const [skill, asset] of requiredAssets) {
74
+ const assetPath = path.join(skillsDir, skill, "assets", asset);
75
+ if (!fs.existsSync(assetPath)) issues.push(`${skill} missing deferred output asset ${asset}`);
76
+ const body = read(`.agents/skills/${skill}/SKILL.md`);
77
+ requireText(body, `assets/${asset}`, `${skill} must defer-load ${asset}`);
78
+ }
79
+
80
+ requireText(read(".agents/skills/spec-init/SKILL.md"), "## Missing Decisions", "spec-init must record missing decisions");
81
+ requireText(read(".agents/skills/brainstorm-task/SKILL.md"), "Definition of Done", "brainstorm-task must derive phase Definition of Done");
82
+ requireText(read(".agents/skills/developer/SKILL.md"), "references/execute-task.md", "developer must use state-based task workflow");
83
+ requireText(read(".agents/skills/spec-audit/SKILL.md"), "skill-catalog.md", "framework audit must use compact skill catalog first");
84
+
85
+ const apiAsset = read(".agents/skills/brainstorm-api/assets/api.template.md");
86
+ for (const marker of [
87
+ "## REST Section",
88
+ "## GraphQL Section",
89
+ "## RPC / tRPC Section",
90
+ "## Event-Driven Section",
91
+ "Retryable",
92
+ "Client Action"
93
+ ]) {
94
+ requireText(apiAsset, marker, `api template missing ${marker}`);
95
+ }
96
+
97
+ const schemaAsset = read(".agents/skills/brainstorm-schema/assets/schema.template.md");
98
+ for (const marker of [
99
+ "## Relational Section",
100
+ "## Document Section",
101
+ "## Key-Value Section",
102
+ "## Graph Section",
103
+ "## Event Store Section"
104
+ ]) {
105
+ requireText(schemaAsset, marker, `schema template missing ${marker}`);
106
+ }
107
+
108
+ const taskAsset = read(".agents/skills/brainstorm-task/assets/Task.template.md");
109
+ requireText(taskAsset, "## Phase 2: [Phase Name]", "task template missing a second phase example");
110
+ requireText(taskAsset, "Repeat the `Phase Definition of Done` block", "task template must require Definition of Done for every phase");
111
+
112
+ for (const skill of publicSkills) {
113
+ const body = read(`.agents/skills/${skill}/SKILL.md`);
114
+ if (body.includes("../_shared/references/runtime-config.md")) {
115
+ issues.push(`${skill} still loads monolithic runtime-config.md`);
116
+ }
117
+ }
118
+
119
+ if (issues.length) {
120
+ process.stderr.write(`Behavioral contract findings:\n${issues.map((issue) => `- ${issue}`).join("\n")}\n`);
121
+ process.exit(1);
122
+ }
123
+
124
+ process.stdout.write(`OK: ${publicSkills.length} skill behavioral contracts validated\n`);
@@ -1,322 +0,0 @@
1
- # Developer Execution Workflow
2
-
3
- ## Table of Contents
4
-
5
- 1. Step 0b - Check Additional Skills & MCP
6
- 2. Step 0c - Set Developer Scope
7
- 3. Step 1b - Choose Work Mode
8
- 4. Step 2 - Choose Relevant Specs
9
- 5. Step 3 - Execute Tasks One by One
10
- 6. Step 4 - After All Phase Tasks Are Complete
11
- 7. Step 5 - Project Complete
12
-
13
- ## Step 0b - Check Additional Skills & MCP
14
-
15
- ### Additional Skills
16
-
17
- Check `additionalSkills` in `developer-config.json` first. If it exists, skip the question.
18
-
19
- If it does not exist, ask once:
20
- > "Do you use additional skills for this project? For example, framework-specific skills such as Laravel, Django, or Rails?"
21
-
22
- **If no:** continue to the MCP section below.
23
-
24
- **If yes:** ask:
25
- > "How many? Name each one and briefly explain its purpose."
26
-
27
- For each skill named by the user:
28
-
29
- 1. **Search the workspace first** in this order:
30
- - `.agents/skills/{name}/SKILL.md`
31
- - `.github/skills/{name}/SKILL.md`
32
- - `.opencode/skill/{name}/SKILL.md`
33
- - Any file named `{name}.md` or `SKILL.md` inside a folder matching the skill name
34
- 2. **If found:** fill the path automatically and tell the user: `"Found {path}. Using it."`
35
- 3. **If not found:** ask once per skill: `"I could not find SKILL.md for **{name}**. Where is it? (for example .agents/skills/name/SKILL.md) - or type 'skip' to register it without a path for now."`
36
- 4. Save it to `.agents/developer-config.json` using the canonical `paths` format from `../_shared/references/runtime-config.md`. Still read legacy fields such as `path`, `githubPath`, and `opencodePath`.
37
- 5. **Coding rule:** When writing code relevant to a listed skill, read that skill's `SKILL.md` first. This is mandatory. If a relevant skill has no path, note that it cannot be auto-loaded.
38
-
39
- ### Available MCPs
40
-
41
- Check `availableMCPs` in `developer-config.json` first. If it exists, skip the question.
42
-
43
- If it does not exist, ask once:
44
- > "Which MCPs are available in your workspace? (for example context7, supabase, github - or type 'none')"
45
-
46
- Save the answer to `.agents/developer-config.json`:
47
-
48
- ```json
49
- { "availableMCPs": ["context7", "supabase"] }
50
- ```
51
-
52
- If it is already configured, show: `[MCPs: context7, supabase] - tell me now if you want to change it.`
53
-
54
- **Usage rule:** Use only MCPs listed in `availableMCPs`. Skip silently if none of them help the current task.
55
-
56
- ---
57
-
58
- ## Step 0c - Set Developer Scope
59
-
60
- Check `developerPreferences.scope` in `developer-config.json` first. If it exists, skip the question. Show: `[Scope: frontend / backend / fullstack] - tell me now if you want to change it.`
61
-
62
- If it is missing, ask once:
63
-
64
- ```text
65
- What is your scope on this project?
66
-
67
- A) Frontend only - I do not touch backend/API/database code
68
- B) Backend only - I do not touch UI/frontend code
69
- C) Fullstack - I work across the whole stack
70
- ```
71
-
72
- Save to `.agents/developer-config.json`:
73
- - A -> `developerPreferences.scope = "frontend"`
74
- - B -> `developerPreferences.scope = "backend"`
75
- - C -> `developerPreferences.scope = "fullstack"`
76
-
77
- ## Step 1b - Choose Work Mode
78
-
79
- Check `.agents/developer-config.json` for `developerPreferences.workMode`:
80
- - If it exists, skip the question. Show: `[A/B] [mode name]. Using this for this session. Tell me now if you want to change it.`
81
- - If it is missing, offer both options and save the choice while preserving other fields:
82
-
83
- ```text
84
- Before I start, what do you prefer?
85
-
86
- A) Code now - start immediately
87
- Best for: small phases, clear tasks, or no pre-review needed
88
-
89
- B) Plan first, then code - write a plan for your review first
90
- Best for: larger phases, high risk of going in the wrong direction, or when you want a scope review
91
-
92
- Choose A or B.
93
- ```
94
-
95
- ### A or workMode="direct"
96
-
97
- Save `workMode = "direct"` to the config, then go to **Step 2**.
98
-
99
- ### B or workMode="plan-first"
100
-
101
- Save `workMode = "plan-first"`, then:
102
-
103
- 1. Read the relevant specs (especially `project-context/architecture.md` and `project-context/PRD.md`).
104
- 2. Create a plan file at `project-context/plans/phase-[N]-[slug].md` with this header:
105
- ```
106
- ---
107
- status: review
108
- phase: [N]
109
- created: [YYYY-MM-DD]
110
- ---
111
- ```
112
- 3. Review the plan internally against `Task.md`, `architecture.md`, and `rules.md`.
113
- 4. Show the draft to the user and wait for `start` before coding.
114
- 5. When the user types `start`, update the plan header: `status: review` -> `status: in-progress`.
115
-
116
- Use this minimum plan template:
117
-
118
- ```markdown
119
- ---
120
- status: review
121
- phase: [N]
122
- created: [YYYY-MM-DD]
123
- ---
124
-
125
- # Phase [N] Plan - [Name]
126
-
127
- ## Goal
128
- - [phase goal]
129
-
130
- ## Scope
131
- - [main scope]
132
-
133
- ## Files
134
- - `[path/file]` - [why it is touched]
135
-
136
- ## Risks
137
- - [risk 1]
138
-
139
- ## Validation
140
- - [main test/check]
141
- ```
142
-
143
- ## Step 2 - Choose Relevant Specs
144
-
145
- **Preflight:** Before coding, verify that `project-context/` contains:
146
- - `architecture.md` -> **required**. If it is missing, **stop** and ask the user to run `brainstorm-architecture` first.
147
- - `rules.md` -> optional. If it is missing, note that code standards cannot be verified in this phase.
148
- - Others (`schema.md`, `api.md`, `StyleGuide.md`, `PRD.md`) -> optional. If the task needs them and they are missing, warn and note the verification gap.
149
-
150
- **After confirming the specs exist**, read only what the task needs:
151
-
152
- | Condition | Read |
153
- |-----------|------|
154
- | All tasks (always) | `project-context/rules.md`, `project-context/architecture.md` |
155
- | Task touches database/models | + `project-context/schema.md` |
156
- | Task touches API/service endpoints | + `project-context/api.md` |
157
- | Task touches UI/pages/components | + `project-context/StyleGuide.md` |
158
- | Feature/requirement is unclear | + `project-context/PRD.md` |
159
-
160
- **Scope enforcement:** After choosing specs, read `developerPreferences.scope` from `developer-config.json` and use `architecture.md` as the primary boundary. The folder list below is only a fallback when `architecture.md` is not specific enough:
161
-
162
- | Scope | Restriction |
163
- |-------|-------------|
164
- | `frontend` | Do not write or modify backend files per `architecture.md`; fallback: avoid `routes/`, `controllers/`, `services/`, `repositories/`, `migrations/`, `database/`. If the task requires backend changes, stop and tell the user. |
165
- | `backend` | Do not write or modify frontend files per `architecture.md`; fallback: avoid `components/`, `pages/`, `views/`, `styles/`, `public/`. If the task requires frontend changes, stop and tell the user. |
166
- | `fullstack` | No restriction. |
167
- | *(missing)* | Treat it as `fullstack`. |
168
-
169
- **When reading `rules.md`:** scan `[FORBIDDEN]` first before any coding. If the section does not exist, continue without blocking.
170
-
171
- ## Step 3 - Execute Tasks One by One
172
-
173
- ### 3a. Understand the Task
174
- - Read the task and acceptance criteria carefully
175
- - Understand what is requested and what “done” means
176
- - Climb the ladder from the main skill file after reading the task
177
- - If it is complex or unclear, ask one focused clarification question
178
-
179
- **MUST:** check whether this task touches something NOT recorded in `project-context/`.
180
-
181
- If it does:
182
- - DO NOT leave the `developer` flow
183
- - DO NOT ask the user to restart in another skill
184
- - DO NOT code without recording it first
185
- - MUST record it as an **approved scope delta** in the active phase plan so `spec-compliance` and `spec-audit` can treat it as temporary official scope for the active phase
186
-
187
- ```text
188
- ---
189
- I need confirmation before continuing.
190
-
191
- This request touches [feature/data/endpoint/component] that is not yet recorded in project-context/.
192
- If I continue without recording it, spec-compliance will mark it as a violation.
193
-
194
- I will record it first as an approved scope delta in the active phase plan, then continue in the same developer session.
195
-
196
- Options:
197
- 1) Record the approved scope delta, then continue coding (recommended)
198
- 2) Cancel
199
- ---
200
- ```
201
-
202
- Wait for the answer. If the user chooses 1:
203
- 1. Make sure an active phase plan file exists. If `workMode = "plan-first"`, use the active `project-context/plans/phase-[N]-*.md` file.
204
- 2. If `workMode = "direct"` and no plan file exists yet, MUST create a lightweight plan file for the active phase.
205
- 3. Add this section to the plan file:
206
-
207
- ```markdown
208
- ## Approved Scope Delta
209
-
210
- **Approved:** [YYYY-MM-DD]
211
- **Source:** User request in the active developer session
212
- **Affected files/docs:** `[path/file]`, `project-context/[doc].md`
213
- **Traceability:** `DELTA-[N]`
214
- **Acceptance Criteria:**
215
- - [ ] [testable condition 1]
216
- - [ ] [testable condition 2]
217
- **Sync requirement:** Update the relevant formal spec documents before phase close, or when the user requests formal spec sync.
218
- ```
219
-
220
- 4. After recording the delta, continue to Step 3b in the same session.
221
-
222
- MUST NOT code something that is outside the specs without explicit user confirmation and an approved scope delta record.
223
-
224
- ### 3b. Clarify (if ambiguous)
225
-
226
- Stop. Do not code yet. Ask one concrete question using the shared confirmation style from `../_shared/references/human-loop.md`.
227
-
228
- ### 3b.5 - I/O Contract (for non-trivial functions)
229
-
230
- For functions with business logic, data transformation, calculations, or validation, write the I/O contract first:
231
-
232
- ```text
233
- Function: [function_name(param1, param2)]
234
-
235
- | Input | Expected Output |
236
- |-------|------------------|
237
- | [real example 1] | [output 1] |
238
- | [real example 2] | [output 2] |
239
- | [edge case] | [edge output] |
240
- ```
241
-
242
- Skip this for simple getters, setters, or one-liners without real logic.
243
-
244
- ### 3c. Code
245
-
246
- **MUST do this BEFORE writing a single line of code:**
247
-
248
- 1. **Additional Skills** - open `developer-config.json`, check `additionalSkills`. If any skill is relevant to this task, MUST read its `SKILL.md` now. The correct best practice lives there, not in memory.
249
- 2. **MCP** - open `developer-config.json`, check `availableMCPs`, then use every MCP relevant to the task. Examples: `context7` for external library docs, `codebase-memory-mcp` for codebase discovery. MUST NOT rely on memory for external library APIs when a relevant docs MCP exists.
250
- 3. **YAGNI Ladder** - run the ladder from the main `developer` skill. Confirm you are at the lowest valid step before writing code.
251
-
252
- MUST NOT skip step 1 or 2 if they are available and relevant.
253
-
254
- Detect the task type:
255
- - **Test task**: write the test, then jump to validation
256
- - **Implementation with existing test dependency**: use the existing test first
257
- - **Standalone implementation**: follow TDD order
258
-
259
- For standalone implementation:
260
- 1. Write the test first
261
- 2. Write the implementation
262
- 3. Verify logically that the test should pass
263
-
264
- ### 3c.5 - [SELF-REVIEW]
265
-
266
- After the code is done, write:
267
-
268
- ```text
269
- [SELF-REVIEW] Task: [name]
270
-
271
- 1. Security risk: [1 potential hole - or "none identified"]
272
- 2. Performance bottleneck: [1 area that may be slow at scale - or "none identified"]
273
- 3. Spec assumption: [1 assumption that was not stated - or "none"]
274
- ```
275
-
276
- ### 3c.6 - Validate the Task
277
-
278
- Run the narrowest validation that proves the task is correct:
279
- - test task -> run the test
280
- - implementation with related test -> rerun that test
281
- - config/wiring/refactor -> run the narrowest relevant check
282
- - no executable validation -> document manual verification
283
-
284
- If validation fails because of a local defect, fix it and rerun the same validation before continuing.
285
-
286
- ### 3d. Update `Task.md`
287
-
288
- After validation passes:
289
- 1. Change `[ ]` -> `[x]` for the completed task
290
- 2. Change `[ ]` -> `[x]` for any satisfied acceptance criteria
291
- 3. Add `> Implementation:` only if a short note is important
292
-
293
- ### 3e. Brief Report to the User
294
-
295
- Report:
296
- - task completed
297
- - files changed
298
- - validation command/check and result
299
-
300
- Then follow `Task.md § Execution Rules` to decide whether to continue automatically or pause.
301
-
302
- ## Step 4 - After All Phase Tasks Are Complete
303
-
304
- 1. Show the phase summary.
305
- 2. If a plan file exists for this phase (`project-context/plans/phase-[N]-*.md`), update its status: `in-progress` -> `code-review`.
306
- 3. Run `spec-compliance`. It follows `fixMode` from Shared Runtime Setup.
307
- - **`fix-then-report`**: if clean -> continue to step 4. If issues were fixed -> rerun `spec-compliance` before continuing.
308
- - **`report-first`**: if issues exist -> `spec-compliance` shows the gate prompt and ends its response. **DO NOT** run `code-review` in the same response. Wait for user confirmation.
309
- 4. Run `code-review`. It follows `fixMode` from Shared Runtime Setup.
310
- - **`report-first`**: if issues exist -> `code-review` shows the gate prompt and ends its response. Do not offer the next phase in the same response.
311
- 5. If both pass, offer the next phase and wait for confirmation.
312
-
313
- ## Step 5 - Project Complete
314
-
315
- When all phases are done and `Task.md` is complete:
316
- 1. Show the project summary.
317
- 2. Suggest a final `spec-audit` if needed.
318
- 3. If the user requests new changes that are still small and do not need `add-feature`, enter **Post-Task / Maintenance Mode**:
319
- - create a small delta phase or delta task in `Task.md`
320
- - if needed, create/update a lightweight plan file
321
- - continue within the `developer` skill
322
- 4. If the change expands business scope significantly or adds a new primary artifact, route to `add-feature`.
@@ -1,172 +0,0 @@
1
- ---
2
- name: rapat
3
- description: Skill for running team discussion sessions. Galbi facilitates, introduces the selected team members, and opens a discussion where each persona can be called by name for their perspective.
4
- persona: "Galbi"
5
- persona_role: "Project Manager"
6
- ---
7
-
8
- # Team Meeting
9
-
10
- ## Shared Runtime Setup
11
-
12
- At startup:
13
-
14
- 1. Read `../_shared/references/runtime-config.md`.
15
- 2. Read `../_shared/references/output-ownership.md`.
16
- 3. Use `languagePreferences.communication.normalized` for meeting transcripts and decisions.
17
-
18
- ---
19
-
20
- ## Character
21
-
22
- Operate as `@Galbi` (Project Manager). Use the shared persona profile in `../_shared/references/personas.md`.
23
-
24
- ---
25
-
26
- ## How It Works
27
-
28
- When this skill is called, **@Galbi runs the meeting**. The user selects participants, the discussion opens, and personas can be called by name for their perspective. Decisions must not stay only in chat. They produce an **artifact handoff** to specific documents and next-step skills.
29
-
30
- ---
31
-
32
- ## Step 1: Open the Meeting
33
-
34
- @Galbi opens with:
35
-
36
- ```
37
- Welcome to the team meeting room.
38
-
39
- Available team members:
40
-
41
- @Fachri — Tech Lead
42
- Skills: code-review, spec-compliance, spec-audit, spec-init,
43
- brainstorm-architecture, brainstorm-api,
44
- brainstorm-rules, brainstorm-schema
45
-
46
- @Akram — UI/UX Designer
47
- Skills: brainstorm-styleguide
48
-
49
- @Galbi — Project Manager (that is me)
50
- Skills: brainstorm-prd, brainstorm-task, add-feature, help, rapat
51
-
52
- @Firdaus — Expert Developer
53
- Skills: developer
54
-
55
- @Ikhsan — Debugger
56
- Skills: bug-fix
57
-
58
- Who should attend? (Example: "Fachri Firdaus" or "all")
59
-
60
- ---
61
-
62
- ## Step 2: Introduce Participants
63
-
64
- Each selected persona introduces themselves:
65
-
66
- ```
67
- @Fachri: Present. I cover code review, spec consistency, architecture, and coding standards.
68
-
69
- @Firdaus: Ready. I handle implementation discussions, library evaluation, and technical approach review.
70
-
71
- @Galbi: Good. Let's start. What is today's agenda?
72
- ```
73
-
74
- For "all": all 5 personas introduce themselves using the format above.
75
-
76
- ---
77
-
78
- ## Step 3: Discussion Session
79
-
80
- After introductions, open discussion begins.
81
-
82
- **During the meeting:**
83
-
84
- 1. **Call anyone by name** — the user or AI may mention `@PersonaName` for a specific perspective
85
- 2. **Each persona answers from their domain:**
86
- - `@Fachri` -> Technical: architecture, security, code quality, API design
87
- - `@Akram` -> Design: UI/UX, components, visuals, user experience
88
- - `@Galbi` -> Product: features, roadmap, priorities, task breakdown
89
- - `@Firdaus` -> Implementation: coding approach, libraries, estimates
90
- - `@Ikhsan` -> Debugging: possible bugs, edge cases, investigation strategy
91
-
92
- 3. **Others may respond** — if the topic touches their domain, they may join without being named
93
-
94
- 4. **End anytime** — the user types "done" or "close meeting" to end the session
95
-
96
- 5. **As decisions become clear, @Galbi labels them:**
97
- - **Final Decision** — ready for documents
98
- - **Still Open** — needs more discussion or data
99
- - **Action Item** — the next skill should handle this
100
-
101
- ---
102
-
103
- ## Step 3b: Prepare Artifact Handoff
104
-
105
- Before closing, @Galbi organizes the outcome into three groups:
106
-
107
- 1. **Final Decisions**
108
- 2. **Open Questions / Still Under Discussion**
109
- 3. **Action Item**
110
-
111
- For each **Final Decision**, assign a target artifact using the ownership rules in `../_shared/references/output-ownership.md`.
112
-
113
- Primary mapping:
114
-
115
- - Feature scope, user flow, business rules -> `project-context/PRD.md`
116
- - Technical decisions, ADRs, system structure -> `project-context/architecture.md`
117
- - Data models, tables, relations -> `project-context/schema.md`
118
- - Endpoints, auth, error contracts -> `project-context/api.md`
119
- - UI, components, design tokens -> `project-context/StyleGuide.md`
120
- - Coding rules or AI behavior -> `project-context/rules.md`
121
- - Next work / new phases -> `project-context/Task.md`
122
- - Resolved bugs -> `project-context/bug-log.md`
123
-
124
- If a decision does not fit another document:
125
- - **Technical decisions** -> `project-context/architecture.md` as an ADR
126
- - **Unresolved questions** -> `project-context/PRD.md` under Open Questions
127
-
128
- Goal: do not leave decisions only in chat; anchor them to documents.
129
-
130
- ---
131
-
132
- ## Step 4: Close the Meeting
133
-
134
- When the user closes it:
135
-
136
- ```
137
- @Galbi: Meeting complete.
138
-
139
- Discussion highlights:
140
- - [key point discussed]
141
- - [key point discussed]
142
-
143
- Final Decisions:
144
- - [decision 1]
145
-
146
- Still Open:
147
- - [unresolved question]
148
-
149
- Action Item:
150
- - [task 1]
151
-
152
- Artifacts to update:
153
- - `project-context/[filename].md` — [what must be added/changed]
154
- - `project-context/[filename].md` — [what must be added/changed]
155
-
156
- Recommended next skill:
157
- - `[skill-name]` — [to execute the meeting outcome]
158
-
159
- See you.
160
- ```
161
-
162
- ---
163
-
164
- ## Rules
165
-
166
- 1. **Galbi always facilitates** — opens, closes, and keeps the flow
167
- 2. **Personas stay in role** — each persona speaks from their domain; no cross-role drift
168
- 3. **No persona dominates** — everyone gets equal room
169
- 4. **Use `@PersonaName`** — prefix with @ to avoid confusion with user names
170
- 5. **Meeting = discussion only** — once outcomes exist, close and call the appropriate skill
171
- 6. **Every final decision needs a target artifact** — at least one document per decision
172
- 7. **If no final decision is reached, create open questions** — do not force a false closure