acstack 0.54.2 → 0.54.4
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.
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +6 -9
- package/agents/codex/frontend-verifier.toml +1 -1
- package/agents/codex/task-checker.toml +1 -1
- package/agents/codex/task-executor.toml +3 -1
- package/agents/codex/test-writer.toml +3 -1
- package/agents/frontend-verifier.md +1 -1
- package/agents/task-checker.md +1 -1
- package/agents/task-executor.md +3 -1
- package/agents/test-writer.md +3 -1
- package/cli/package.json +1 -1
- package/docs/config-reference.md +8 -3
- package/hooks/lib/read-guard.mjs +4 -1
- package/hooks/session-start.sh +0 -5
- package/orchestrator/AGENTS.md +10 -2
- package/package.json +1 -1
- package/pi/agents/frontend-verifier.md +1 -1
- package/pi/agents/task-checker.md +1 -1
- package/pi/agents/task-executor.md +3 -1
- package/pi/agents/test-writer.md +3 -1
- package/pi/extension.ts +4 -11
- package/skills/commit/SKILL.md +3 -3
- package/skills/explore/SKILL.md +5 -3
- package/skills/implement/SKILL.md +11 -5
- package/skills/implement/design-pass.md +2 -0
- package/skills/map/SKILL.md +7 -3
- package/skills/pre-commit-review/SKILL.md +6 -6
- package/skills/quick-fix/SKILL.md +5 -3
- package/skills/test-conventions/SKILL.md +2 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "acstack",
|
|
3
3
|
"description": "Agentic coding stack where planning grows only as far as needed: a map of decisions, tasks, checks, and handoffs behind a pluggable tracker.",
|
|
4
|
-
"version": "0.54.
|
|
4
|
+
"version": "0.54.4",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "ac8318740"
|
|
7
7
|
},
|
package/README.md
CHANGED
|
@@ -55,13 +55,10 @@ Install the plugin:
|
|
|
55
55
|
/plugin install acstack@ac-agentic-coding
|
|
56
56
|
```
|
|
57
57
|
|
|
58
|
-
Then, in your project
|
|
58
|
+
Then, in your Git repository, use `/acstack:implement`, `/acstack:quick-fix`, or `/acstack:pre-commit-review` directly. Without project configuration, ACStack follows repository instructions and discovers tooling from manifests, tests, and CI.
|
|
59
59
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
- `/acstack:setup` detects the project type, then writes `project.yaml` with workflow settings into the project folder
|
|
60
|
+
- Optional: `/acstack:setup` detects the project type and writes `project.yaml` for saved workflow settings and storage-backed features such as maps and living specs
|
|
61
|
+
- Existing configuration keeps its gates; invalid configuration or project-data conflicts require repair, not an unconfigured fallback
|
|
65
62
|
- All ACStack-owned project records live in one project folder per repository, shared by all of its worktrees
|
|
66
63
|
- `~/.claude/acstack/bin/acstack project-data path` prints it; by default it is `~/.acstack/projects/<key>/`, outside the repository
|
|
67
64
|
- Run `acstack project-data mode tracked` to keep the records in the repository's `.acstack/` and commit them instead
|
|
@@ -69,7 +66,7 @@ Then, in your project:
|
|
|
69
66
|
- Update installed ACStack tools before migrating an older project
|
|
70
67
|
- Stop old agents and reviews, run `~/.claude/acstack/bin/acstack project-data migrate`, then restart with updated tools
|
|
71
68
|
- Migration aborts on collisions without overwrites or Git index changes; tracked old paths become pending deletions
|
|
72
|
-
- The SessionStart hook loads the orchestrator instructions
|
|
69
|
+
- The SessionStart hook loads the orchestrator instructions in Git repositories, even without project setup
|
|
73
70
|
- Your CLAUDE.md stays clean for project-specific content
|
|
74
71
|
- Upgrading from a version before 0.8.0 means deleting one stale `@import` line (see [docs/migrate-0.8.md](docs/migrate-0.8.md))
|
|
75
72
|
|
|
@@ -82,7 +79,7 @@ pi install npm:@tintinweb/pi-subagents
|
|
|
82
79
|
pi install npm:acstack
|
|
83
80
|
```
|
|
84
81
|
|
|
85
|
-
Then
|
|
82
|
+
Then use the general workflows in your Git repository immediately. Run `/acstack:setup` only when you want saved project settings or storage-backed features, as described above.
|
|
86
83
|
|
|
87
84
|
- Every skill runs under the same name as on Claude Code, e.g. `/acstack:map`
|
|
88
85
|
- `/acstack map` does the same
|
|
@@ -92,7 +89,7 @@ Then, in your project, run `/acstack:setup`.
|
|
|
92
89
|
- The extension lists the skills in the system prompt instead, so the model still reads one when the task matches
|
|
93
90
|
- `pi/extension.ts` does what the Claude Code hooks do
|
|
94
91
|
- It links the CLI at `~/.claude/acstack/bin/acstack`
|
|
95
|
-
- It adds the orchestrator instructions
|
|
92
|
+
- It adds the orchestrator instructions in Git repositories, even without project setup
|
|
96
93
|
- It lists ACStack's skills in the system prompt in every session
|
|
97
94
|
- It re-injects a handoff after a compaction
|
|
98
95
|
- It nudges with a continuity-versus-freshness checkpoint as the context fills
|
|
@@ -33,7 +33,7 @@ ACStack keeps project data in the project folder, the path `~/.claude/acstack/bi
|
|
|
33
33
|
|
|
34
34
|
You do not read `frontend.browser.mode` or `frontend.browser.fallback`. Step 3 asks the ACStack CLI which browser mode to use, and the CLI reads both.
|
|
35
35
|
|
|
36
|
-
If `<project folder>/project.yaml` has no `frontend` section, report SKIP and exit.
|
|
36
|
+
If `<project folder>/project.yaml` is absent or has no `frontend` section, report SKIP (no configured frontend verification) and exit. Do not create configuration or require setup for general work. Report unreadable or invalid configuration and project-data resolution errors instead of treating them as absent.
|
|
37
37
|
|
|
38
38
|
## Step 0: Read the knowledge base
|
|
39
39
|
|
|
@@ -15,7 +15,7 @@ You are read-only: do not edit source, tests, or specs.
|
|
|
15
15
|
## Establish scope and ownership
|
|
16
16
|
|
|
17
17
|
Read the supplied requirements, affected paths, known risks, and available command results.
|
|
18
|
-
Read `project.yaml` in the project folder that `~/.claude/acstack/bin/acstack project-data path` prints for commands, directories, environment activation, and applicable frontend gates.
|
|
18
|
+
Read `project.yaml` when present in the project folder that `~/.claude/acstack/bin/acstack project-data path` prints for commands, directories, environment activation, and applicable frontend gates. Without it, discover tooling from repository instructions, manifests, existing tests, and CI under Project configuration in `orchestrator/AGENTS.md`. Do not require setup, invent commands, or bypass invalid config or resolution errors.
|
|
19
19
|
|
|
20
20
|
- Distinguish focused review from ownership of completion verification
|
|
21
21
|
- If the assignment is unclear, clarify it with the delegating session before duplicating checks
|
|
@@ -17,7 +17,9 @@ Implement the assigned requirements under the shared Implementation discipline i
|
|
|
17
17
|
|
|
18
18
|
## Project configuration
|
|
19
19
|
|
|
20
|
-
Read `project.yaml` in the project folder that `~/.claude/acstack/bin/acstack project-data path` prints
|
|
20
|
+
Read `project.yaml` when present in the project folder that `~/.claude/acstack/bin/acstack project-data path` prints. Without configuration, discover settings from repository instructions, manifests, existing tests, and CI under Project configuration in `orchestrator/AGENTS.md`; do not require setup or invent commands. Report invalid config and resolution errors rather than bypassing them.
|
|
21
|
+
|
|
22
|
+
Configured settings:
|
|
21
23
|
|
|
22
24
|
- `directories.source` – where to write source code
|
|
23
25
|
- `directories.tests` – test directory, subject to assigned ownership
|
|
@@ -26,7 +26,9 @@ You write tests from requirements and application programming interface (API) co
|
|
|
26
26
|
|
|
27
27
|
## Project configuration
|
|
28
28
|
|
|
29
|
-
Read `project.yaml` in the project folder that `~/.claude/acstack/bin/acstack project-data path` prints
|
|
29
|
+
Read `project.yaml` when present in the project folder that `~/.claude/acstack/bin/acstack project-data path` prints. Without configuration, discover settings from repository instructions, manifests, existing tests, and CI under Project configuration in `orchestrator/AGENTS.md`; do not require setup or invent commands. Report invalid config and resolution errors rather than bypassing them.
|
|
30
|
+
|
|
31
|
+
Configured settings:
|
|
30
32
|
|
|
31
33
|
- `directories.tests` – where to create test files
|
|
32
34
|
- `directories.source` – source code root (for mirroring structure)
|
|
@@ -33,7 +33,7 @@ ACStack keeps project data in the project folder, the path `~/.claude/acstack/bi
|
|
|
33
33
|
|
|
34
34
|
You do not read `frontend.browser.mode` or `frontend.browser.fallback`. Step 3 asks the ACStack CLI which browser mode to use, and the CLI reads both.
|
|
35
35
|
|
|
36
|
-
If `<project folder>/project.yaml` has no `frontend` section, report SKIP and exit.
|
|
36
|
+
If `<project folder>/project.yaml` is absent or has no `frontend` section, report SKIP (no configured frontend verification) and exit. Do not create configuration or require setup for general work. Report unreadable or invalid configuration and project-data resolution errors instead of treating them as absent.
|
|
37
37
|
|
|
38
38
|
## Step 0: Read the knowledge base
|
|
39
39
|
|
package/agents/task-checker.md
CHANGED
|
@@ -15,7 +15,7 @@ You are read-only: do not edit source, tests, or specs.
|
|
|
15
15
|
## Establish scope and ownership
|
|
16
16
|
|
|
17
17
|
Read the supplied requirements, affected paths, known risks, and available command results.
|
|
18
|
-
Read `project.yaml` in the project folder that `~/.claude/acstack/bin/acstack project-data path` prints for commands, directories, environment activation, and applicable frontend gates.
|
|
18
|
+
Read `project.yaml` when present in the project folder that `~/.claude/acstack/bin/acstack project-data path` prints for commands, directories, environment activation, and applicable frontend gates. Without it, discover tooling from repository instructions, manifests, existing tests, and CI under Project configuration in `orchestrator/AGENTS.md`. Do not require setup, invent commands, or bypass invalid config or resolution errors.
|
|
19
19
|
|
|
20
20
|
- Distinguish focused review from ownership of completion verification
|
|
21
21
|
- If the assignment is unclear, clarify it with the delegating session before duplicating checks
|
package/agents/task-executor.md
CHANGED
|
@@ -17,7 +17,9 @@ Implement the assigned requirements under the shared Implementation discipline i
|
|
|
17
17
|
|
|
18
18
|
## Project configuration
|
|
19
19
|
|
|
20
|
-
Read `project.yaml` in the project folder that `~/.claude/acstack/bin/acstack project-data path` prints
|
|
20
|
+
Read `project.yaml` when present in the project folder that `~/.claude/acstack/bin/acstack project-data path` prints. Without configuration, discover settings from repository instructions, manifests, existing tests, and CI under Project configuration in `orchestrator/AGENTS.md`; do not require setup or invent commands. Report invalid config and resolution errors rather than bypassing them.
|
|
21
|
+
|
|
22
|
+
Configured settings:
|
|
21
23
|
|
|
22
24
|
- `directories.source` – where to write source code
|
|
23
25
|
- `directories.tests` – test directory, subject to assigned ownership
|
package/agents/test-writer.md
CHANGED
|
@@ -26,7 +26,9 @@ You write tests from requirements and application programming interface (API) co
|
|
|
26
26
|
|
|
27
27
|
## Project configuration
|
|
28
28
|
|
|
29
|
-
Read `project.yaml` in the project folder that `~/.claude/acstack/bin/acstack project-data path` prints
|
|
29
|
+
Read `project.yaml` when present in the project folder that `~/.claude/acstack/bin/acstack project-data path` prints. Without configuration, discover settings from repository instructions, manifests, existing tests, and CI under Project configuration in `orchestrator/AGENTS.md`; do not require setup or invent commands. Report invalid config and resolution errors rather than bypassing them.
|
|
30
|
+
|
|
31
|
+
Configured settings:
|
|
30
32
|
|
|
31
33
|
- `directories.tests` – where to create test files
|
|
32
34
|
- `directories.source` – source code root (for mirroring structure)
|
package/cli/package.json
CHANGED
package/docs/config-reference.md
CHANGED
|
@@ -2,13 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
*Every key in `project.yaml`, the values it takes, its default, and what changes when you change it.*
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Optional `<project folder>/project.yaml` holds saved ACStack project settings.
|
|
6
6
|
The project folder is the repository's ACStack data folder, the path `~/.claude/acstack/bin/acstack project-data path` prints (section 1 explains where it lives).
|
|
7
7
|
|
|
8
|
+
General implementation, investigation, and review work without setup. Without this file, agents use repository instructions, manifests, existing tests, and CI to discover commands and directories. They do not invent commands or create configuration automatically. Run `/acstack:setup` when you want saved settings or storage-backed features such as maps and living specs.
|
|
9
|
+
|
|
10
|
+
Existing configuration keeps its gates. Unreadable or invalid configuration, legacy data, and project-data conflicts require the reported repair; they are not absent-config fallbacks. Orphan warnings alone do not block general work.
|
|
11
|
+
|
|
8
12
|
- **It names what to run**: the test, build, lint, typecheck, and format commands
|
|
9
13
|
- **It names where to look**: the source and test directories, and the frontend
|
|
10
14
|
- **It configures required gates**: spec sync, frontend verification, and design review
|
|
11
|
-
- **
|
|
15
|
+
- **Agents read it when present** before running project checks
|
|
12
16
|
- **A key you leave out takes the default** this document gives it
|
|
13
17
|
|
|
14
18
|
Three terms first.
|
|
@@ -70,7 +74,8 @@ These commands report configuration without changing settings.
|
|
|
70
74
|
|
|
71
75
|
- `~/.claude/acstack/bin/acstack project-data path` prints the project folder's absolute path, even before the folder exists
|
|
72
76
|
- It exits non-zero outside a Git repository
|
|
73
|
-
- It exits non-zero with a message
|
|
77
|
+
- It exits non-zero with a repair message for legacy, invalid, or conflicting data
|
|
78
|
+
- Orphan warnings do not block a valid current repository or adopt the orphan's settings
|
|
74
79
|
- The session-start hook states the same path in the agent's context
|
|
75
80
|
- This document writes a part inside it as `<project folder>/project.yaml`, `<project folder>/specs/`, and so on
|
|
76
81
|
- `/acstack:setup` creates the folder with `mkdir -p "$(~/.claude/acstack/bin/acstack project-data path)"`
|
package/hooks/lib/read-guard.mjs
CHANGED
|
@@ -124,6 +124,9 @@ export function decide({ toolName, toolInput, cwd, main, ledger, settings }) {
|
|
|
124
124
|
if (!main || !ledger) return { block: false };
|
|
125
125
|
const file = wholeReadTarget(toolName, toolInput, cwd);
|
|
126
126
|
if (!file) return { block: false };
|
|
127
|
+
// Native image reads are attachments; shell readers still dump bytes.
|
|
128
|
+
// shortcut: use image extensions, add content detection if extensionless images need exemption.
|
|
129
|
+
if (String(toolName).toLowerCase() === 'read' && /\.(png|jpe?g|gif|webp|bmp)$/i.test(file)) return { block: false };
|
|
127
130
|
// Resolved only for a whole-file read, since it costs a CLI call.
|
|
128
131
|
settings ??= readGuardSettings(cwd);
|
|
129
132
|
if (!settings.enabled) return { block: false };
|
|
@@ -142,7 +145,7 @@ export function blockMessage(bytes) {
|
|
|
142
145
|
const kb = Math.round(bytes / 1024);
|
|
143
146
|
const tokens = Math.round(bytes / 4 / 1000) * 1000;
|
|
144
147
|
return [
|
|
145
|
-
`This file is ${kb} KB (
|
|
148
|
+
`This file is ${kb} KB (rough text estimate: ${tokens.toLocaleString('en-US')} tokens), and reading all of it is usually unnecessary. Instead:`,
|
|
146
149
|
'',
|
|
147
150
|
'- Search for what you need, then read only that range',
|
|
148
151
|
"- Or hand the question to an investigator, as ACStack's Delegate investigation section describes",
|
package/hooks/session-start.sh
CHANGED
|
@@ -186,11 +186,6 @@ if ! project_folder=$(acstack_project_folder "$cli_wrapper"); then
|
|
|
186
186
|
exit 0
|
|
187
187
|
fi
|
|
188
188
|
|
|
189
|
-
if [ ! -f "$project_folder/project.yaml" ]; then
|
|
190
|
-
echo 'acstack: no project config found. Run /acstack:setup to set up.' >&2
|
|
191
|
-
exit 0
|
|
192
|
-
fi
|
|
193
|
-
|
|
194
189
|
claude_md="${plugin_root}/orchestrator/AGENTS.md"
|
|
195
190
|
|
|
196
191
|
if [ -z "$plugin_root" ] || [ ! -r "$claude_md" ]; then
|
package/orchestrator/AGENTS.md
CHANGED
|
@@ -102,7 +102,15 @@ ACStack runs on Claude Code, Codex, and pi. The skills name each capability once
|
|
|
102
102
|
- Never silently migrate data or work around legacy data by creating a partial project folder
|
|
103
103
|
- Never change the Git index or force-add files to track project data
|
|
104
104
|
|
|
105
|
-
|
|
105
|
+
Project setup is optional for general implementation, investigation, and review. Resolve the project folder first; a prospective path or a folder without `project.yaml` is not an error.
|
|
106
|
+
|
|
107
|
+
- When `<project folder>/project.yaml` exists, read it before running build, test, or lint commands and preserve its configured gates
|
|
108
|
+
- Without it, use repository instructions, manifests, existing tests, and CI to discover commands, directories, and environment activation
|
|
109
|
+
- Do not invent commands, assume a profile, or create configuration automatically
|
|
110
|
+
- If no useful check is discoverable, report that limit or ask for the missing command
|
|
111
|
+
- An unreadable or invalid configuration is not absent configuration. Report it and stop work that depends on it; do not bypass its gates
|
|
112
|
+
- Legacy, conflicting, or invalid project-data resolution also requires the reported repair, not an unconfigured fallback. Orphan warnings alone do not block work
|
|
113
|
+
- Offer `/acstack:setup` when the user wants saved project settings or storage-backed features such as maps, living specs, or configured browser verification; do not require it for general work
|
|
106
114
|
|
|
107
115
|
Key fields:
|
|
108
116
|
|
|
@@ -390,7 +398,7 @@ Read-only reviewers report discrepancies to the completion owner.
|
|
|
390
398
|
|
|
391
399
|
The verification owner gathers evidence for the final revision. Opening a PR does not require running every test locally.
|
|
392
400
|
|
|
393
|
-
|
|
401
|
+
Use `<project folder>/project.yaml` when present, otherwise discover commands under Project configuration above. Inspect the project's CI configuration before relying on it:
|
|
394
402
|
|
|
395
403
|
1. Use focused local checks by default: cover changed behavior, affected callers, and relevant integration paths
|
|
396
404
|
2. Run applicable build, lint, and typecheck checks; scope them when the tooling supports it
|
package/package.json
CHANGED
|
@@ -39,7 +39,7 @@ ACStack keeps project data in the project folder, the path `~/.claude/acstack/bi
|
|
|
39
39
|
|
|
40
40
|
You do not read `frontend.browser.mode` or `frontend.browser.fallback`. Step 3 asks the ACStack CLI which browser mode to use, and the CLI reads both.
|
|
41
41
|
|
|
42
|
-
If `<project folder>/project.yaml` has no `frontend` section, report SKIP and exit.
|
|
42
|
+
If `<project folder>/project.yaml` is absent or has no `frontend` section, report SKIP (no configured frontend verification) and exit. Do not create configuration or require setup for general work. Report unreadable or invalid configuration and project-data resolution errors instead of treating them as absent.
|
|
43
43
|
|
|
44
44
|
## Step 0: Read the knowledge base
|
|
45
45
|
|
|
@@ -19,7 +19,7 @@ You are read-only: do not edit source, tests, or specs.
|
|
|
19
19
|
## Establish scope and ownership
|
|
20
20
|
|
|
21
21
|
Read the supplied requirements, affected paths, known risks, and available command results.
|
|
22
|
-
Read `project.yaml` in the project folder that `~/.claude/acstack/bin/acstack project-data path` prints for commands, directories, environment activation, and applicable frontend gates.
|
|
22
|
+
Read `project.yaml` when present in the project folder that `~/.claude/acstack/bin/acstack project-data path` prints for commands, directories, environment activation, and applicable frontend gates. Without it, discover tooling from repository instructions, manifests, existing tests, and CI under Project configuration in `orchestrator/AGENTS.md`. Do not require setup, invent commands, or bypass invalid config or resolution errors.
|
|
23
23
|
|
|
24
24
|
- Distinguish focused review from ownership of completion verification
|
|
25
25
|
- If the assignment is unclear, clarify it with the delegating session before duplicating checks
|
|
@@ -23,7 +23,9 @@ Implement the assigned requirements under the shared Implementation discipline i
|
|
|
23
23
|
|
|
24
24
|
## Project configuration
|
|
25
25
|
|
|
26
|
-
Read `project.yaml` in the project folder that `~/.claude/acstack/bin/acstack project-data path` prints
|
|
26
|
+
Read `project.yaml` when present in the project folder that `~/.claude/acstack/bin/acstack project-data path` prints. Without configuration, discover settings from repository instructions, manifests, existing tests, and CI under Project configuration in `orchestrator/AGENTS.md`; do not require setup or invent commands. Report invalid config and resolution errors rather than bypassing them.
|
|
27
|
+
|
|
28
|
+
Configured settings:
|
|
27
29
|
|
|
28
30
|
- `directories.source` – where to write source code
|
|
29
31
|
- `directories.tests` – test directory, subject to assigned ownership
|
package/pi/agents/test-writer.md
CHANGED
|
@@ -32,7 +32,9 @@ You write tests from requirements and application programming interface (API) co
|
|
|
32
32
|
|
|
33
33
|
## Project configuration
|
|
34
34
|
|
|
35
|
-
Read `project.yaml` in the project folder that `~/.claude/acstack/bin/acstack project-data path` prints
|
|
35
|
+
Read `project.yaml` when present in the project folder that `~/.claude/acstack/bin/acstack project-data path` prints. Without configuration, discover settings from repository instructions, manifests, existing tests, and CI under Project configuration in `orchestrator/AGENTS.md`; do not require setup or invent commands. Report invalid config and resolution errors rather than bypassing them.
|
|
36
|
+
|
|
37
|
+
Configured settings:
|
|
36
38
|
|
|
37
39
|
- `directories.tests` – where to create test files
|
|
38
40
|
- `directories.source` – source code root (for mirroring structure)
|
package/pi/extension.ts
CHANGED
|
@@ -648,13 +648,9 @@ export default function acstack(pi: ExtensionAPI): void {
|
|
|
648
648
|
|
|
649
649
|
const orchestratorFile = path.join(packageRoot, "orchestrator", "AGENTS.md");
|
|
650
650
|
const styleFile = path.join(packageRoot, "output-styles", "ac-writing-style.md");
|
|
651
|
-
const isProject = (cwd: string) => {
|
|
652
|
-
const folder = projectFolder(undefined, cwd);
|
|
653
|
-
return folder !== null && fs.existsSync(path.join(folder, "project.yaml"));
|
|
654
|
-
};
|
|
655
651
|
let warnedSubagents = false;
|
|
656
652
|
|
|
657
|
-
pi.on("session_start", async (
|
|
653
|
+
pi.on("session_start", async (_event, ctx) => {
|
|
658
654
|
if (!delegated) linkClis(ctx);
|
|
659
655
|
projectFolders.delete(path.resolve(ctx.cwd));
|
|
660
656
|
if (projectFolder(ctx, ctx.cwd) === null) return;
|
|
@@ -668,10 +664,6 @@ export default function acstack(pi: ExtensionAPI): void {
|
|
|
668
664
|
"warning",
|
|
669
665
|
);
|
|
670
666
|
}
|
|
671
|
-
|
|
672
|
-
if (event.reason === "startup" && !isProject(ctx.cwd)) {
|
|
673
|
-
report(ctx, "acstack: no project config found. Run /acstack:setup to set up.");
|
|
674
|
-
}
|
|
675
667
|
});
|
|
676
668
|
|
|
677
669
|
// /acstack map <args> and /acstack:map <args> both run ACStack's own map
|
|
@@ -685,9 +677,10 @@ export default function acstack(pi: ExtensionAPI): void {
|
|
|
685
677
|
// Every session, like the plugin's skills on Claude Code.
|
|
686
678
|
if (skillsPrompt) sections["acstack-skills"] = skillsPrompt;
|
|
687
679
|
|
|
688
|
-
|
|
680
|
+
const folder = projectFolder(undefined, ctx.cwd);
|
|
681
|
+
if (folder !== null) {
|
|
689
682
|
const orchestrator = readText(orchestratorFile);
|
|
690
|
-
if (orchestrator) sections["acstack-orchestrator"] = `${orchestratorFor(orchestrator, delegated ? "delegated" : "lead")}\n\nThis repository's ACStack project folder: ${
|
|
683
|
+
if (orchestrator) sections["acstack-orchestrator"] = `${orchestratorFor(orchestrator, delegated ? "delegated" : "lead")}\n\nThis repository's ACStack project folder: ${folder}\n`;
|
|
691
684
|
else report(ctx, `acstack: could not read ${orchestratorFile}`, "warning");
|
|
692
685
|
}
|
|
693
686
|
|
package/skills/commit/SKILL.md
CHANGED
|
@@ -45,7 +45,7 @@ For each planned commit:
|
|
|
45
45
|
|
|
46
46
|
**This step is non-negotiable.** After drafting the commit message but BEFORE creating the commit, spec sync runs automatically.
|
|
47
47
|
|
|
48
|
-
The project folder is the path `~/.claude/acstack/bin/acstack project-data path` prints.
|
|
48
|
+
The project folder is the path `~/.claude/acstack/bin/acstack project-data path` prints. Follow Project configuration in `orchestrator/AGENTS.md` for resolution errors and invalid config. If `project.yaml` is absent, commit using repository instructions without creating ACStack records. When present, read it; if `workflow.spec_sync` is `true` (or not explicitly `false`), run spec sync:
|
|
49
49
|
|
|
50
50
|
1. Read `<project folder>/domain-map.yaml` (if exists)
|
|
51
51
|
2. Map staged files to spec domains
|
|
@@ -62,7 +62,7 @@ The project folder is the path `~/.claude/acstack/bin/acstack project-data path`
|
|
|
62
62
|
|
|
63
63
|
**Skip spec sync ONLY when:**
|
|
64
64
|
|
|
65
|
-
- `workflow.spec_sync` is explicitly `false`
|
|
65
|
+
- `project.yaml` is absent, or `workflow.spec_sync` is explicitly `false`
|
|
66
66
|
- No `<project folder>/domain-map.yaml` exists
|
|
67
67
|
- Changed files don't match any domain
|
|
68
68
|
- Changes are docs/config only (no behavioral changes)
|
|
@@ -104,4 +104,4 @@ If commit fails due to pre-commit hooks:
|
|
|
104
104
|
- NEVER use `git add -A` or `git add .` – stage specific files
|
|
105
105
|
- Always create NEW commits after hook failures
|
|
106
106
|
- Prefer specific file staging over broad patterns
|
|
107
|
-
- Spec sync is MANDATORY
|
|
107
|
+
- Spec sync is MANDATORY when configured project records exist, unless disabled or the skip conditions above apply
|
package/skills/explore/SKILL.md
CHANGED
|
@@ -91,9 +91,11 @@ You have full context of the ACStack system. Use it naturally, don't force it.
|
|
|
91
91
|
|
|
92
92
|
### Check for context
|
|
93
93
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
94
|
+
When project configuration exists, check existing maps on its configured tracker
|
|
95
|
+
and existing living specs. Without configuration, explore from repository guidance
|
|
96
|
+
and code without requiring setup or creating records. Follow Project configuration
|
|
97
|
+
in `orchestrator/AGENTS.md` for resolution errors and invalid configuration;
|
|
98
|
+
neither is an absent-config fallback.
|
|
97
99
|
|
|
98
100
|
### When no map exists
|
|
99
101
|
|
|
@@ -21,10 +21,13 @@ $ARGUMENTS
|
|
|
21
21
|
|
|
22
22
|
### 1. Find the work
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
Resolve the project folder with `~/.claude/acstack/bin/acstack project-data path`.
|
|
25
|
+
Preserve reported resolution errors; do not treat them as missing setup.
|
|
26
|
+
When `project.yaml` exists and configures `workflow.maps.tracker`, check that
|
|
27
|
+
tracker for maps (the map skill's `trackers/` docs declare its operations).
|
|
28
|
+
Without configuration, work directly on the request without tracker writes.
|
|
29
|
+
If the request names a map, establish its storage prerequisite first rather
|
|
30
|
+
than silently ignoring it.
|
|
28
31
|
|
|
29
32
|
**A map exists** (or `$ARGUMENTS` names one):
|
|
30
33
|
|
|
@@ -56,7 +59,10 @@ small unit of work, and nothing has to declare it small.
|
|
|
56
59
|
|
|
57
60
|
### 2. Read project configuration
|
|
58
61
|
|
|
59
|
-
Read `<project folder>/project.yaml`
|
|
62
|
+
Read `<project folder>/project.yaml` when present. Otherwise discover commands,
|
|
63
|
+
directories, and environment activation from repository instructions, manifests,
|
|
64
|
+
existing tests, and CI, under Project configuration in `orchestrator/AGENTS.md`.
|
|
65
|
+
Do not invent commands or treat invalid configuration as absent.
|
|
60
66
|
|
|
61
67
|
### 3. Create feature branch
|
|
62
68
|
|
|
@@ -32,6 +32,8 @@ Load that context before your first edit under `frontend.directory`. Load it onc
|
|
|
32
32
|
|
|
33
33
|
**Check the design gate first**
|
|
34
34
|
|
|
35
|
+
This pass requires project configuration with a `frontend` section. If configuration is absent, skip this optional pass and use discovered repository checks; do not require setup. Follow Project configuration in `orchestrator/AGENTS.md` for invalid configuration and resolution errors rather than silently skipping them.
|
|
36
|
+
|
|
35
37
|
The design gate is the set of optional checks impeccable adds to acstack's pipeline. `workflow.design_review` in `<project folder>/project.yaml` turns the gate on; the project folder is the path `~/.claude/acstack/bin/acstack project-data path` prints. Ask acstack for the answer:
|
|
36
38
|
|
|
37
39
|
```bash
|
package/skills/map/SKILL.md
CHANGED
|
@@ -24,7 +24,11 @@ Two backends ship in this skill's directory: `trackers/github.md` for repos
|
|
|
24
24
|
with GitHub auth, and `trackers/files.md` as the fallback.
|
|
25
25
|
|
|
26
26
|
ACStack keeps project data in the project folder, the path
|
|
27
|
-
`~/.claude/acstack/bin/acstack project-data path` prints.
|
|
27
|
+
`~/.claude/acstack/bin/acstack project-data path` prints. If `project.yaml` is
|
|
28
|
+
absent, chart in conversation without tracker writes. Before persisting a map,
|
|
29
|
+
ask the user to establish its project settings through `/acstack:setup`;
|
|
30
|
+
do not create configuration implicitly. Invalid configuration or resolution
|
|
31
|
+
errors require repair under Project configuration in `orchestrator/AGENTS.md`.
|
|
28
32
|
`workflow.maps.tracker` in `<project folder>/project.yaml` (`github` or `files`) records
|
|
29
33
|
the project's choice. If the key names a backend, read the matching doc and use
|
|
30
34
|
its operations. If the key is absent, pick at materialisation time – the moment
|
|
@@ -34,8 +38,8 @@ Recommend `github` when the repo qualifies, `files` otherwise. Confirm the
|
|
|
34
38
|
choice with the user. Then write the key, so later sessions need not re-decide.
|
|
35
39
|
## Which mode
|
|
36
40
|
|
|
37
|
-
One command runs two modes, and what already exists picks between them.
|
|
38
|
-
|
|
41
|
+
One command runs two modes, and what already exists picks between them. When
|
|
42
|
+
a tracker is configured, check it for existing maps – `ls "$(~/.claude/acstack/bin/acstack project-data path)/maps/"` on the files
|
|
39
43
|
backend, `gh label list --search "map:" --json name` on GitHub.
|
|
40
44
|
|
|
41
45
|
If `$ARGUMENTS` names a map, or exactly one exists, work its frontier – the
|
|
@@ -59,14 +59,14 @@ git status --short
|
|
|
59
59
|
git log --oneline -3 # recent context
|
|
60
60
|
```
|
|
61
61
|
|
|
62
|
-
Read `<project folder>/project.yaml` to understand
|
|
62
|
+
Read `<project folder>/project.yaml` when present to understand directories, commands, and conventions. The project folder is the path `~/.claude/acstack/bin/acstack project-data path` prints. Without configuration, discover these from repository instructions, manifests, existing tests, and CI under Project configuration in `orchestrator/AGENTS.md`; do not require setup. Report resolution errors or invalid config rather than treating them as absent.
|
|
63
63
|
|
|
64
|
-
Categorize changed files
|
|
64
|
+
Categorize changed files using configured or discovered directories:
|
|
65
65
|
|
|
66
|
-
- **source**: files under `directories.source
|
|
67
|
-
- **frontend**: files under `frontend.directory
|
|
66
|
+
- **source**: files under configured `directories.source`, or discovered source directories
|
|
67
|
+
- **frontend**: files under configured `frontend.directory`, or discovered frontend directories
|
|
68
68
|
- **config**: `*.yaml`, `*.toml`, `*.json`, config files, etc.
|
|
69
|
-
- **tests**: files under `directories.tests
|
|
69
|
+
- **tests**: files under configured `directories.tests`, or discovered test directories
|
|
70
70
|
- **other**: everything else
|
|
71
71
|
|
|
72
72
|
Judge changes by effect, including behavior changed through config, assets, or shipped guidance.
|
|
@@ -85,7 +85,7 @@ Read `../../output-styles/ac-writing-style.md` relative to this skill directory;
|
|
|
85
85
|
**Living specs and architecture:**
|
|
86
86
|
|
|
87
87
|
```
|
|
88
|
-
Read
|
|
88
|
+
Read existing living specs relevant to this change; skip if none exist:
|
|
89
89
|
- Check the <project folder>/specs/ directory listing
|
|
90
90
|
- Read spec.md files for domains touched by the changed files
|
|
91
91
|
(use <project folder>/domain-map.yaml to map files -> domains)
|
|
@@ -95,9 +95,11 @@ Apply the shared policy to the minimal fix.
|
|
|
95
95
|
## Step 6: Verify
|
|
96
96
|
|
|
97
97
|
Use focused regression checks while fixing. One verification owner gathers the
|
|
98
|
-
required final checks
|
|
99
|
-
`
|
|
100
|
-
for
|
|
98
|
+
required final checks under Build verification in `orchestrator/AGENTS.md`,
|
|
99
|
+
using `project.yaml` when present or discovered repository tooling when absent.
|
|
100
|
+
Follow its Project configuration policy for resolution errors and invalid config;
|
|
101
|
+
do not require setup for a general fix. Reuse valid evidence rather than rerunning
|
|
102
|
+
commands for every fix or handoff.
|
|
101
103
|
|
|
102
104
|
Preserve configured frontend gates. Do not claim completion with failed or blocked
|
|
103
105
|
required checks or unverified configured browser behavior.
|
|
@@ -7,7 +7,7 @@ description: Test placement rules and framework conventions. Invoke before writi
|
|
|
7
7
|
|
|
8
8
|
## Decision Tree: Where Does My Test Go?
|
|
9
9
|
|
|
10
|
-
Read `<project folder>/project.yaml` for `directories.source`, `directories.tests`, and `frontend
|
|
10
|
+
Read `<project folder>/project.yaml` when present for `directories.source`, `directories.tests`, and `frontend`. The project folder is the path `~/.claude/acstack/bin/acstack project-data path` prints. Without config, follow repository instructions and existing tests for placement and runner commands; use the examples below only where they fit that project. Follow Project configuration in `orchestrator/AGENTS.md` for invalid config or resolution errors, not a silent fallback.
|
|
11
11
|
|
|
12
12
|
```
|
|
13
13
|
Backend code? → <tests-dir>/<mirror-source-path>/test_<module>.py
|
|
@@ -32,7 +32,7 @@ Mirror the source directory structure. Example: `src/auth/sessions.py` → `test
|
|
|
32
32
|
Colocated with source. Example: `src/hooks/useAuth.ts` → `src/hooks/__tests__/useAuth.test.ts`.
|
|
33
33
|
|
|
34
34
|
- Components: `.test.tsx`, pure functions: `.test.ts`
|
|
35
|
-
- Run with `frontend.commands.test
|
|
35
|
+
- Run with configured `frontend.commands.test`, or the discovered repository test command
|
|
36
36
|
|
|
37
37
|
## Layer 3: E2E Tests (Browser)
|
|
38
38
|
|