macca-method 2.1.2 → 3.0.0-rc.1

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 (89) hide show
  1. package/.agents/macca-lock.json +2 -1
  2. package/.agents/macca-managed-skills.txt +1 -0
  3. package/.agents/skills/_shared/references/additional-skills.md +17 -1
  4. package/.agents/skills/_shared/references/brainstorm-session.md +61 -21
  5. package/.agents/skills/_shared/references/config-mutation.md +58 -18
  6. package/.agents/skills/_shared/references/fix-mode.md +21 -7
  7. package/.agents/skills/_shared/references/human-loop.md +2 -0
  8. package/.agents/skills/_shared/references/implementation-principles.md +4 -0
  9. package/.agents/skills/_shared/references/interaction-contract.md +33 -0
  10. package/.agents/skills/_shared/references/invocation-policy.md +14 -3
  11. package/.agents/skills/_shared/references/language-config.md +24 -4
  12. package/.agents/skills/_shared/references/output-ownership.md +12 -5
  13. package/.agents/skills/_shared/references/planning-principles.md +35 -0
  14. package/.agents/skills/_shared/references/scope-delta.md +21 -0
  15. package/.agents/skills/_shared/references/scope-rules.md +1 -1
  16. package/.agents/skills/_shared/references/skill-catalog.md +30 -13
  17. package/.agents/skills/_shared/references/workspace-safety.md +11 -0
  18. package/.agents/skills/_shared/scripts/config-file.js +132 -0
  19. package/.agents/skills/_shared/scripts/config-validator.js +164 -0
  20. package/.agents/skills/_shared/scripts/read-preferences.js +128 -0
  21. package/.agents/skills/add-feature/SKILL.md +24 -18
  22. package/.agents/skills/brainstorm-api/SKILL.md +24 -23
  23. package/.agents/skills/brainstorm-api/assets/api.template.md +11 -23
  24. package/.agents/skills/brainstorm-architecture/SKILL.md +41 -48
  25. package/.agents/skills/brainstorm-architecture/assets/architecture.template.md +24 -16
  26. package/.agents/skills/brainstorm-prd/SKILL.md +26 -28
  27. package/.agents/skills/brainstorm-prd/assets/PRD.template.md +10 -9
  28. package/.agents/skills/brainstorm-rules/SKILL.md +42 -46
  29. package/.agents/skills/brainstorm-rules/assets/rules.template.md +8 -8
  30. package/.agents/skills/brainstorm-schema/SKILL.md +17 -17
  31. package/.agents/skills/brainstorm-schema/assets/schema.template.md +9 -8
  32. package/.agents/skills/brainstorm-styleguide/SKILL.md +27 -26
  33. package/.agents/skills/brainstorm-styleguide/assets/StyleGuide.template.md +27 -51
  34. package/.agents/skills/brainstorm-task/SKILL.md +53 -37
  35. package/.agents/skills/brainstorm-task/assets/Task.template.md +11 -12
  36. package/.agents/skills/bug-fix/SKILL.md +78 -175
  37. package/.agents/skills/bug-fix/assets/bug-log.template.md +61 -0
  38. package/.agents/skills/code-review/SKILL.md +14 -6
  39. package/.agents/skills/code-review/references/review-checklist.md +24 -44
  40. package/.agents/skills/developer/SKILL.md +23 -25
  41. package/.agents/skills/developer/references/close-phase.md +11 -6
  42. package/.agents/skills/developer/references/execute-task.md +15 -8
  43. package/.agents/skills/developer/references/onboarding.md +16 -19
  44. package/.agents/skills/help/SKILL.md +49 -49
  45. package/.agents/skills/meet/SKILL.md +37 -85
  46. package/.agents/skills/quick-dev/SKILL.md +40 -75
  47. package/.agents/skills/release-readiness/SKILL.md +1 -1
  48. package/.agents/skills/setup-macca-method/SKILL.md +79 -0
  49. package/.agents/skills/spec-audit/SKILL.md +21 -17
  50. package/.agents/skills/spec-compliance/SKILL.md +36 -18
  51. package/.agents/skills/spec-init/SKILL.md +53 -22
  52. package/CHANGELOG.md +31 -0
  53. package/README.md +92 -1195
  54. package/bin/macca-method.js +833 -286
  55. package/docs/configuration.md +174 -0
  56. package/docs/troubleshooting.md +180 -0
  57. package/docs/workflows.md +175 -0
  58. package/package.json +48 -4
  59. package/scripts/lib/npm-command.js +76 -0
  60. package/scripts/test-cli-setup.js +869 -0
  61. package/scripts/test-config.js +320 -0
  62. package/scripts/test-install.js +63 -28
  63. package/scripts/test-installer-safety.js +545 -0
  64. package/scripts/test-npm-command.js +143 -0
  65. package/scripts/test-package-safety.js +252 -0
  66. package/scripts/test-preferences.js +475 -0
  67. package/scripts/test-upgrade-legacy.js +11 -21
  68. package/scripts/validate-docs.js +166 -0
  69. package/scripts/validate-package.js +285 -0
  70. package/scripts/validate-skill-behavior.js +914 -12
  71. package/.agents/skills/antislop-copywriting/SKILL.md +0 -372
  72. package/.agents/skills/skill-creator/LICENSE.txt +0 -202
  73. package/.agents/skills/skill-creator/SKILL.md +0 -485
  74. package/.agents/skills/skill-creator/agents/analyzer.md +0 -274
  75. package/.agents/skills/skill-creator/agents/comparator.md +0 -202
  76. package/.agents/skills/skill-creator/agents/grader.md +0 -223
  77. package/.agents/skills/skill-creator/assets/eval_review.html +0 -146
  78. package/.agents/skills/skill-creator/eval-viewer/generate_review.py +0 -471
  79. package/.agents/skills/skill-creator/eval-viewer/viewer.html +0 -1325
  80. package/.agents/skills/skill-creator/references/schemas.md +0 -441
  81. package/.agents/skills/skill-creator/scripts/__init__.py +0 -0
  82. package/.agents/skills/skill-creator/scripts/aggregate_benchmark.py +0 -401
  83. package/.agents/skills/skill-creator/scripts/generate_report.py +0 -326
  84. package/.agents/skills/skill-creator/scripts/improve_description.py +0 -247
  85. package/.agents/skills/skill-creator/scripts/package_skill.py +0 -136
  86. package/.agents/skills/skill-creator/scripts/quick_validate.py +0 -103
  87. package/.agents/skills/skill-creator/scripts/run_eval.py +0 -310
  88. package/.agents/skills/skill-creator/scripts/run_loop.py +0 -328
  89. package/.agents/skills/skill-creator/scripts/utils.py +0 -47
