macca-method 2.1.1 → 2.1.2

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/.agents/macca-lock.json +1 -1
  2. package/.agents/skills/_shared/references/brainstorm-session.md +5 -5
  3. package/.agents/skills/_shared/references/invocation-policy.md +20 -20
  4. package/.agents/skills/_shared/references/output-ownership.md +11 -11
  5. package/.agents/skills/_shared/references/scope-rules.md +1 -1
  6. package/.agents/skills/_shared/references/skill-catalog.md +20 -20
  7. package/.agents/skills/_shared/scripts/validate-skills.py +37 -15
  8. package/.agents/skills/add-feature/SKILL.md +9 -3
  9. package/.agents/skills/antislop-copywriting/SKILL.md +372 -0
  10. package/.agents/skills/brainstorm-api/SKILL.md +28 -16
  11. package/.agents/skills/brainstorm-api/assets/api.template.md +35 -15
  12. package/.agents/skills/brainstorm-architecture/SKILL.md +35 -15
  13. package/.agents/skills/brainstorm-architecture/assets/architecture.template.md +44 -25
  14. package/.agents/skills/brainstorm-prd/SKILL.md +47 -17
  15. package/.agents/skills/brainstorm-prd/assets/PRD.template.md +47 -23
  16. package/.agents/skills/brainstorm-rules/SKILL.md +36 -19
  17. package/.agents/skills/brainstorm-rules/assets/rules.template.md +32 -18
  18. package/.agents/skills/brainstorm-schema/SKILL.md +18 -8
  19. package/.agents/skills/brainstorm-schema/assets/schema.template.md +25 -10
  20. package/.agents/skills/brainstorm-styleguide/SKILL.md +37 -19
  21. package/.agents/skills/brainstorm-styleguide/assets/StyleGuide.template.md +78 -60
  22. package/.agents/skills/brainstorm-task/SKILL.md +27 -14
  23. package/.agents/skills/brainstorm-task/assets/Task.template.md +29 -18
  24. package/.agents/skills/bug-fix/SKILL.md +25 -1
  25. package/.agents/skills/code-review/SKILL.md +7 -7
  26. package/.agents/skills/code-review/references/review-checklist.md +21 -10
  27. package/.agents/skills/developer/SKILL.md +8 -0
  28. package/.agents/skills/developer/references/execute-task.md +13 -7
  29. package/.agents/skills/help/SKILL.md +32 -20
  30. package/.agents/skills/meet/SKILL.md +9 -4
  31. package/.agents/skills/quick-dev/SKILL.md +27 -22
  32. package/.agents/skills/release-readiness/SKILL.md +17 -13
  33. package/.agents/skills/skill-creator/LICENSE.txt +202 -0
  34. package/.agents/skills/skill-creator/SKILL.md +485 -0
  35. package/.agents/skills/skill-creator/agents/analyzer.md +274 -0
  36. package/.agents/skills/skill-creator/agents/comparator.md +202 -0
  37. package/.agents/skills/skill-creator/agents/grader.md +223 -0
  38. package/.agents/skills/skill-creator/assets/eval_review.html +146 -0
  39. package/.agents/skills/skill-creator/eval-viewer/generate_review.py +471 -0
  40. package/.agents/skills/skill-creator/eval-viewer/viewer.html +1325 -0
  41. package/.agents/skills/skill-creator/references/schemas.md +441 -0
  42. package/.agents/skills/skill-creator/scripts/__init__.py +0 -0
  43. package/.agents/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
  44. package/.agents/skills/skill-creator/scripts/generate_report.py +326 -0
  45. package/.agents/skills/skill-creator/scripts/improve_description.py +247 -0
  46. package/.agents/skills/skill-creator/scripts/package_skill.py +136 -0
  47. package/.agents/skills/skill-creator/scripts/quick_validate.py +103 -0
  48. package/.agents/skills/skill-creator/scripts/run_eval.py +310 -0
  49. package/.agents/skills/skill-creator/scripts/run_loop.py +328 -0
  50. package/.agents/skills/skill-creator/scripts/utils.py +47 -0
  51. package/.agents/skills/spec-audit/SKILL.md +28 -1
  52. package/.agents/skills/spec-compliance/SKILL.md +31 -18
  53. package/.agents/skills/spec-init/SKILL.md +29 -17
  54. package/README.md +158 -122
  55. package/bin/macca-method.js +1378 -1077
  56. package/package.json +40 -40
  57. package/scripts/run-skill-validator.js +27 -9
  58. package/scripts/test-install.js +599 -357
  59. package/scripts/test-upgrade-legacy.js +119 -100
  60. package/scripts/validate-skill-behavior.js +175 -64
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  **MACCA** is an AI-based software development system that works from **written specifications**, not guesses. Before a single line of code exists, all important decisions are already documented. AI reads those documents before coding, then verifies the result after coding.
4
4
 
5
- > **Macca** comes from Bugis and means *smart, intelligent, capable*. In Bugis-Makassar philosophy, intelligence is always paired with noble character — a moral identity carried everywhere.
5
+ > **Macca** comes from Bugis and means _smart, intelligent, capable_. In Bugis-Makassar philosophy, intelligence is always paired with noble character — a moral identity carried everywhere.
6
6
 
7
7
  ![MACCA Method](image-macca-method.webp)
8
8
 
@@ -55,6 +55,7 @@ All planning output documents are stored in `project-context/` in your project.
55
55
  ## 3. Planning Skills
56
56
 
57
57
  Planning skills run as evidence-first interview sessions. AI reads applicable upstream specs first and asks only material decisions that are still unknown. At the start of each session, AI announces the topic count, then asks two things if not already saved:
58
+
58
59
  1. **Pacing**: (A) one by one · (B) three at a time · (C) all at once
59
60
  2. **Recommendations**: should AI provide suggested answers for each question?
60
61
 
@@ -80,6 +81,7 @@ Depth is inferred from existing context and can be overridden; it does not add a
80
81
  **Topic count:** 15 topics
81
82
 
82
83
  **Topics covered:**
84
+
83
85
  1. Project Goal — long-term vision and what makes the project unique
84
86
  2. Target Users — user personas, demographics, pain points