@@ -0,0 +1,174 @@
1
+ # Configuration
2
+
3
+ [README](../README.md) · [Workflows](workflows.md) · [Troubleshooting](troubleshooting.md)
4
+
5
+ MACCA shares preferences across AI hosts through `.agents/developer-config.json`. Configuration is optional for ordinary work. Use [setup-macca-method](../.agents/skills/setup-macca-method/SKILL.md), operated by Galbi, when you explicitly want to inspect or save preferences.
6
+
7
+ ## Show, set up, or change one preference
8
+
9
+ | Request | Result |
10
+ | --- | --- |
11
+ | “Show my MACCA settings.” | Read-only summary of saved values, effective defaults **not saved**, session-only choices, and unconfigured choices. An absent file stays absent. |
12
+ | “Set up MACCA preferences.” | Ask only for missing preferences you want to choose. Name/project are optional; skipped choices and inferred defaults are not saved. |
13
+ | “Set only document language to English.” | Update only that channel's `raw` and `normalized` leaves, preserving its extensions and every unrelated setting. Exact intent already supplies consent. |
14
+ | “Use English for this reply.” | Session-only instruction, not a request to persist a preference. |
15
+
16
+ Setup alone does not create specs or begin implementation. `help` reads and routes settings requests to setup. Other workflows may save a specific explicitly chosen preference under the same mutation contract, without starting a full setup interview.
17
+
18
+ Preference changes apply on the next config read. Restart the AI host when installing/upgrading skill files so it can discover those files; that is separate from reading a changed preference.
19
+
20
+ ## Supported fields: an example, not a required form
21
+
22
+ This is documentation of supported shapes, **not a JSON Schema file**. Every top-level field is optional; known fields that are present must have the expected types and values. The shared validator accepts unknown extensions without rewriting them. This illustrative configuration is not a list of installed or automatically authorized tools in your project:
23
+
24
+ ```json
25
+ {
26
+ "name": "Your name",
27
+ "project": "Project name",
28
+ "languagePreferences": {
29
+ "communication": {
30
+ "raw": "Bahasa Indonesia",
31
+ "normalized": "indonesian"
32
+ },
33
+ "documents": {
34
+ "raw": "English",
35
+ "normalized": "english"
36
+ }
37
+ },
38
+ "developerPreferences": {
39
+ "workMode": "direct",
40
+ "scope": "fullstack"
41
+ },
42
+ "brainstormPreferences": {
43
+ "discussionMode": "one-by-one",
44
+ "recommendations": true,
45
+ "discoveryDepth": "standard"
46
+ },
47
+ "codeReviewPreferences": {
48
+ "fixMode": "report-first"
49
+ },
50
+ "additionalSkills": [
51
+ {
52
+ "name": "laravel-best-practices",
53
+ "purpose": "Use when writing Laravel code",
54
+ "paths": {
55
+ "copilot": ".github/skills/laravel-best-practices/SKILL.md",
56
+ "opencode": ".opencode/skills/laravel-best-practices/SKILL.md",
57
+ "codex": ".agents/skills/laravel-best-practices/SKILL.md"
58
+ }
59
+ }
60
+ ],
61
+ "availableMCPs": ["context7", "supabase"]
62
+ }
63
+ ```
64
+
65
+ | Field | Accepted shape and meaning |
66
+ | --- | --- |
67
+ | `name`, `project` | Optional strings; save labels only when chosen. |
68
+ | `languagePreferences.communication`, `.documents` | Objects with optional string `raw` and `normalized` fields; resolution is described below. |
69
+ | `developerPreferences.workMode` | `direct` or `plan-first`. With no saved mode, explicit task intent can resolve the current mode without saving it. |
70
+ | `developerPreferences.scope` | `frontend`, `backend`, or `fullstack`. Architecture defines file boundaries; missing scope is not unrestricted implementation permission. |
71
+ | `brainstormPreferences.discussionMode` | `one-by-one`, `three-at-a-time`, or `all-at-once`; controls question batching. |
72
+ | `brainstormPreferences.recommendations` | Boolean; `false` is a valid saved choice, not a missing value. |
73
+ | `brainstormPreferences.discoveryDepth` | `quick`, `standard`, or `critical`; controls depth independently of pacing. Evidence can escalate session depth without saving an inferred preference. |
74
+ | `codeReviewPreferences.fixMode` | `report-first` or `fix-then-report`; missing means effective `report-first`. Existing workflow approval gates still apply. |
75
+ | `additionalSkills` | Array of objects with a nonempty `name`, optional string `purpose`, optional `paths` object with string values under host keys, and optional string legacy path fields. |
76
+ | `availableMCPs` | Array of nonempty tool-name strings, or legacy string `"none"`. It records authorization restrictions, not proof of availability. |
77
+
78
+ See [workflow gates](workflows.md#understand-the-two-quality-gates) and the [brainstorm policy](../.agents/skills/_shared/references/brainstorm-session.md) for how preferences affect execution.
79
+
80
+ ## Languages resolve independently
81
+
82
+ For each channel, readers trim and case-fold `normalized`, try `raw` if it is missing or unrecognized, then fall back to Indonesian. They do not copy the other channel's value.
83
+
84
+ | Language | Recognized equivalents |
85
+ | --- | --- |
86
+ | Indonesian | `indonesian`, `id`, `indo`, `indonesia`, `bahasa indonesia` |
87
+ | English | `english`, `en`, `eng`, `inggris`, `bahasa inggris` |
88
+
89
+ New saved choices use canonical `indonesian` or `english`. Existing aliases, empty strings, and unknown strings are reader-resolution concerns; they do not trigger an on-disk rewrite. A fallback is shown as an **effective default (not saved)**. Filenames, IDs, config keys, and code literals remain unchanged. See [language-config.md](../.agents/skills/_shared/references/language-config.md).
90
+
91
+ The **installer's bootstrap defaults** are distinct: on a fresh interactive install, Enter selects Indonesian communication and documents matching the chosen communication language. A fresh unattended install uses those defaults unless flags override them. The setup skill does not materialize skipped defaults, and later runtime language reads remain independent. See [installer options](troubleshooting.md#commands-and-accepted-options).
92
+
93
+ ## Additional skills and MCP authorization
94
+
95
+ Distinguish **installed** (on disk), **available** (exposed/resolvable in the host), and **allowed** (authorized for the task and permitted by the host). Discovery does not execute or install a discovered skill/tool, register an entire scan, or override host permissions.
96
+
97
+ - Missing `additionalSkills` or `availableMCPs` means not configured, not blanket permission. Applicable user/host instructions still determine authorization.
98
+ - `additionalSkills: []` explicitly authorizes no additional skills.
99
+ - `availableMCPs: []` and `availableMCPs: "none"` explicitly deny MCP use. The string `"none"` is a compatibility form for MCPs, not for `additionalSkills`.
100
+ - Save only explicitly authorized names and resolved paths. Do not invent another host's path or remove a restriction because a tool is unavailable today.
101
+
102
+ Canonical additional-skill paths use `paths[currentHost]`. Readers fall back to `path`, then the matching legacy field: `githubPath`, `opencodePath`, `claudePath`, `cursorPath`, `windsurfPath`, `geminiPath`, `kiloPath`, `kimiPath`, or `codexPath`. Preserve legacy paths and other host entries during unrelated updates. A skill list is an array of objects, not an array of strings or a keyed object.
103
+
104
+ For a needed user-named skill with an unresolved path, permitted discovery checks supported workspace locations and global locations such as `~/.config/opencode/skills/`, `~/.claude/skills/`, and `~/.agents/skills/` before asking for its location. Uninspectable locations are unverified, not absent. Details: [additional-skills.md](../.agents/skills/_shared/references/additional-skills.md).
105
+
106
+ ## Settings versus installed host files
107
+
108
+ The MACCA installer places the complete skill collection, including `_shared`, into the selected project-local destinations:
109
+
110
+ | AI host | CLI key (accepted alias) | Skills folder |
111
+ | --- | --- | --- |
112
+ | GitHub Copilot | `copilot` (`github-copilot`) | `.github/skills/` |
113
+ | Cursor | `cursor` | `.cursor/skills/` |
114
+ | Claude Code | `claude` (`claude-code`) | `.claude/skills/` |
115
+ | Windsurf | `windsurf` | `.windsurf/skills/` |
116
+ | Gemini CLI | `gemini` (`gemini-cli`) | `.gemini/skills/` |
117
+ | OpenCode | `opencode` | `.opencode/skills/` |
118
+ | Kilo Code | `kilo` (`kilo-code`) | `.kilo/skills/` |
119
+ | Codex | `codex` (`openai-codex`) | `.agents/skills/` |
120
+ | Kimi CLI | `kimi` (`kimi-cli`) | `.agents/skills/` |
121
+
122
+ These folders hold instructions, not per-host copies of developer preferences. The shared `.agents/` metadata includes selected hosts (`macca-tools.txt`), managed skill names (`macca-managed-skills.txt`), the package/payload lock (`macca-lock.json`), metadata fingerprints (`macca-state.json`), and a transaction journal during an interrupted update (`macca-transaction.json`). They serve installation and recovery, not user preference editing.
123
+
124
+ Changing `additionalSkills` or `availableMCPs` does not install host files or configure an MCP server. Use `install` to add a supported host destination and restart that host. Project specs, task plans, and confirmed bug logs are created later by their owning workflows in `project-context/`.
125
+
126
+ ## Validation, preservation, and privacy
127
+
128
+ The [config-mutation contract](../.agents/skills/_shared/references/config-mutation.md) requires:
129
+
130
+ ```text
131
+ Validate existing config → merge only authorized leaves → validate full candidate
132
+ → recheck current target identity/content → guarded write → validate final file
133
+ ```
134
+
135
+ An invalid existing file stops an update unchanged; a setting request does not authorize replacing it with defaults. Unknown and unrelated fields survive at every level, including language-channel extensions, testing preferences, and legacy paths. Concurrent changes must be preserved, not overwritten by a stale candidate.
136
+
137
+ Store no API keys, passwords, tokens, connection credentials, or environment secrets in this file. Settings display uses the validated allowlisted summary described below. Diagnostics report field/type errors, not source excerpts.
138
+
139
+ ### Safe preference reader
140
+
141
+ Every skill loads the [safe preference reader](../.agents/skills/_shared/scripts/read-preferences.js) by default through [language-config.md](../.agents/skills/_shared/references/language-config.md):
142
+
143
+ ```bash
144
+ node .agents/skills/_shared/scripts/read-preferences.js .agents/developer-config.json
145
+ ```
146
+
147
+ Replace `.agents/skills` with the selected host's installed skills folder. The reader requires its sibling `config-validator.js` and emits a JSON summary with a **closed vocabulary**: fixed keys, canonical languages, finite preference choices, booleans, counts, and `null`; **no free-form strings** from configuration are returned.
148
+
149
+ - Each language channel returns `configured`, `effective` (`indonesian` or `english`), and `source` (`normalized`, `raw`, or `default`). The `raw` source label never includes the saved raw text.
150
+ - Known developer, brainstorm, and review fields return `{ configured, value }`. Missing choices are `null`; `false` stays `false`.
151
+ - Identity returns only `nameSet` and `projectSet`. Additional skills and MCPs return only configured/count indicators, plus MCP `denied`. Names, purposes, paths, tool names, and unknown extension keys/values are withheld.
152
+ - Exit **0** with `absent: true` means config is missing; effective language defaults are **not saved**, and no file or parent directory is created. A present valid file has `absent: false`.
153
+ - Exit **1** reports a redacted error for invalid/unreadable input, a symlink/nonregular file, input over 1 MiB, or unavailable safe reading/validation. Reads do not write or change permissions.
154
+
155
+ If the helper, sibling validator, Node.js runtime, safe file-reading support, or permitted execution is unavailable, stop affected **config-dependent work** and report that preferences could not be checked. There is **no raw-file fallback**, and helper failure must not be presented as absent config. Work independent of those preferences can continue; optional config need not be created.
156
+
157
+ The summary intentionally cannot resolve a skill path or identify an allowed tool. An already-authorized targeted lookup may validate and inspect the necessary field locally under the [config-mutation contract](../.agents/skills/_shared/references/config-mutation.md), returning only a safe boolean/status or performing the permitted local resolution. It must retain regular-file, no-symlink, bounded-read protections and never print raw names, paths, entries, or configuration.
158
+
159
+ ### Optional technical detail: validator module and CLI
160
+
161
+ The installed [shared validator](../.agents/skills/_shared/scripts/config-validator.js) exports:
162
+
163
+ - `validateConfig(value)` → an array of redacted `{ field, message }` errors.
164
+ - `assertValidConfig(value, label)` → throws on invalid input.
165
+
166
+ Its read-only CLI takes exactly one config-file path:
167
+
168
+ ```bash
169
+ node .agents/skills/_shared/scripts/config-validator.js .agents/developer-config.json
170
+ ```
171
+
172
+ Replace `.agents/skills` with your host's installed skills folder when needed. Exit **0** means valid; **1** means missing, unreadable, or invalid input. It neither writes nor migrates configuration and has no `--stdin` option. It validates shapes, not whether a listed tool is installed or permitted.
173
+
174
+ The validator's API and accepted shapes are unchanged by the reader; language normalization and summary filtering belong to the reader. Saved mutations require Node.js and the shared validator. If either is unavailable, mutation stops; read-only show additionally requires the safe reader and never bypasses validation. Normal work does not require creating optional config merely to satisfy the validator. For installation/runtime issues and migration, use [Troubleshooting](troubleshooting.md#migrate-from-2x-to-the-3x-candidate).
@@ -0,0 +1,180 @@
1
+ # Installation and troubleshooting
2
+
3
+ [README](../README.md) · [Workflows](workflows.md) · [Configuration](configuration.md)
4
+
5
+ Use a local project directory, Node.js **22+** with `npx`, and a supported AI host. Start diagnosis with the target path and the reported error, rather than adding `--force` to every retry.
6
+
7
+ ## Install into the intended project
8
+
9
+ From the target project's working directory:
10
+
11
+ ```bash
12
+ npx macca-method@latest --list-tools
13
+ npx macca-method@latest install
14
+ ```
15
+
16
+ Or specify the path explicitly; quote paths containing spaces:
17
+
18
+ ```bash
19
+ npx macca-method@latest install --directory "/path/to/my project" --tool copilot --tool codex --communication-language English --document-language English --yes
20
+ ```
21
+
22
+ On a fresh interactive install, the CLI asks for hosts, communication language (Enter: Indonesian), and document language (Enter: chosen communication language). Saved channels and supplied flags are reused. Name and project are optional flags, not an identity interview.
23
+
24
+ Installation places skills, shared preferences, and installer metadata in the selected host folders and `.agents/`. **It does not generate `project-context/` specs, `Task.md`, phase plans, or a bug log.** Those come from the [project workflows](workflows.md). Restart the AI host after installation/upgrade to discover the files.
25
+
26
+ Use the MACCA installer for the complete collection. Individual skill folders depend on sibling `_shared` resources and shared preferences; generic single-skill installation is not supported for this release.
27
+
28
+ ## Commands and accepted options
29
+
30
+ | Command | Purpose |
31
+ | --- | --- |
32
+ | `install` | Install/reinstall the collection, select hosts, and bootstrap or explicitly update installer-supported preferences. |
33
+ | `upgrade` | Refresh an existing installation using its recorded hosts and managed-skill metadata. |
34
+ | `doctor` | Read-only local installation diagnosis. |
35
+ | `help`, `--help`, `-h` | Show command help. |
36
+ | `--list-tools` | List supported host keys and aliases. |
37
+ | `--version`, `-v` | Show the invoked package version. |
38
+
39
+ With no command, help is shown. The current parser accepts the following option spellings; “Used by” identifies where they have an effect. Install-only flags are not preference updates when passed to `upgrade` or `doctor`.
40
+
41
+ | Option | Used by | Behavior |
42
+ | --- | --- | --- |
43
+ | `--directory`, `-d` | install, upgrade, doctor | Target path; defaults to the current working directory. |
44
+ | `--tool`, `--tools`, `-t` | install | Repeatable or comma-separated host selection; supported keys/aliases are in [Configuration](configuration.md#settings-versus-installed-host-files). Existing recorded hosts are retained. |
45
+ | `--communication-language` | install | Set communication language. |
46
+ | `--document-language`, `--documents-language` | install | Set document language separately. |
47
+ | `--name`, `--project` | install | Save optional labels when supplied. |
48
+ | `--yes`, `-y` | install | Skip prompts. Fresh defaults: Codex if no host selected, Indonesian communication, documents matching communication. Reinstall reuses existing settings unless explicitly overridden. |
49
+ | `--force`, `-f` | install, upgrade | Allow replacement of locally modified managed skills/metadata after review. Does not bypass config validation, unowned collisions, or path/recovery safety. |
50
+
51
+ Value-bearing long options also accept `--option=value`, including both tool and document-language aliases. Short value options use a separate argument. Boolean flags are standalone; combined short flags and invented options are not supported. Use `--directory` for the project path, not a second positional argument.
52
+
53
+ `doctor` takes `--directory` for its target and produces text output. There is **no `--json` option and no CLI `config` command**. For saved settings use the [setup skill or shared validator](configuration.md).
54
+
55
+ ## Update a published installation
56
+
57
+ ```bash
58
+ npx macca-method@latest upgrade --directory "/path/to/project"
59
+ ```
60
+
61
+ `@latest` resolves the latest **published npm package**. A GitHub push or local source edit does not update npm. To test repository changes, invoke the source CLI (for example `node bin/macca-method.js --help` from the source checkout); that is different from testing a published package. Pin a published version for reproducible bootstrap/CI.
62
+
63
+ ### Migrate from 2.x to the 3.x candidate
64
+
65
+ This source tree identifies **3.0.0-rc.1**, a **prerelease candidate** designated for the npm `next` channel, not a stable release. The `@latest` commands in this guide refer to the stable channel. Check availability with `npm view macca-method dist-tags`; when published, use `npx macca-method@3.0.0-rc.1 install` (or `upgrade`) to select this exact candidate, or `@next` for the current prerelease. See the [candidate changelog](../CHANGELOG.md).
66
+
67
+ 1. Back up the target project before upgrading, including locally modified skills, `.agents/` preferences/metadata, and any pending transaction recovery files. Review local edits before deciding which managed copies to replace.
68
+ 2. Move to **Node.js 22+** before invoking the candidate. Dropping runtimes below 22 is a breaking change from 2.x; the configured CI matrix uses **22 and 24**. Other accepted majors do not have that matrix coverage.
69
+ 3. Use an inspected **physical local path** for the target. Symlinked ancestors, Windows UNC/network paths, and device paths are rejected; see [path restrictions](#path-restrictions). A lexical `/tmp` or `/var` path on macOS may resolve through a symlink.
70
+ 4. From the source checkout, inspect with `node bin/macca-method.js doctor --directory "/physical/path/to/project"`, then run `node bin/macca-method.js upgrade --directory "/physical/path/to/project"` when ready. Do not add `--force` by default. It permits replacing reviewed managed edits, not invalid config, unowned folders, unsafe paths, or inconsistent recovery evidence.
71
+ 5. Preserve valid existing preferences, unknown extensions, and accepted legacy fields. Invalid config now blocks writes instead of being replaced with defaults; correct only the reported fields locally. Install the complete collection so the safe preference reader and sibling validator are available to every host. Missing helpers block affected config-dependent work, with no raw-file fallback; see [safe preference reading](configuration.md#safe-preference-reader).
72
+ 6. If setup created only a config file, follow [incomplete setup](#config-only-or-incomplete-setup). For older unmarked payloads, follow [legacy migration](#upgrade-from-110); modified or unknown copies require inspection, not automatic adoption. Restart the AI host after updating, then run doctor again.
73
+
74
+ **Version comparison:** downgrade protection follows SemVer precedence, including prereleases. Stable `3.0.0` is newer than `3.0.0-rc.1`; `rc.10` is newer than `rc.2`. Build metadata does not affect ordering. Invalid recorded versions stop the operation for inspection. Version ordering is not evidence of release readiness; inspect the candidate's validation results separately.
75
+
76
+ Upgrade uses `.agents/macca-tools.txt`, the managed manifest, and lock/ownership evidence. An older package is refused when the installed version is newer, including an unpublished local build. Check the invoked version before retrying with a different package.
77
+
78
+ Ordinary upgrade refreshes managed skills and metadata without generating project specs or rewriting developer preferences. **Recovery is a separate step:** a pending transaction from an interrupted install can restore config and metadata before upgrade proceeds. Read the reported change stage; do not assume config could never change during a recovery attempt.
79
+
80
+ ### Config-only or incomplete setup
81
+
82
+ The setup skill may have created only `.agents/developer-config.json`. That is a valid preferences file, but not a complete installer-managed installation. If upgrade reports missing `macca-tools.txt`, run `install` with the desired host to establish installation metadata. Existing valid preferences are preserved unless explicitly overridden; invalid config must be corrected first.
83
+
84
+ ### Upgrade from 1.1.0
85
+
86
+ The updater compares unmarked legacy skill payloads with fingerprints of the official published `1.1.0` collection. Byte-identical copies can be adopted automatically, including the previous OpenCode `.opencode/skill/` location and meeting-skill rename. Modified or unknown folders are refused: back them up, inspect them, and move conflicting copies aside when appropriate before retrying. `--force` does not turn an unowned folder into a verified official payload.
87
+
88
+ Legacy global Kimi copies are reported, not deleted automatically. Verify the new project-local `.agents/skills/` installation before manually removing obsolete global copies that your host still discovers.
89
+
90
+ ## Run read-only diagnosis
91
+
92
+ ```bash
93
+ npx macca-method@latest doctor --directory "/path/to/project"
94
+ ```
95
+
96
+ Doctor inspects runtime compatibility, target/path safety, config validity with values hidden, selected hosts, manifest/lock consistency, payload/reference integrity, local drift, and pending transactions.
97
+
98
+ | Output | Interpretation |
99
+ | --- | --- |
100
+ | `OK` | The reported check succeeded. |
101
+ | `WARN` | A limitation or drift needs review; warnings alone return exit **0**. |
102
+ | `FAIL` | A failed check was found; doctor returns exit **1**. |
103
+
104
+ Doctor does not write files, repair installation state, or recover transactions. Missing state or older locks without payload fingerprints limit integrity verification; an exit 0 containing warnings is not proof of full integrity. A successful filesystem check also does not establish AI-host/model behavior.
105
+
106
+ ## Match the symptom to a safe next step
107
+
108
+ Install/upgrade errors show a code, affected path, change stage, and next action. Preserve those details when seeking help, with private paths or values redacted as needed.
109
+
110
+ | Symptom | What to check first |
111
+ | --- | --- |
112
+ | Host cannot find MACCA skills | Confirm the CLI's target directory and selected host folder, then restart the host. Confirm the complete collection includes `_shared`; use doctor to check payloads. |
113
+ | `MACCA_NODE_UNSUPPORTED` | Switch to Node.js 22 or 24 and retry; versions below 22 are rejected. |
114
+ | Unverified-runtime notice | Another major at or above 22 is allowed but outside the configured 22/24 matrix. Use a matrix version for that coverage. |
115
+ | Unknown option / unexpected positional argument | Compare with the option table; use `--directory`, and do not pass `--json` or a `config` command. |
116
+ | `MACCA_CONFIG_INVALID` | Back up the file, correct the reported fields locally, and validate it. Do not share raw config or replace unrelated values with defaults. `--force` cannot bypass validation. |
117
+ | Preference reader/helper unavailable | Restore the complete `_shared` installation, Node.js runtime, and permitted safe execution. Stop affected config-dependent work; do not dump raw config or treat helper failure as absent config. |
118
+ | `EACCES`, `EPERM`, or `EBUSY` | Check ownership, permissions, and file locks; close the program holding the path or use the intended writable directory. |
119
+ | Read-only filesystem / `ENOSPC` | Use a writable volume or free space. Preserve transaction evidence before retrying. |
120
+ | `ENOENT` / missing packaged payload | Check the path and parent; restore a complete package or install into an uninitialized target. |
121
+ | Local managed-skill or metadata drift | Back up and inspect the changed content and ownership marker. Decide whether to retain it or explicitly replace managed edits; do not begin with `--force`. |
122
+ | Unowned skill-folder collision | Preserve and inspect the folder; move it aside if appropriate or choose a clean target. Force does not authorize its overwrite. |
123
+ | Newer installed version than invoked package | Check package versions and use an appropriate release/local build; upgrade refuses a silent downgrade. |
124
+ | `MACCA_INPUT_ERROR` | Use a working terminal, or an unattended install with `--yes` and explicit flags. |
125
+ | Pending transaction / recovery refusal | Follow the recovery steps below; retain the journal and backups. |
126
+
127
+ ### Path restrictions
128
+
129
+ - Windows UNC/network and device paths are rejected (`MACCA_UNSUPPORTED_PATH`). Use a local drive path such as `"C:\projects\my app"`.
130
+ - Symlinked target ancestors are conservatively rejected. This includes macOS aliases such as `/tmp` and `/var`, and the same restriction applies on other systems.
131
+ - For an existing directory, resolve its physical path, inspect the result, and pass that path to `--directory`. For example on macOS/Linux:
132
+
133
+ ```bash
134
+ node -p 'require("node:fs").realpathSync("/tmp/my-project")'
135
+ ```
136
+
137
+ The command only prints a path. Use the returned physical path explicitly; keep quotes around paths with spaces.
138
+
139
+ ### Cancellation and interrupted transactions
140
+
141
+ Ctrl+C or EOF **during interactive setup** returns exit **130** (`MACCA_CANCELLED`) before ordinary writes or transaction recovery. This prompt-stage guarantee does not promise rollback of a process interrupted after writes begin.
142
+
143
+ If `.agents/macca-transaction.json` remains:
144
+
145
+ 1. Back up and inspect the project, journal, and associated recovery files.
146
+ 2. Run doctor to inspect the state without changing it.
147
+ 3. Resolve the reported cause, then rerun install/upgrade for validated recovery.
148
+ 4. If recovery refuses modified or inconsistent evidence, preserve it and investigate the reported path rather than deleting the journal or forcing past the check.
149
+
150
+ Recovery verifies transaction entries and config candidates before rollback/cleanup. It may restore earlier files or finish cleanup of a committed transaction. A later error can therefore follow recovery changes; the CLI's change-stage report is important.
151
+
152
+ ## Runtime and platform evidence limits
153
+
154
+ The configured CI matrix is **Ubuntu, Windows, and macOS × Node.js 22 and 24**. The release-triggered workflow is configured to smoke-test the exact published release version on that matrix. This is configuration, not evidence that every run or device has passed. Corresponding run logs are required for platform/version claims; local Linux validation alone does not verify Windows or macOS.
155
+
156
+ ## Maintainer checks from a source checkout
157
+
158
+ Maintainer validation requires **Node.js 22+ and Python 3**. Run from the repository root:
159
+
160
+ ```bash
161
+ npm run validate
162
+ ```
163
+
164
+ The validation script combines syntax checks, skill structure/reference validation, static workflow checks, package checks, installer/config/safety tests, legacy upgrade tests, and an npm pack dry run. Useful focused commands are:
165
+
166
+ ```bash
167
+ node scripts/run-skill-validator.js
168
+ node scripts/validate-skill-behavior.js
169
+ npm run test:config
170
+ npm run test:preferences
171
+ npm run test:cli
172
+ npm run test:safety
173
+ npm run test:upgrade:legacy
174
+ ```
175
+
176
+ The Python-backed skill validator checks skill structure and references. `validate-skill-behavior.js` checks static Markdown contracts, including default preference loading through `language-config.md`; passing it does not execute AI conversations or prove agent behavior. `test:preferences` exercises closed-summary output, redaction, missing/invalid config, bounded reads, and read-only behavior without reading live user preferences. Package/installer tests establish their own bounded evidence, not universal host compatibility.
177
+
178
+ Root `.agents/developer-config.json`, generated `/evals/results/`, and `/evals/*-workspace/` directories are ignored as local artifacts. Evaluation definitions and preparation scripts remain repository resources. Ignore rules do not untrack existing files or stage tracked deletions; review those separately before any later commit.
179
+
180
+ Live-agent scenarios and their evidence protocol are **repository resources**, not part of the installed skill payload: [workflow evaluations](https://github.com/firdaus12p/MACCA-METHOD/blob/main/evals/README.md). Definitions and prepared fixtures remain `NOT RUN` until exercised; they are not passing results, measured token savings, or a release-stability claim.
@@ -0,0 +1,175 @@
1
+ # Workflows
2
+
3
+ [README and 19-skill catalog](../README.md) · [Configuration](configuration.md) · [Troubleshooting](troubleshooting.md)
4
+
5
+ Start with the state of your project and the outcome you want. MACCA's planning skills write decisions into `project-context/`; execution skills implement authorized work and check it against those decisions. Installing MACCA does not generate these project documents.
6
+
7
+ ## Choose a starting point
8
+
9
+ | Your situation | Useful request |
10
+ | --- | --- |
11
+ | New idea, no usable specs | “Use brainstorm-prd to plan an appointment-booking app for a small clinic.” |
12
+ | Existing code, missing or placeholder-only specs | “Use spec-init in guided mode to document this codebase. Preserve existing documents unless I approve their replacement.” |
13
+ | Existing spec needs one decision completed | “Complete only the retention-policy Missing Decision in schema.md; preserve the baseline evidence and other unknowns.” |
14
+ | Approved work is ready | “Implement Phase 2 from Task.md, following its execution rules.” |
15
+ | Unsure what is next | “Use help to recommend the next step from the current project evidence.” |
16
+
17
+ Natural-language intent is enough; `Use the skill <name>` is also explicit. You do not need to address a persona. Roles are assigned by each skill, not selected as a prerequisite to ordinary work. See the README catalog for all 19 skills rather than treating every skill as a required step.
18
+
19
+ ## New project: plan only applicable domains
20
+
21
+ Follow this order for new planning:
22
+
23
+ ```text
24
+ PRD → architecture → applicable schema → applicable API → applicable StyleGuide
25
+ → rules → spec-audit (recommended) → Task → authorized implementation
26
+ ```
27
+
28
+ | Decision | Owner and output | When it applies |
29
+ | --- | --- | --- |
30
+ | Product scope and outcomes | `brainstorm-prd` → `PRD.md` | Establish approved requirements first. |
31
+ | Technical boundaries and operations | `brainstorm-architecture` → `architecture.md` | Required before domain design and implementation. |
32
+ | Persistence | `brainstorm-schema` → `schema.md` | Only for persisted data within scope. |
33
+ | Exposed or consumed contracts | `brainstorm-api` → `api.md` | REST, GraphQL, RPC, events, or integrations actually needed. |
34
+ | UI/UX | `brainstorm-styleguide` → `StyleGuide.md` | Only for in-scope UI; branches from architecture and feeds rules. |
35
+ | Coding and testing conventions | `brainstorm-rules` → `rules.md` | After architecture and all applicable domain inputs. |
36
+ | Verifiable tasks and phases | `brainstorm-task` → `Task.md` | Derive work from applicable approved specs. |
37
+
38
+ **A backend does not automatically need persistence.** A stateless provider API needs architecture and an API contract; schema can be `N/A — no in-scope persistence`. A frontend consuming an external API can document its consumer contract without designing backend storage. StyleGuide does not replace data/API decisions or rules. See the [API planning contract](../.agents/skills/brainstorm-api/SKILL.md).
39
+
40
+ Use `N/A` with a reason only for genuinely inapplicable inputs. An applicable but missing decision is unresolved, not `N/A`. Plan the smallest sufficient solution while retaining necessary security, accessibility, integrity, validation, and recovery controls; template examples are not automatic features or infrastructure.
41
+
42
+ Planning reuses saved pacing and recommendations, including `recommendations: false`. Discussion depth is independent: brief (`quick`) only for explicitly disposable prototypes, normal (`standard`) for production by default, and very thorough (`critical`) for material risk such as payments or sensitive data. Greater depth means better risk questions, not automatically more components. See [planning modes and discussion policy](../.agents/skills/_shared/references/brainstorm-session.md).
43
+
44
+ ## Existing project: establish an evidence-backed baseline
45
+
46
+ [spec-init](../.agents/skills/spec-init/SKILL.md) documents what exists. An empty `project-context/` directory or template placeholders do not count as usable specs.
47
+
48
+ 1. Choose **batch** (all applicable documents together) or **guided** (one document, review, then continue).
49
+ 2. Generate in evidence order: `architecture.md` → applicable `schema.md` → applicable `api.md` → applicable `StyleGuide.md` → `rules.md` → `PRD.md`. PRD comes last because it is synthesized from observed behavior.
50
+ 3. Review `Input Evidence`, `Confidence Summary`, assumptions, and `Missing Decisions`.
51
+ 4. Complete selected or blocking Missing Decisions through their owning brainstorm skill, then check consistency with `spec-audit`.
52
+ 5. Ask `brainstorm-task` to plan approved remaining work. Start `developer` only with implementation authorization.
53
+
54
+ Confidence means **High** for direct source evidence, **Medium** for a stated strong inference, and **Low** for a weak inference requiring verification. It is not proof that acceptance tests passed or that product policy was approved.
55
+
56
+ Task planning distinguishes:
57
+
58
+ - **Existing verified:** retain completion and its evidence.
59
+ - **Existing unverified:** plan verification or decision work, not replacement by default.
60
+ - **Gaps:** plan implementation only for demonstrated, approved differences from requirements.
61
+
62
+ Baseline approval does not authorize rebuilding existing features or implementing every observed gap. `spec-init` does not author `Task.md`; that belongs to [brainstorm-task](../.agents/skills/brainstorm-task/SKILL.md).
63
+
64
+ ### Complete or update an existing spec without regenerating it
65
+
66
+ Name the document and the selected decision or section:
67
+
68
+ > Use brainstorm-prd to complete only the rollout Missing Decision. Keep Input Evidence, Confidence Summary, stable IDs, unrelated text, and all other unresolved decisions.
69
+
70
+ The owner asks targeted questions and obtains approval for the bounded update, reusing approval already covering that exact change. A newly approved policy does not turn into a claim that existing code implements it. Full regeneration requires an explicit request and approval naming the files to replace, including placeholders. See [bounded completion](../.agents/skills/_shared/references/brainstorm-session.md) and [output ownership](../.agents/skills/_shared/references/output-ownership.md).
71
+
72
+ ## Implement a task or phase
73
+
74
+ [developer](../.agents/skills/developer/SKILL.md) needs clear implementation intent. Existing tasks alone do not start execution. Before code changes, `architecture.md` and `rules.md` are required; read schema, API, and UI contracts when relevant, and PRD when product behavior needs clarification. Scan applicable `[FORBIDDEN]` rules and respect the authorized file/scope boundary.
75
+
76
+ ### Direct, plan-first, and execution cadence
77
+
78
+ - **Direct:** implement the authorized task using the applicable specs and validation policy.
79
+ - **Plan-first:** write `project-context/plans/phase-[N]-[slug].md` with goal, scope, files, risks, and validation. It starts at `status: review`; after the user's `start`, it becomes `in-progress`.
80
+ - **Execution cadence:** `Task.md` separately determines whether to stop after each task or after a phase. Work mode does not erase those stops or authorize the next phase.
81
+
82
+ Plan status follows `review → in-progress → code-review → done`. The developer owns the final transition after all phase tasks, applicable Definition of Done, formal spec synchronization, and both quality gates have evidence. A passing task or standalone review does not close a phase.
83
+
84
+ Practical requests:
85
+
86
+ > Implement Task 2.1 only, then stop. Use the testing workflow in rules.md.
87
+
88
+ > Plan Phase 3 first. I want to review the files, risks, and validation before coding.
89
+
90
+ Per task: understand acceptance criteria → reuse existing capabilities → implement under the testing policy → internal self-review → validate → record progress. Test-first is required when `rules.md` selects it; it is not imposed on every project. Source details: [task execution](../.agents/skills/developer/references/execute-task.md), [planning](../.agents/skills/developer/references/onboarding.md), and [phase closure](../.agents/skills/developer/references/close-phase.md).
91
+
92
+ ### Small changes and approved technical deltas
93
+
94
+ Use [quick-dev](../.agents/skills/quick-dev/SKILL.md) for a small, clearly anchored layout, copy, styling, or minor logic change. It records the task and runs the same two gates at task scope. New features, migrations, new API endpoints, changes exceeding five files, or work without a current task/phase anchor route to developer. Broader post-task maintenance stays with developer and receives a traceable delta task/phase.
95
+
96
+ An approved technical change not yet in formal specs needs one `## Approved Scope Delta` record **before coding**:
97
+
98
+ - Plan-first: use the active phase plan.
99
+ - Quick-dev: use a lightweight entry under the related task in `Task.md`.
100
+ - Direct: use `Task.md` or a minimal active phase plan.
101
+
102
+ Record approval, task/phase anchor, `DELTA-*` ID, bounded change, affected files/specs, acceptance criteria, validation, and owning-skill sync checklist. The explicit bounded request can supply approval; new business decisions still need their owner.
103
+
104
+ Quick-dev can finish a verified task with **pending formal spec sync** visible. Before phase closure, developer collects deltas from both locations, completes the named updates through the owning skills, and validates the affected document pairs. Unresolved sync blocks phase closure. See the [scope-delta contract](../.agents/skills/_shared/references/scope-delta.md).
105
+
106
+ ## Understand the two quality gates
107
+
108
+ ```text
109
+ Implementation and validation → spec-compliance → code-review → origin's result
110
+ ```
111
+
112
+ 1. [spec-compliance](../.agents/skills/spec-compliance/SKILL.md) checks implementation against applicable requirements, contracts, rules, acceptance criteria, and scope (SC-01–SC-08).
113
+ 2. [code-review](../.agents/skills/code-review/SKILL.md) checks code quality and security. Its [canonical checklist](../.agents/skills/code-review/references/review-checklist.md) contains the 27 CR checks and 10 SEC checks.
114
+
115
+ Both use the same review unit: task, phase, or bug. Unfinished sibling tasks do not block an otherwise complete task review. `spec-audit` serves a different purpose: consistency between documents, rather than implementation against documents.
116
+
117
+ **Read the result accurately:** `N/A` means a check does not apply, with a reason. `NOT VERIFIED` means required evidence is missing. Zero findings is not a verified pass when evidence is absent. Clean child reviews feed one combined result at the originating workflow; concise output does not remove checks.
118
+
119
+ `codeReviewPreferences.fixMode` controls remediation:
120
+
121
+ | Mode | Behavior |
122
+ | --- | --- |
123
+ | `report-first` (default) | Report evidenced fixes, then wait before applying them. A correction gate requires a **non-empty actionable fix manifest** with IDs, targets, bounded changes, and validation. |
124
+ | `fix-then-report` | Apply authorized actionable BLOCKER/MAJOR fixes, validate, then report. MINOR findings are discussed; INFO is report-only. |
125
+
126
+ Clean and INFO-only reports do not ask for repair approval. Missing evidence alone does not justify invented fixes or a correction gate. A reply such as `yes`, `fix`, or `continue` approves the active manifest; named IDs approve only those fixes. The workflow resumes at its recorded return step rather than restarting setup. Bug implementation approval and other scope/destructive-change gates still apply. Exact gate text and resume rules live in [fix-mode.md](../.agents/skills/_shared/references/fix-mode.md).
127
+
128
+ ## Fix a bug, including prevention
129
+
130
+ > Use bug-fix: submitting an empty quantity crashes the order form. It should show a validation error. Reproduce with these steps: …
131
+
132
+ [bug-fix](../.agents/skills/bug-fix/SKILL.md) follows this sequence:
133
+
134
+ ```text
135
+ Bug-log check → diagnosis and related-pattern/caller checks
136
+ → root cause + fix/prevention manifest → explicit implementation approval
137
+ → fix and prevention → regression validation → spec-compliance → code-review
138
+ → user confirms checked result → append bug-log
139
+ ```
140
+
141
+ The first implementation approval is required regardless of fix mode. Prevention is disclosed with the fix: a focused test, a justified spec/rule guard, or repeatable manual steps. Validate affected behavior and preserve safe fail-before/pass-after evidence where feasible; disclose any limitation.
142
+
143
+ After regression validation and both gates pass, the user confirms whether the checked result works. Only then is `project-context/bug-log.md` created/appended. New code, tests, or guards discovered after confirmation require new bounded approval, validation, both gates, and confirmation of the revised result before logging.
144
+
145
+ ## Expand product scope
146
+
147
+ > Use add-feature to add customer CSV export. Show the impact on existing specs and plans before updating them.
148
+
149
+ [add-feature](../.agents/skills/add-feature/SKILL.md) analyzes every document's applicability and impact, obtains approval, then updates every affected spec and existing phase plan while preserving unrelated content and IDs. It delegates **all `Task.md` authoring to `brainstorm-task`**, whether the file exists or is missing. The task-planning handoff prepares work; implementation starts with separate authorization to developer.
150
+
151
+ ## Discuss a decision with the team
152
+
153
+ > Use meet. Agenda: choose a rollout approach. Outcome: one recommendation and unresolved risks. Participants: Fachri, Firdaus, Ikhsan. Constraints: one maintainer and no extra infrastructure. Evidence: the rollout section of PRD.md.
154
+
155
+ [meet](../.agents/skills/meet/SKILL.md) is one structured, discussion-only round. It reuses the agenda, desired outcome, and constraints supplied or clearly inferable from context, asking only material gaps rather than repeating a form; evidence is optional. Available participants are Galbi (product), Fachri (technical design), Akram (UI/UX), Firdaus (implementation), and Ikhsan (failure analysis).
156
+
157
+ Name participants, explicitly choose `all`, or delegate selection to Galbi, who chooses relevant roles and briefly explains why. Without selection or delegation, Galbi recommends a bounded set of roles and asks one participant choice; it never defaults to all. Only selected participants contribute, each exactly once, in the fixed order above, with explicit evidence/assumption labels. Contributions stay complete and concise; five subheadings per persona are not required. Galbi always facilitates and summarizes in the same response, contributing as a participant only when selected. There are no rebuttals or fabricated consensus.
158
+
159
+ The summary separates recommendations from **user-approved decisions**, each tied to its exact user approval source and scope. Team agreement is not authorization. Open questions and next steps appear only when useful; omit empty fields and status gates. No-change conclusions and general discussion need no artifact, task, or next skill. Artifact handoffs are conditional on a concrete in-scope persistent change and report the target, owning skill, bounded change, and approval or pending choice. MACCA preferences belong to `setup-macca-method`, not `rules.md`.
160
+
161
+ The meeting is report-only: it makes no file writes or status changes and executes no follow-up skills. Later authorized writes go to the appropriate owner. It closes automatically; a clear natural-language request such as “continue discussing the rollout risks” can start one new round with a new or refined agenda, reusing still-applicable context and participant choices. The literal skill name is not required. It does not automatically reopen indefinitely; a vague continuation needs only the material clarification.
162
+
163
+ ## Check release readiness
164
+
165
+ > Use release-readiness for commit `<candidate>` targeting staging. Report the evidence and blockers.
166
+
167
+ After completed phases, check final document consistency with `spec-audit`; before release, use [release-readiness](../.agents/skills/release-readiness/SKILL.md). It consumes existing quality evidence and checks candidate-specific build/smoke results, configuration, applicable migration/recovery, rollback, observability, compatibility, and UI evidence.
168
+
169
+ The verdict is `READY`, `CONDITIONAL`, or `NOT READY`; missing required evidence remains `NOT VERIFIED`. This is a report-only audit: it does not deploy, publish, apply migrations, rotate secrets, or change infrastructure. A verdict applies to the checked candidate and relevant configuration.
170
+
171
+ ## Follow the trace without duplicating it
172
+
173
+ Stable IDs connect requirements to contracts, tasks, and evidence: `FEAT-*`, `BR-*`, `AC-*`, `NFR-*`, and `US-*` for product requirements; `DATA-*` for persisted entities; `API-*` for operations; `RULE-*` for rules; `DELTA-*` for approved technical changes. Preserve existing IDs rather than renumbering during updates.
174
+
175
+ Use the [ownership matrix](../.agents/skills/_shared/references/output-ownership.md), [task-authoring rules](../.agents/skills/brainstorm-task/SKILL.md), and [interaction contract](../.agents/skills/_shared/references/interaction-contract.md) for exact handoffs. These guides summarize the workflow; the linked skill instructions and checklists carry its detailed requirements.
package/package.json CHANGED
@@ -1,10 +1,17 @@
1
1
  {
2
2
  "name": "macca-method",
3
- "version": "2.1.2",
3
+ "version": "3.0.0-rc.1",
4
4
  "description": "CLI installer for MACCA AI spec-driven development skills.",
5
5
  "license": "MIT",
6
6
  "scripts": {
7
- "validate": "node --check ./bin/macca-method.js && node --check ./scripts/test-install.js && node --check ./scripts/test-upgrade-legacy.js && node --check ./scripts/run-skill-validator.js && node --check ./scripts/validate-skill-behavior.js && node ./scripts/run-skill-validator.js && node ./scripts/validate-skill-behavior.js && npm run test:install && npm run test:upgrade:legacy && npm pack --dry-run",
7
+ "validate": "node --check ./bin/macca-method.js && node --check ./scripts/test-install.js && node --check ./scripts/test-upgrade-legacy.js && node --check ./scripts/run-skill-validator.js && node --check ./scripts/validate-package.js && node --check ./scripts/validate-docs.js && node --check ./scripts/validate-skill-behavior.js && node --check ./.agents/skills/_shared/scripts/config-validator.js && node --check ./.agents/skills/_shared/scripts/read-preferences.js && node --check ./scripts/lib/npm-command.js && node --check ./scripts/test-config.js && node --check ./scripts/test-preferences.js && node --check ./scripts/test-package-safety.js && node --check ./scripts/test-cli-setup.js && node --check ./scripts/test-npm-command.js && node ./scripts/run-skill-validator.js && node ./scripts/validate-skill-behavior.js && node ./scripts/validate-docs.js && npm run test:npm && npm run test:package && npm run test:config && npm run test:preferences && npm run test:cli && npm run test:safety && npm run test:install && npm run test:upgrade:legacy && npm pack --dry-run --ignore-scripts",
8
+ "prepublishOnly": "npm run validate",
9
+ "test:package": "node scripts/test-package-safety.js",
10
+ "test:config": "node scripts/test-config.js",
11
+ "test:preferences": "node --check .agents/skills/_shared/scripts/config-file.js && node scripts/test-preferences.js",
12
+ "test:cli": "node scripts/test-cli-setup.js",
13
+ "test:npm": "node scripts/test-npm-command.js",
14
+ "test:safety": "node scripts/test-installer-safety.js",
8
15
  "test:install": "node ./scripts/test-install.js",
9
16
  "test:install:published": "node ./scripts/test-install.js --published",
10
17
  "test:upgrade:legacy": "node ./scripts/test-upgrade-legacy.js"
@@ -14,18 +21,55 @@
14
21
  },
15
22
  "files": [
16
23
  "bin/",
17
- ".agents/",
24
+ ".agents/legacy-payloads.json",
25
+ ".agents/macca-lock.json",
26
+ ".agents/macca-managed-skills.txt",
27
+ ".agents/skills/_shared/",
28
+ ".agents/skills/_shared/scripts/config-validator.js",
29
+ ".agents/skills/_shared/scripts/read-preferences.js",
30
+ ".agents/skills/add-feature/",
31
+ ".agents/skills/brainstorm-api/",
32
+ ".agents/skills/brainstorm-architecture/",
33
+ ".agents/skills/brainstorm-prd/",
34
+ ".agents/skills/brainstorm-rules/",
35
+ ".agents/skills/brainstorm-schema/",
36
+ ".agents/skills/brainstorm-styleguide/",
37
+ ".agents/skills/brainstorm-task/",
38
+ ".agents/skills/bug-fix/",
39
+ ".agents/skills/code-review/",
40
+ ".agents/skills/developer/",
41
+ ".agents/skills/help/",
42
+ ".agents/skills/meet/",
43
+ ".agents/skills/quick-dev/",
44
+ ".agents/skills/release-readiness/",
45
+ ".agents/skills/setup-macca-method/",
46
+ ".agents/skills/spec-audit/",
47
+ ".agents/skills/spec-compliance/",
48
+ ".agents/skills/spec-init/",
18
49
  "scripts/test-install.js",
50
+ "scripts/test-installer-safety.js",
51
+ "scripts/test-package-safety.js",
52
+ "scripts/test-config.js",
53
+ "scripts/test-preferences.js",
54
+ "scripts/test-cli-setup.js",
55
+ "scripts/test-npm-command.js",
56
+ "scripts/lib/npm-command.js",
19
57
  "scripts/test-upgrade-legacy.js",
20
58
  "scripts/run-skill-validator.js",
21
59
  "scripts/validate-skill-behavior.js",
60
+ "scripts/validate-package.js",
61
+ "scripts/validate-docs.js",
22
62
  "flow.webp",
23
63
  "image-macca-method.webp",
24
64
  "README.md",
65
+ "CHANGELOG.md",
66
+ "docs/workflows.md",
67
+ "docs/configuration.md",
68
+ "docs/troubleshooting.md",
25
69
  "LICENSE"
26
70
  ],
27
71
  "engines": {
28
- "node": ">=18"
72
+ "node": ">=22"
29
73
  },
30
74
  "keywords": [
31
75
  "ai",