85
87
  3. Problem Being Solved — real problem, current workaround, and its cost/limitations
@@ -90,13 +92,14 @@ Depth is inferred from existing context and can be overridden; it does not add a
90
92
  8. Non-Functional Requirements — performance, security, scalability, accessibility, availability
91
93
  9. Success Metrics & Rollout — baseline, target, timeframe, measurement source, owner, launch strategy
92
94
  10. Acceptance Criteria — concrete conditions for each feature
93
- 11. Non-Goals — what will *not* be built
95
+ 11. Non-Goals — what will _not_ be built
94
96
  12. Assumptions — unverified conditions
95
97
  13. User Stories — prioritized workflows from the user perspective
96
98
  14. Stakeholders — owners and responsibilities
97
99
  15. Open Questions — unresolved decisions and risks
98
100
 
99
101
  **Important behavior:**
102
+
100
103
  - Use `Traceability ID` (`FEAT-*`, `BR-*`, `AC-*`, `NFR-*`, `US-*`) so each requirement can be traced to tasks and code
101
104
  - Do not overwrite existing files without confirmation
102
105
 
@@ -118,6 +121,7 @@ Depth is inferred from existing context and can be overridden; it does not add a
118
121
  **Topic count:** 10 topics
119
122
 
120
123
  **Topics covered:**
124
+
121
125
  1. System Context — systems and external services that interact
122
126
  2. Tech Stack — frontend, backend, database, hosting, CI/CD, plus strategic dependency/license/health/lock-in/exit evaluation
123
127
  3. Folder Structure — project file and directory organization
@@ -130,6 +134,7 @@ Depth is inferred from existing context and can be overridden; it does not add a
130
134
  10. Architecture Decision Records — major decisions and their reasoning
131
135
 
132
136
  **Important behavior:**
137
+
133
138
  - Every decision must be defensible with reasoning
134
139
  - The `Tech Stack` and `Folder Structure` fields are mandatory references for `spec-compliance` (SC-02) and `developer` (Step 2)
135
140
 
@@ -151,6 +156,7 @@ Depth is inferred from existing context and can be overridden; it does not add a
151
156
  **Topic count:** 5 topics
152
157
 
153
158
  **Topics covered:**
159
+
154
160
  1. Persistence Conventions — identity, naming, audit/version metadata, deletion, retention
155
161
  2. Entity/Storage Map — relational, document, key-value, graph, event-store, or mixed
156
162
  3. Fields & Data Types — datastore-native validation, PII, volume, growth, payload size
@@ -158,6 +164,7 @@ Depth is inferred from existing context and can be overridden; it does not add a
158
164
  5. Access Patterns & Evolution — indexes/projections, consistency, migration, backfill, compatibility, recovery
159
165
 
160
166
  **Important behavior:**
167
+
161
168
  - Give each persisted entity a `Traceability ID` (`DATA-*`)
162
169
  - Datastore-native names, tenancy, concurrency, retention, and migration constraints are verified by `spec-compliance` (SC-03)
163
170
 
@@ -179,6 +186,7 @@ Depth is inferred from existing context and can be overridden; it does not add a
179
186
  **Topic count:** 5 topics
180
187
 
181
188
  **Topics covered:**
189
+
182
190
  1. Entry Point, Versioning, Deprecation & Auth — protocol-native compatibility and lifecycle
183
191
  2. Error Catalog — protocol-native errors, retryability, timeout interaction, client action
184
192
  3. Operations — REST endpoints, GraphQL operations, RPC procedures, events, or mixed contracts
@@ -186,6 +194,7 @@ Depth is inferred from existing context and can be overridden; it does not add a
186
194
  5. Flow & Reliability — pagination/streaming, rate limits, retries, SLOs, and contract-test invariants
187
195
 
188
196
  **Important behavior:**
197
+
189
198
  - Give each operation a `Traceability ID` (`API-*`)
190
199
  - Agreed request and response formats are a **contract** verified by `spec-compliance` (SC-04) during coding
191
200
 
@@ -207,6 +216,7 @@ Depth is inferred from existing context and can be overridden; it does not add a
207
216
  **Topic count:** 8 topics
208
217
 
209
218
  **Topics covered:**
219
+
210
220
  1. CSS Framework — Tailwind CSS (v3/v4), Bootstrap, CSS Modules, or custom
211
221
  2. Color Palette — primary, secondary, accent, status colors (error/success/warning/info), dark mode
212
222
  3. Typography — font family, heading and body sizes, line height, font weight
@@ -217,6 +227,7 @@ Depth is inferred from existing context and can be overridden; it does not add a
217
227
  8. Accessibility, Localization & Operational States — keyboard/focus/screen reader/reduced motion; loading/empty/error/forbidden/offline; locales/RTL; UI performance
218
228
 
219
229
  **Important behavior:**
230
+
220
231
  - Agreed colors and spacing are a **contract** — `spec-compliance` (SC-06) flags arbitrary values outside this list
221
232
 
222
233
  </details>
@@ -237,6 +248,7 @@ Depth is inferred from existing context and can be overridden; it does not add a
237
248
  **Topic count:** 7 topics
238
249
 
239
250
  **Topics covered:**
251
+
240
252
  1. AI Persona & Tech Stack — main technologies, preferred libraries, favored and avoided patterns
241
253
  2. Naming Conventions — variables, functions, components, files, folders, constants
242
254
  3. Code Style — formatting (Prettier/ESLint), max function length, `console.log` rules, early return
@@ -248,6 +260,7 @@ Depth is inferred from existing context and can be overridden; it does not add a
248
260
  Conditional rules are generated only when applicable: structured logging, migrations, feature flags, generated code, and secret rotation.
249
261
 
250
262
  **Important behavior:**
263
+
251
264
  - The `[FORBIDDEN]` section is the first thing `developer` reads before coding
252
265
  - If the `[FORBIDDEN]` section is missing, `spec-compliance` records it as a MINOR finding
253
266
 
@@ -269,16 +282,19 @@ Conditional rules are generated only when applicable: structured logging, migrat
269
282
  **User clarification count:** 3 topics plus one automatic document-completeness check
270
283
 
271
284
  **Clarification topics:**
285
+
272
286
  1. Phase Priority Order — implementation order, which features must finish first
273
287
  2. Task Granularity — how small should tasks be? One file, one endpoint, or one full feature?
274
288
  3. Execution Rules — stop for confirmation after each task, or continue automatically by phase?
275
289
  4. Verify Available Documents — AI checks spec completeness itself before creating `Task.md`
276
290
 
277
291
  **Two operation modes:**
292
+
278
293
  - **Generate New** — create `Task.md` from scratch based on all available specs
279
294
  - **Add Phase Mode** — append a new phase below existing `Task.md` content (called by `add-feature`, does not overwrite old content)
280
295
 
281
296
  **Important behavior:**
297
+
282
298
  - Tasks are **not created from guesses** — all tasks are derived from the spec documents
283
299
  - Every task has concrete, verifiable `Acceptance Criteria`
284
300
  - Testing order follows `rules.md`: test-first when explicitly selected, otherwise test-with-change or the project's approved workflow
@@ -307,18 +323,21 @@ Read `.agents/developer-config.json`. If `name` or `project` is missing, AI asks
307
323
 
308
324
  **Additional skills & MCP setup** (`references/onboarding.md`)
309
325
 
310
- *Additional Skills:*
326
+ _Additional Skills:_
327
+
311
328
  - If `additionalSkills` already exists in config → use it directly
312
- - If not → AI asks once: *"Are there any additional skills for this project?"*
329
+ - If not → AI asks once: _"Are there any additional skills for this project?"_
313
330
  - For every named skill, AI **first searches the workspace itself** (`.agents/skills/`, `.github/skills/`, `.opencode/skills/`). It only asks you for the path if the skill is not found.
314
331
  - When working on a relevant task, AI **must read** `SKILL.md` from that skill before writing code.
315
332
 
316
- *MCP (Model Context Protocol):*
333
+ _MCP (Model Context Protocol):_
334
+
317
335
  - If `availableMCPs` already exists in config → use it directly
318
- - If not → AI asks once: *"Which MCPs are available in your workspace?"*
336
+ - If not → AI asks once: _"Which MCPs are available in your workspace?"_
319
337
  - Only listed MCPs will be used.
320
338
 
321
339
  **Developer scope** (`references/onboarding.md`)
340
+
322
341
  - If `developerPreferences.scope` already exists → use it directly
323
342
  - If not → AI asks once:
324
343
  ```
@@ -330,6 +349,7 @@ Read `.agents/developer-config.json`. If `name` or `project` is missing, AI asks
330
349
  - This scope is enforced in every phase: AI will not create/change files outside the scope.
331
350
 
332
351
  **Work mode** (`references/onboarding.md`)
352
+
333
353
  - If `developerPreferences.workMode` already exists → use it directly
334
354
  - If not → AI asks once:
335
355
  ```
@@ -346,19 +366,20 @@ Read `.agents/developer-config.json`. If `name` or `project` is missing, AI asks
346
366
 
347
367
  **Selecting relevant specs** (`references/execute-task.md`)
348
368
 
349
- | Condition | Read |
350
- |---------|--------|
351
- | All tasks (always) | `rules.md`, `architecture.md` |
352
- | Task touches database/model | + `schema.md` |
353
- | Task touches API/endpoint | + `api.md` |
354
- | Task touches UI/component | + `StyleGuide.md` |
355
- | Requirement is unclear | + `PRD.md` |
369
+ | Condition | Read |
370
+ | --------------------------- | ----------------------------- |
371
+ | All tasks (always) | `rules.md`, `architecture.md` |
372
+ | Task touches database/model | + `schema.md` |
373
+ | Task touches API/endpoint | + `api.md` |
374
+ | Task touches UI/component | + `StyleGuide.md` |
375
+ | Requirement is unclear | + `PRD.md` |
356
376
 
357
377
  Scope enforcement: if `scope=frontend`, AI does not touch backend files. If `scope=backend`, AI does not touch frontend files.
358
378
 
359
379
  **Executing tasks** (`references/execute-task.md`)
360
380
 
361
381
  For each task:
382
+
362
383
  1. Understand the task and acceptance criteria
363
384
  2. Check the ladder: does it need to be built? Does it already exist in the codebase? Is it in the standard library? (YAGNI)
364
385
  3. Write an I/O contract for non-trivial functions
@@ -372,11 +393,13 @@ For each task:
372
393
  6. Run validation, update `Task.md` (`[ ]` → `[x]`)
373
394
 
374
395
  Developer loads workflow references by state, not all at once:
396
+
375
397
  - `onboarding.md` only for missing setup or plan-first
376
398
  - `execute-task.md` only for the current task
377
399
  - `close-phase.md` only when closing a phase/project
378
400
 
379
401
  **Closing a phase** (`references/close-phase.md`)
402
+
380
403
  1. Show a phase summary
381
404
  2. Verify the applicable Phase Definition of Done; mark genuine non-applicable items with a reason
382
405
  3. If there is a plan file for this phase → update plan status: `in-progress` → `code-review`
@@ -385,6 +408,7 @@ Developer loads workflow references by state, not all at once:
385
408
  6. Complete quality-gate DoD items, then offer the next phase
386
409
 
387
410
  **MCPs used (if listed in `availableMCPs`):**
411
+
388
412
  - `context7` or equivalent docs MCP — current installed-version library documentation
389
413
  - `codebase-memory-mcp` or equivalent graph/symbol tooling — codebase discovery and relationships
390
414
  - Other registered MCPs only when relevant to the current task
@@ -410,9 +434,10 @@ Same as `developer`. Reads `.agents/developer-config.json`, greets by name and p
410
434
  **Step 0b & 0c — Additional Skills, MCP, Scope**
411
435
  Same setup policy as `developer`. Reads from config if already set and asks only for missing required setup.
412
436
 
413
- **Step 1 — Pre-flight summary** *(unique to quick-dev)*
437
+ **Step 1 — Pre-flight summary** _(unique to quick-dev)_
414
438
 
415
439
  Before any code is written, AI shows:
440
+
416
441
  ```
417
442
  Quick Dev — Pre-flight
418
443
  ───────────────────────
@@ -425,6 +450,7 @@ Assumptions (will proceed unless corrected):
425
450
  Need confirmation before proceeding: ← omit if none
426
451
  [?] [blocking question]
427
452
  ```
453
+
428
454
  - Non-blocking ambiguities go under "Assumptions", not as questions
429
455
  - Missing specs (e.g. no `StyleGuide.md` but task touches UI) are flagged here
430
456
  - Waits only when a blocking ambiguity exists; otherwise proceeds in the same turn with listed assumptions
@@ -437,11 +463,11 @@ Loads the same task-execution workflow as `developer`: scope check → delta app
437
463
 
438
464
  **Step 4 — Update Task.md**
439
465
 
440
- | Condition | Action |
441
- |---|---|
442
- | Related item found, `[ ]` | Mark `[x]`, add brief note |
443
- | Related item found, `[x]` | Add sub-note about the refinement |
444
- | No related item | Append to active phase as `[x]` with tag `(quick-fix: YYYY-MM-DD)` |
466
+ | Condition | Action |
467
+ | ------------------------- | ------------------------------------------------------------------ |
468
+ | Related item found, `[ ]` | Mark `[x]`, add brief note |
469
+ | Related item found, `[x]` | Add sub-note about the refinement |
470
+ | No related item | Append to active phase as `[x]` with tag `(quick-fix: YYYY-MM-DD)` |
445
471
 
446
472
  **Step 5 — Quality gates**
447
473
  Runs full `spec-compliance` then `code-review`. Both follow `fixMode` from config.
@@ -449,6 +475,7 @@ Runs full `spec-compliance` then `code-review`. Both follow `fixMode` from confi
449
475
  **Important behavior:** quick-dev is a bounded router, not a separate implementation philosophy. It follows the same shared implementation principles, testing policy, and approval gates as `developer`, but only for small, clearly anchored work. Anything broader routes back to `developer`.
450
476
 
451
477
  **Step 6 — Final report**
478
+
452
479
  ```
453
480
  Quick Dev — Done
454
481
  ─────────────────
@@ -473,16 +500,16 @@ Remaining ambiguities: ← omit if none
473
500
 
474
501
  **Checklist (8 items):**
475
502
 
476
- | ID | Aspect | Documents Read |
477
- |----|-------|---------------------|
478
- | SC-01 | PRD Compliance | scope, business rules, acceptance/NFR, metrics/rollout and degraded behavior when applicable |
479
- | SC-02 | Architecture Compliance | stack, boundaries, patterns, auth, observability/rollback/recovery when touched |
480
- | SC-03 | Schema Compliance | datastore-native names, validation, tenancy, concurrency, retention and evolution |
481
- | SC-04 | API Compliance | protocol-native operations, errors, auth, reliability, lifecycle and contract invariants |
482
- | SC-05 | Rules Compliance | `[FORBIDDEN]`, naming, security, testing and applicable operational conventions |
483
- | SC-06 | StyleGuide Compliance | tokens, responsive behavior, accessibility, localization and operational states |
484
- | SC-07 | Task Completion | acceptance criteria, traceability and applicable Phase Definition of Done |
485
- | SC-08 | Scope Compliance | `developer-config.json` — frontend/backend scope respected, no files outside scope |
503
+ | ID | Aspect | Documents Read |
504
+ | ----- | ----------------------- | -------------------------------------------------------------------------------------------- |
505
+ | SC-01 | PRD Compliance | scope, business rules, acceptance/NFR, metrics/rollout and degraded behavior when applicable |
506
+ | SC-02 | Architecture Compliance | stack, boundaries, patterns, auth, observability/rollback/recovery when touched |
507
+ | SC-03 | Schema Compliance | datastore-native names, validation, tenancy, concurrency, retention and evolution |
508
+ | SC-04 | API Compliance | protocol-native operations, errors, auth, reliability, lifecycle and contract invariants |
509
+ | SC-05 | Rules Compliance | `[FORBIDDEN]`, naming, security, testing and applicable operational conventions |
510
+ | SC-06 | StyleGuide Compliance | tokens, responsive behavior, accessibility, localization and operational states |
511
+ | SC-07 | Task Completion | acceptance criteria, traceability and applicable Phase Definition of Done |
512
+ | SC-08 | Scope Compliance | `developer-config.json` — frontend/backend scope respected, no files outside scope |
486
513
 
487
514
  **Severity:** `💥 BLOCKER` → fix now, re-run | `🔴 MAJOR` → fix before the next phase | `⚠️ MINOR` → discuss | `✅ PASS` → continue to `code-review`
488
515
 
@@ -500,39 +527,42 @@ Remaining ambiguities: ← omit if none
500
527
  **Called when:** Automatically after `spec-compliance` is clean. Can also be called manually any time.
501
528
 
502
529
  **Fix mode (runtime default + can be set in config):**
530
+
503
531
  ```
504
532
  A) Report first — show all findings, wait for confirmation before fixing
505
533
  B) Fix now — automatically fix BLOCKER/MAJOR, full report at the end
506
534
  ```
535
+
507
536
  If this field is missing, the default is `report-first`. To change it, the user or config workflow can set `codeReviewPreferences.fixMode` in `developer-config.json`.
508
537
 
509
538
  **Phase 1 — 27-Item Code Quality:**
510
539
 
511
- | Tier | Item |
512
- |------|------|
513
- | 💥 BLOCKER | CR-01 Wrong imports · CR-02 Runtime errors · CR-03 Null/undefined · CR-04 SQL injection · CR-05 Deprecated methods |
514
- | 🔴 MAJOR | CR-06 Duplicate function · CR-07 Unused code · CR-08 Duplicate logic · CR-09 Obsolete code · CR-10 Inconsistent naming · CR-11 Ignoring existing code · CR-12 Missing dependency · CR-13 Dependency conflict · CR-14 Memory leaks · CR-15 Security ignored · CR-16 Missing required rate-limit handling · CR-17 Missing tests required by `rules.md` |
515
- | ⚠️ MINOR | CR-18 Edge cases · CR-19 Happy path only · CR-20 Performance · CR-21 Outdated pattern · CR-22 Under-engineering · CR-23 Over-engineering · CR-24 Environment assumptions |
516
- | ℹ️ INFO | CR-25 Missing comments · CR-26 Jargon · CR-27 Comment quality |
540
+ | Tier | Item |
541
+ | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
542
+ | 💥 BLOCKER | CR-01 Wrong imports · CR-02 Runtime errors · CR-03 Null/undefined · CR-04 SQL injection · CR-05 Deprecated methods |
543
+ | 🔴 MAJOR | CR-06 Duplicate function · CR-07 Unused code · CR-08 Duplicate logic · CR-09 Obsolete code · CR-10 Inconsistent naming · CR-11 Ignoring existing code · CR-12 Missing dependency · CR-13 Dependency conflict · CR-14 Memory leaks · CR-15 Security ignored · CR-16 Missing required rate-limit handling · CR-17 Missing tests required by `rules.md` |
544
+ | ⚠️ MINOR | CR-18 Edge cases · CR-19 Happy path only · CR-20 Performance · CR-21 Outdated pattern · CR-22 Under-engineering · CR-23 Over-engineering · CR-24 Environment assumptions |
545
+ | ℹ️ INFO | CR-25 Missing comments · CR-26 Jargon · CR-27 Comment quality |
517
546
 
518
547
  **Phase 2 — 10 Security Essentials:**
519
548
 
520
- | ID | Aspect |
521
- |----|-------|
522
- | SEC-01 | Injection Prevention — SQL, shell, eval |
523
- | SEC-02 | Authentication — password hashing, cookie attributes |
524
- | SEC-03 | Authorization — deny-by-default, ownership checks, mass assignment |
525
- | SEC-04 | XSS Prevention — innerHTML, dangerouslySetInnerHTML |
526
- | SEC-05 | API Security — rate limiting, CORS, JWT verification |
527
- | SEC-06 | Data Protection & Logging — no sensitive logs, no hardcoded secrets |
528
- | SEC-07 | Error Handling Security — fail-closed, no swallowed exceptions |
529
- | SEC-08 | Input Validation — body/params/query/headers/cookies |
549
+ | ID | Aspect |
550
+ | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
551
+ | SEC-01 | Injection Prevention — SQL, shell, eval |
552
+ | SEC-02 | Authentication — password hashing, cookie attributes |
553
+ | SEC-03 | Authorization — deny-by-default, ownership checks, mass assignment |
554
+ | SEC-04 | XSS Prevention — innerHTML, dangerouslySetInnerHTML |
555
+ | SEC-05 | API Security — rate limiting, CORS, JWT verification |
556
+ | SEC-06 | Data Protection & Logging — no sensitive logs, no hardcoded secrets |
557
+ | SEC-07 | Error Handling Security — fail-closed, no swallowed exceptions |
558
+ | SEC-08 | Input Validation — body/params/query/headers/cookies |
530
559
  | SEC-09 | Framework-Specific Security — AI reads `architecture.md` to detect the framework: **Next.js** (`NEXT_PUBLIC_*`, Server Actions, middleware, wildcard image domains), **Laravel** (CSRF, Eloquent, `.env`), **Django** (`ALLOWED_HOSTS`, `DEBUG`, `SECRET_KEY`), **Express/NestJS** (`helmet`, CORS, body limits), **Rails** (strong params) |
531
- | SEC-10 | Dependency Vulnerabilities — packages with critical/high CVEs (`npm audit`, `pip audit`, `composer audit`, etc.) |
560
+ | SEC-10 | Dependency Vulnerabilities — packages with critical/high CVEs (`npm audit`, `pip audit`, `composer audit`, etc.) |
532
561
 
533
562
  **Format for each finding:** Where? → If not fixed? → If fixed? → Recommended fix
534
563
 
535
564
  **Update plan after review completes** (if a plan file exists for this phase):
565
+
536
566
  - **Plan-level deviation exists** (wrong library, pattern not followed, scope changed, approach differs from the plan) → add a note to the plan + change status: `code-review` → `done`
537
567
  - **No plan deviation** (only code quality issues: naming, formatting, security hardening) → change status only: `code-review` → `done`, with no note
538
568
 
@@ -558,6 +588,7 @@ If this field is missing, the default is `report-first`. To change it, the user
558
588
  - Plans in `project-context/plans/` — list all plan files and their statuses (`review` / `in-progress` / `code-review` / `done`)
559
589
 
560
590
  **Output format:**
591
+
561
592
  ```
562
593
  Checking your project now...
563
594
 
@@ -594,6 +625,7 @@ Recommended next steps: ...
594
625
  **Called when:** A bug needs to be fixed.
595
626
 
596
627
  **Workflow:**
628
+
597
629
  1. You describe the bug (symptoms, location, reproduction steps, error message)
598
630
  2. AI checks `bug-log.md` — has it happened before?
599
631
  - **Identical** → apply the same fix (ask for confirmation first)
@@ -618,6 +650,7 @@ Recommended next steps: ...
618
650
  **Called when:** A new feature needs to be added to an existing project.
619
651
 
620
652
  **Workflow:**
653
+
621
654
  1. You describe the new feature (name, function, users, reason)
622
655
  2. AI reads all specs in `project-context/`
623
656
  3. AI shows an impact analysis — which documents are affected (including `plans/`)
@@ -642,10 +675,10 @@ Recommended next steps: ...
642
675
  **Two modes:**
643
676
 
644
677
  **Project Mode** — audit `project-context/`
645
- Checks consistency *between* documents: persisted entities with no supporting operation? Features with no task? PRD metrics with no observability signal? Rollout without rollback? Architecture decisions conflicting with rules? Traceability IDs referenced but missing?
678
+ Checks consistency _between_ documents: persisted entities with no supporting operation? Features with no task? PRD metrics with no observability signal? Rollout without rollback? Architecture decisions conflicting with rules? Traceability IDs referenced but missing?
646
679
 
647
680
  **Framework Mode** — audit MACCA itself
648
- Checks consistency *between* skill instructions: are README, skill docs, and workflow aligned, or do they conflict?
681
+ Checks consistency _between_ skill instructions: are README, skill docs, and workflow aligned, or do they conflict?
649
682
 
650
683
  **What it checks:** direct conflicts → workflow drift → inconsistencies → ambiguities
651
684
 
@@ -663,6 +696,7 @@ Checks consistency *between* skill instructions: are README, skill docs, and wor
663
696
  **Called when:** The project already exists but has no spec documents yet.
664
697
 
665
698
  **Two modes:**
699
+
666
700
  ```
667
701
  Mode A — Batch Generate: scan the full codebase, generate everything at once.
668
702
  Mode B — Guided Generate: one document → you review → confirm → continue.
@@ -673,8 +707,9 @@ Mode B — Guided Generate: one document → you review → confirm → continue
673
707
  `PRD.md` is created last because it is synthesized from observed behavior, not guessed intent.
674
708
 
675
709
  **Each generated document includes:**
710
+
676
711
  - **Evidence Inputs** — files/sources used as the basis for each claim
677
- - **Confidence Level** per claim: *High* (seen directly in code) / *Medium* (strong inference) / *Low* (guess, needs verification)
712
+ - **Confidence Level** per claim: _High_ (seen directly in code) / _Medium_ (strong inference) / _Low_ (guess, needs verification)
678
713
  - **Confidence Summary** — summary of strong facts, inferences, and what still needs manual verification
679
714
  - **Missing Decisions** — choices that cannot be proven from code, with the recommended owning brainstorm skill
680
715
 
@@ -692,6 +727,7 @@ Mode B — Guided Generate: one document → you review → confirm → continue
692
727
  **How it works:** Provide agenda, desired outcome, hard constraints, optional evidence, and participants in one setup. In one response, every selected persona gives exactly one evidence/assumption-labeled recommendation in a fixed order. @Galbi then summarizes decisions, open questions, action items, and artifact handoffs before closing automatically. A second round requires a new `meet` invocation.
693
728
 
694
729
  **Available personas:**
730
+
695
731
  - `@Galbi` — Project Manager: scope, priorities, business impact
696
732
  - `@Fachri` — Tech Lead: technical decisions, trade-offs, security
697
733
  - `@Akram` — UI/UX Designer: usability, visual consistency, accessibility
@@ -730,13 +766,13 @@ Verdicts: `READY`, `CONDITIONAL`, or `NOT READY`. Missing required evidence is `
730
766
 
731
767
  ## 6. The MACCA AI Team
732
768
 
733
- | Persona | Role | Skills |
734
- |---------|------|--------|
735
- | **@Galbi** | Project Manager | `brainstorm-prd`, `brainstorm-task`, `add-feature`, `help`, `meet` |
736
- | **@Fachri** | Tech Lead | `brainstorm-architecture`, `brainstorm-api`, `brainstorm-schema`, `brainstorm-rules`, `spec-init`, `spec-audit`, `spec-compliance`, `code-review`, `release-readiness` |
737
- | **@Akram** | UI/UX Designer | `brainstorm-styleguide` |
738
- | **@Firdaus** | Expert Developer | `developer`, `quick-dev` |
739
- | **@Ikhsan** | Debugger | `bug-fix` |
769
+ | Persona | Role | Skills |
770
+ | ------------ | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
771
+ | **@Galbi** | Project Manager | `brainstorm-prd`, `brainstorm-task`, `add-feature`, `help`, `meet` |
772
+ | **@Fachri** | Tech Lead | `brainstorm-architecture`, `brainstorm-api`, `brainstorm-schema`, `brainstorm-rules`, `spec-init`, `spec-audit`, `spec-compliance`, `code-review`, `release-readiness` |
773
+ | **@Akram** | UI/UX Designer | `brainstorm-styleguide` |
774
+ | **@Firdaus** | Expert Developer | `developer`, `quick-dev` |
775
+ | **@Ikhsan** | Debugger | `bug-fix` |
740
776
 
741
777
  > **Persona Rule:** Do not swap the persona assigned to a skill. Its instructions, tone, and responsibilities are designed for that role.
742
778
 
@@ -932,13 +968,13 @@ Use the skill help
932
968
 
933
969
  You normally do not need to remember skill names. OpenCode and Copilot advertise each skill's `name` and `description`, then the model selects a relevant skill. Requests that can mutate broad source-of-truth documents or start implementation require clear user intent; read-only routing and bounded workflows may activate automatically.
934
970
 
935
- | Invocation policy | Skills |
936
- |---|---|
937
- | Explicit intent | `brainstorm-prd`, `brainstorm-architecture`, `brainstorm-schema`, `brainstorm-api`, `brainstorm-styleguide`, `brainstorm-rules`, `add-feature`, `spec-init` |
938
- | Explicit implementation intent | `developer` — phrases such as "implement Phase 2" are sufficient; the skill name is not required |
939
- | Model-auto router | `quick-dev` for bounded small implementation requests that still map clearly to the current project context |
940
- | Both direct and automatic/orchestrated | `brainstorm-task`, `bug-fix`, `code-review`, `spec-audit`, `release-readiness`, `help`, `meet` |
941
- | Primarily orchestrated | `spec-compliance`, called by execution/remediation workflows |
971
+ | Invocation policy | Skills |
972
+ | -------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
973
+ | Explicit intent | `brainstorm-prd`, `brainstorm-architecture`, `brainstorm-schema`, `brainstorm-api`, `brainstorm-styleguide`, `brainstorm-rules`, `add-feature`, `spec-init` |
974
+ | Explicit implementation intent | `developer` — phrases such as "implement Phase 2" are sufficient; the skill name is not required |
975
+ | Model-auto router | `quick-dev` for bounded small implementation requests that still map clearly to the current project context |
976
+ | Both direct and automatic/orchestrated | `brainstorm-task`, `bug-fix`, `code-review`, `spec-audit`, `release-readiness`, `help`, `meet` |
977
+ | Primarily orchestrated | `spec-compliance`, called by execution/remediation workflows |
942
978
 
943
979
  Agent Skills has no portable `user-invocable` or `disable-model-invocation` field. Copilot VS Code supports these as vendor extensions, but OpenCode ignores them. MACCA therefore keeps canonical frontmatter portable and enforces intent through descriptions, scope checks, and confirmation gates. Host-specific slash commands or permissions may be added as optional adapters, never as the only safety mechanism.
944
980
 
@@ -982,17 +1018,17 @@ your-project/
982
1018
 
983
1019
  Each installed skills folder contains `_shared` plus these 18 MACCA skills: `add-feature`, `brainstorm-api`, `brainstorm-architecture`, `brainstorm-prd`, `brainstorm-rules`, `brainstorm-schema`, `brainstorm-styleguide`, `brainstorm-task`, `bug-fix`, `code-review`, `developer`, `help`, `meet`, `quick-dev`, `release-readiness`, `spec-audit`, `spec-compliance`, and `spec-init`.
984
1020
 
985
- | AI Tool | Skills Folder |
986
- |---------|---------------|
987
- | GitHub Copilot | `.github/skills/` |
988
- | Cursor | `.cursor/skills/` |
989
- | Claude Code | `.claude/skills/` |
990
- | Windsurf | `.windsurf/skills/` |
991
- | Gemini CLI | `.gemini/skills/` |
992
- | OpenCode | `.opencode/skills/` |
993
- | Kilo Code | `.kilo/skills/` |
994
- | Codex (OpenAI) | `.agents/skills/` |
995
- | Kimi CLI | `.agents/skills/` |
1021
+ | AI Tool | Skills Folder |
1022
+ | -------------- | ------------------- |
1023
+ | GitHub Copilot | `.github/skills/` |
1024
+ | Cursor | `.cursor/skills/` |
1025
+ | Claude Code | `.claude/skills/` |
1026
+ | Windsurf | `.windsurf/skills/` |
1027
+ | Gemini CLI | `.gemini/skills/` |
1028
+ | OpenCode | `.opencode/skills/` |
1029
+ | Kilo Code | `.kilo/skills/` |
1030
+ | Codex (OpenAI) | `.agents/skills/` |
1031
+ | Kimi CLI | `.agents/skills/` |
996
1032
 
997
1033
  The installer validates path containment, refuses symlink escapes and unowned collisions, preserves `developer-config.json`, detects local drift through SHA-256 hashes, and journals install/upgrade transactions for recovery. CI runs the full package/install/upgrade suite on Ubuntu, Windows, and macOS with Node 18 and 22.
998
1034
 
@@ -1046,19 +1082,19 @@ The `.agents/developer-config.json` file is shared config across skills. All ski
1046
1082
  }
1047
1083
  ```
1048
1084
 
1049
- | Field | Filled by | Description |
1050
- |-------|--------------------|------------|
1051
- | `name` | `developer` (Step 0) | Asked once |
1052
- | `project` | `developer` (Step 0) | Asked once |
1053
- | `languagePreferences` | installer / first skill | Communication language and document language |
1054
- | `developerPreferences.workMode` | `developer` (`references/onboarding.md` § Work Mode) | `"direct"` or `"plan-first"` |
1055
- | `developerPreferences.scope` | `developer` (`references/onboarding.md` § Developer Scope) | `"frontend"`, `"backend"`, or `"fullstack"` |
1056
- | `brainstormPreferences.discussionMode` | brainstorm-* skills | `"one-by-one"`, `"three-at-a-time"`, or `"all-at-once"` |
1057
- | `brainstormPreferences.recommendations` | brainstorm-* skills | `true` = AI gives suggested answers for each question |
1058
- | `brainstormPreferences.discoveryDepth` | brainstorm-* skills | `"quick"`, `"standard"`, or `"critical"`; inferred when absent, user-overridable |
1059
- | `codeReviewPreferences.fixMode` | user / config runtime | `"report-first"` or `"fix-then-report"` |
1060
- | `additionalSkills` | `developer` (`references/onboarding.md` § Additional Skills and MCPs) | AI searches for the path in the workspace first, then asks only if it is not found |
1061
- | `availableMCPs` | `developer` (`references/onboarding.md` § Additional Skills and MCPs) | Available MCPs; only listed MCPs are used |
1085
+ | Field | Filled by | Description |
1086
+ | --------------------------------------- | --------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
1087
+ | `name` | `developer` (Step 0) | Asked once |
1088
+ | `project` | `developer` (Step 0) | Asked once |
1089
+ | `languagePreferences` | installer / first skill | Communication language and document language |
1090
+ | `developerPreferences.workMode` | `developer` (`references/onboarding.md` § Work Mode) | `"direct"` or `"plan-first"` |
1091
+ | `developerPreferences.scope` | `developer` (`references/onboarding.md` § Developer Scope) | `"frontend"`, `"backend"`, or `"fullstack"` |
1092
+ | `brainstormPreferences.discussionMode` | brainstorm-* skills | `"one-by-one"`, `"three-at-a-time"`, or `"all-at-once"` |
1093
+ | `brainstormPreferences.recommendations` | brainstorm-* skills | `true` = AI gives suggested answers for each question |
1094
+ | `brainstormPreferences.discoveryDepth` | brainstorm-* skills | `"quick"`, `"standard"`, or `"critical"`; inferred when absent, user-overridable |
1095
+ | `codeReviewPreferences.fixMode` | user / config runtime | `"report-first"` or `"fix-then-report"` |
1096
+ | `additionalSkills` | `developer` (`references/onboarding.md` § Additional Skills and MCPs) | AI searches for the path in the workspace first, then asks only if it is not found |
1097
+ | `availableMCPs` | `developer` (`references/onboarding.md` § Additional Skills and MCPs) | Available MCPs; only listed MCPs are used |
1062
1098
 
1063
1099
  **Rule:** all skills must **merge**, not overwrite the file. Unknown fields must be preserved.
1064
1100
 
@@ -1069,39 +1105,39 @@ The `.agents/developer-config.json` file is shared config across skills. All ski
1069
1105
  <details>
1070
1106
  <summary><strong>Glossary & Traceability ID</strong></summary>
1071
1107
 
1072
- | Term | Explanation |
1073
- |---------|------------|
1074
- | **Skill** | Full instructions for AI — like an SOP for AI |
1075
- | **Spec** | Planning document containing all decisions before coding |
1076
- | **Subagent** | Helper agent for focused exploration/analysis |
1077
- | **project-context/** | Folder where all spec documents are stored |
1078
- | **[FORBIDDEN]** | Section in `rules.md` — technical prohibitions scanned by AI before coding |
1079
- | **[SELF-REVIEW]** | Short developer reflection after each task: security risk, performance, spec assumption |
1080
- | **Traceability ID** | Stable label (`FEAT-01`, `API-03`) for tracing requirements from PRD to implementation |
1081
- | **Acceptance Criteria** | Concrete conditions for a task to be considered done |
1082
- | **scope** | Developer work boundary: frontend-only, backend-only, or fullstack |
1083
- | **fixMode** | `code-review` preference: report first or fix immediately |
1084
- | **discoveryDepth** | Brainstorm detail level independent from question batching: quick/standard/critical |
1085
- | **availableMCPs** | MCPs listed and available for use in this project |
1086
- | **Confidence Level** | In `spec-init`: High/Medium/Low for claims derived from codebase analysis |
1087
- | **Evidence Inputs** | In `spec-init`: files/sources used as evidence for a claim |
1088
- | **Plan status** | Plan file lifecycle status: `review` → `in-progress` → `code-review` → `done` |
1089
- | **Plan deviation** | Implementation drift from decisions in the plan (library, pattern, scope) — recorded by `code-review` if found |
1090
- | **Definition of Done** | Phase-level evidence checklist derived from applicable specs and quality gates |
1091
- | **Release readiness** | Report-only operational verdict for a specific candidate and target environment |
1108
+ | Term | Explanation |
1109
+ | ----------------------- | -------------------------------------------------------------------------------------------------------------- |
1110
+ | **Skill** | Full instructions for AI — like an SOP for AI |
1111
+ | **Spec** | Planning document containing all decisions before coding |
1112
+ | **Subagent** | Helper agent for focused exploration/analysis |
1113
+ | **project-context/** | Folder where all spec documents are stored |
1114
+ | **[FORBIDDEN]** | Section in `rules.md` — technical prohibitions scanned by AI before coding |
1115
+ | **[SELF-REVIEW]** | Short developer reflection after each task: security risk, performance, spec assumption |
1116
+ | **Traceability ID** | Stable label (`FEAT-01`, `API-03`) for tracing requirements from PRD to implementation |
1117
+ | **Acceptance Criteria** | Concrete conditions for a task to be considered done |
1118
+ | **scope** | Developer work boundary: frontend-only, backend-only, or fullstack |
1119
+ | **fixMode** | `code-review` preference: report first or fix immediately |
1120
+ | **discoveryDepth** | Brainstorm detail level independent from question batching: quick/standard/critical |
1121
+ | **availableMCPs** | MCPs listed and available for use in this project |
1122
+ | **Confidence Level** | In `spec-init`: High/Medium/Low for claims derived from codebase analysis |
1123
+ | **Evidence Inputs** | In `spec-init`: files/sources used as evidence for a claim |
1124
+ | **Plan status** | Plan file lifecycle status: `review` → `in-progress` → `code-review` → `done` |
1125
+ | **Plan deviation** | Implementation drift from decisions in the plan (library, pattern, scope) — recorded by `code-review` if found |
1126
+ | **Definition of Done** | Phase-level evidence checklist derived from applicable specs and quality gates |
1127
+ | **Release readiness** | Report-only operational verdict for a specific candidate and target environment |
1092
1128
 
1093
1129
  **Traceability ID Scheme:**
1094
1130
 
1095
- | Prefix | Used for |
1096
- |--------|----------------|
1097
- | `FEAT-01` | Main feature in `PRD.md` |
1098
- | `BR-01` | Business rule in `PRD.md` |
1099
- | `NFR-01` | Non-functional requirement in `PRD.md` |
1100
- | `AC-01` | Acceptance Criteria in `PRD.md` |
1101
- | `US-01` | User story in `PRD.md` |
1131
+ | Prefix | Used for |
1132
+ | --------- | ------------------------------------------------------------------ |
1133
+ | `FEAT-01` | Main feature in `PRD.md` |
1134
+ | `BR-01` | Business rule in `PRD.md` |
1135
+ | `NFR-01` | Non-functional requirement in `PRD.md` |
1136
+ | `AC-01` | Acceptance Criteria in `PRD.md` |
1137
+ | `US-01` | User story in `PRD.md` |
1102
1138
  | `DATA-01` | Datastore-native entity/aggregate/collection/stream in `schema.md` |
1103
- | `API-01` | REST/GraphQL/RPC/event operation in `api.md` |
1104
- | `RULE-01` | Rule in `rules.md` referenced across documents |
1139
+ | `API-01` | REST/GraphQL/RPC/event operation in `api.md` |
1140
+ | `RULE-01` | Rule in `rules.md` referenced across documents |
1105
1141
 
1106
1142
  </details>
1107
1143
 
@@ -1163,12 +1199,12 @@ No. Scope, work mode, additional skills, MCPs, review mode, brainstorm pacing, r
1163
1199
 
1164
1200
  When you choose `plan-first`, AI creates a plan file in `project-context/plans/phase-[N]-[slug].md` before coding starts. The plan has a status header that is updated automatically through this lifecycle:
1165
1201
 
1166
- | Status | Meaning |
1167
- |--------|---------|
1168
- | `review` | The plan was just created — you read and review it first. Type `start` if you agree. |
1169
- | `in-progress` | Coding starts after you type `start`. |
1170
- | `code-review` | All tasks in the phase are complete and are being reviewed by `code-review`. |
1171
- | `done` | Code review is complete. If implementation deviated from the plan (wrong library, different pattern), AI adds a note to the plan. If there is no deviation, status changes to `done` with no note. |
1202
+ | Status | Meaning |
1203
+ | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1204
+ | `review` | The plan was just created — you read and review it first. Type `start` if you agree. |
1205
+ | `in-progress` | Coding starts after you type `start`. |
1206
+ | `code-review` | All tasks in the phase are complete and are being reviewed by `code-review`. |
1207
+ | `done` | Code review is complete. If implementation deviated from the plan (wrong library, different pattern), AI adds a note to the plan. If there is no deviation, status changes to `done` with no note. |
1172
1208
 
1173
1209
  Plans are also recognized by `help` (displayed with status) and `add-feature` (updated if the phase is affected).
1174
1210