acstack 0.0.0-stage → 0.47.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +19 -0
- package/LICENSE +21 -0
- package/README.md +389 -2
- package/THIRD_PARTY_NOTICES +14 -0
- package/TROUBLESHOOTING.md +225 -0
- package/agents/codex/frontend-verifier.toml +352 -0
- package/agents/codex/task-checker.toml +345 -0
- package/agents/codex/task-executor.toml +157 -0
- package/agents/codex/test-writer.toml +149 -0
- package/agents/frontend-verifier.md +351 -0
- package/agents/task-checker.md +344 -0
- package/agents/task-executor.md +156 -0
- package/agents/test-writer.md +148 -0
- package/assets/playwriter-bridge/build-launcher.ps1 +32 -0
- package/assets/playwriter-bridge/doctor.ps1 +450 -0
- package/assets/playwriter-bridge/launcher-src.cs +131 -0
- package/assets/playwriter-bridge/opener.js +330 -0
- package/assets/playwriter-bridge/opener.ps1 +63 -0
- package/assets/playwriter-bridge/register-tasks.ps1 +328 -0
- package/assets/playwriter-bridge/relay.ps1 +50 -0
- package/assets/playwriter-bridge/stop.ps1 +125 -0
- package/assets/playwriter-bridge/sync.ps1 +271 -0
- package/assets/playwriter-bridge/tunnel.ps1 +325 -0
- package/assets/playwriter-bridge/vm-free-port.sh +166 -0
- package/assets/terminal-workspace/client-keybindings.md +87 -0
- package/assets/terminal-workspace/config.example.yaml +329 -0
- package/assets/terminal-workspace/setup.sh +4317 -0
- package/cli/README.md +47 -0
- package/cli/bin/acstack.js +3 -0
- package/cli/dist/index.js +25984 -0
- package/cli/dist/index.js.map +7 -0
- package/cli/package.json +59 -0
- package/docs/adr/0001-ste-writing-standard.md +16 -0
- package/docs/adr/0002-version-gate-not-auto-bump.md +35 -0
- package/docs/adr/0003-handoff-ack-command.md +19 -0
- package/docs/adr/0004-dev-setup-per-host.md +13 -0
- package/docs/adr/0005-two-orchestrators-per-host.md +25 -0
- package/docs/adr/0006-document-opener-service.md +89 -0
- package/docs/adr/0007-lead-check-reads-the-transcript.md +87 -0
- package/docs/adr/0008-cli-audits-skill-interviews.md +37 -0
- package/docs/adr/0009-verify-the-write-not-the-writer.md +51 -0
- package/docs/adr/0010-promote-dev-to-main-by-fast-forward.md +115 -0
- package/docs/adr/0011-node-header-is-the-edge-encoding.md +20 -0
- package/docs/adr/0012-node-kind-is-a-closed-set-of-five.md +31 -0
- package/docs/adr/0013-the-diagram-renderer-is-pure.md +23 -0
- package/docs/adr/0014-reading-a-node-hides-its-generated-diagram.md +29 -0
- package/docs/adr/0015-a-node-id-links-to-its-issue-through-an-anchor.md +37 -0
- package/docs/adr/0016-the-map-root-carries-no-status-of-its-own.md +21 -0
- package/docs/adr/0017-call-impeccable-copy-only-its-questions.md +13 -0
- package/docs/adr/index.md +17 -0
- package/docs/config-reference.md +572 -0
- package/docs/dev-setups.md +164 -0
- package/docs/migrate-0.8.md +28 -0
- package/docs/playwriter-bridge-windows.md +15 -0
- package/docs/terminal-workspace-keys.md +137 -0
- package/docs/terminal-workspace.md +1774 -0
- package/docs/workflows.md +309 -0
- package/hooks/ac-writing-style-reminder.sh +86 -0
- package/hooks/context-pressure.sh +583 -0
- package/hooks/hooks.json +50 -0
- package/hooks/session-start-handoff.sh +165 -0
- package/hooks/session-start.sh +214 -0
- package/orchestrator/AGENTS.md +532 -0
- package/output-styles/ac-writing-style.md +286 -0
- package/package.json +50 -4
- package/pi/agents/frontend-verifier.md +357 -0
- package/pi/agents/task-checker.md +348 -0
- package/pi/agents/task-executor.md +160 -0
- package/pi/agents/test-writer.md +154 -0
- package/pi/extension.ts +723 -0
- package/profiles/fullstack-python.yaml +29 -0
- package/profiles/node-typescript.yaml +23 -0
- package/profiles/python.yaml +24 -0
- package/skills/archive/SKILL.md +160 -0
- package/skills/bootstrap/SKILL.md +109 -0
- package/skills/bridge/HANDOFF.md +93 -0
- package/skills/bridge/SKILL-VM.md +292 -0
- package/skills/bridge/SKILL-WINDOWS.md +526 -0
- package/skills/bridge/SKILL.md +121 -0
- package/skills/browser-verify/SKILL.md +229 -0
- package/skills/code-review/SKILL.md +44 -0
- package/skills/commit/SKILL.md +106 -0
- package/skills/compact-and-continue/SKILL.md +241 -0
- package/skills/explore/SKILL.md +149 -0
- package/skills/grilling/SKILL.md +134 -0
- package/skills/handoff/SKILL.md +250 -0
- package/skills/handoff/launch-herdr.md +197 -0
- package/skills/handoff/launch-without-herdr.md +30 -0
- package/skills/handoff/lead-check.md +59 -0
- package/skills/handoff/outcomes.md +162 -0
- package/skills/handoff/running-agent.md +50 -0
- package/skills/handoff/watch.md +115 -0
- package/skills/host/SKILL.md +247 -0
- package/skills/host/detect-host.sh +297 -0
- package/skills/host/herdr.md +79 -0
- package/skills/host/install-herdr-block.sh +467 -0
- package/skills/host/install-orca.sh +512 -0
- package/skills/host/notes.md +97 -0
- package/skills/host/orca.md +160 -0
- package/skills/host/questions.md +163 -0
- package/skills/host/report.md +42 -0
- package/skills/implement/SKILL.md +230 -0
- package/skills/implement/decision-log.md +62 -0
- package/skills/implement/design-pass.md +32 -0
- package/skills/implement/relaxed-tdd.md +28 -0
- package/skills/map/SKILL.md +250 -0
- package/skills/map/frontend.md +227 -0
- package/skills/map/trackers/files.md +74 -0
- package/skills/map/trackers/github.md +180 -0
- package/skills/map/visuals.md +387 -0
- package/skills/new-worktree/SKILL.md +155 -0
- package/skills/new-worktree/detect-orchestrator.sh +328 -0
- package/skills/new-worktree/detect-orchestrator.test.sh +894 -0
- package/skills/new-worktree/herdr.md +84 -0
- package/skills/new-worktree/orca.md +101 -0
- package/skills/pre-commit-review/SKILL.md +242 -0
- package/skills/pre-commit-review/auto-fix.md +19 -0
- package/skills/pre-commit-review/interactive.md +35 -0
- package/skills/quick-fix/SKILL.md +125 -0
- package/skills/record-context/SKILL.md +106 -0
- package/skills/setup/SKILL.md +250 -0
- package/skills/setup/browser.md +123 -0
- package/skills/setup/design-review.md +97 -0
- package/skills/setup/first-run.md +114 -0
- package/skills/setup/report.md +68 -0
- package/skills/setup/row-fixes.md +196 -0
- package/skills/setup/terminal-workspace.md +153 -0
- package/skills/sync/SKILL.md +171 -0
- package/skills/teardown-worktree/SKILL.md +245 -0
- package/skills/teardown-worktree/detector.md +39 -0
- package/skills/teardown-worktree/herdr.md +113 -0
- package/skills/teardown-worktree/orca.md +61 -0
- package/skills/terminal-workspace/SKILL.md +249 -0
- package/skills/terminal-workspace/components.md +36 -0
- package/skills/terminal-workspace/config-choices.md +69 -0
- package/skills/terminal-workspace/emulator-keys.md +48 -0
- package/skills/terminal-workspace/headless-clipboard.md +175 -0
- package/skills/terminal-workspace/turn-off-and-update.md +104 -0
- package/skills/test-conventions/SKILL.md +59 -0
- package/skills/visual-docs/SKILL.md +246 -0
- package/skills/writing/SKILL.md +231 -0
- package/skills/writing/examples.md +153 -0
- package/skills/writing/vocabulary.md +96 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Reading a node hides its generated diagram
|
|
2
|
+
|
|
3
|
+
`acstack node read` and `acstack node walk` strip generated blocks from their
|
|
4
|
+
human-readable output, and `--visuals` puts them back. `--json` always carries
|
|
5
|
+
the whole body.
|
|
6
|
+
|
|
7
|
+
A generated block repeats what the map already holds. An agent that can call
|
|
8
|
+
`acstack node frontier` gets those facts on demand, so a picture of them in
|
|
9
|
+
every read spends the context twice.
|
|
10
|
+
|
|
11
|
+
## Considered options
|
|
12
|
+
|
|
13
|
+
Keeping the whole body is the honest default. It costs an agent a diagram on
|
|
14
|
+
every read of every node. A map that draws one on each parent node makes that
|
|
15
|
+
cost grow with the map.
|
|
16
|
+
|
|
17
|
+
Stripping every mermaid fence would take the hand-drawn diagrams with it.
|
|
18
|
+
Those are the explanation the node exists to give.
|
|
19
|
+
|
|
20
|
+
## Consequences
|
|
21
|
+
|
|
22
|
+
Only the markers decide what goes. A hand-drawn diagram never sits inside
|
|
23
|
+
them, so the split is exact and needs no heuristic.
|
|
24
|
+
|
|
25
|
+
A reader who wants the picture passes `--visuals`. A caller composing
|
|
26
|
+
something parses `--json`, which never strips.
|
|
27
|
+
|
|
28
|
+
A node body that documents the markers keeps them. A marker inside a fenced
|
|
29
|
+
code block is prose about the markers, never a block.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# A node id links to its issue through an anchor
|
|
2
|
+
|
|
3
|
+
A generated diagram wraps each node id in an HTML anchor pointing at its
|
|
4
|
+
issue. A reader clicks the id and lands on the node.
|
|
5
|
+
|
|
6
|
+
The mermaid `click` directive does the same job and does not work here.
|
|
7
|
+
GitHub renders at `securityLevel: strict`, and its Content Security Policy
|
|
8
|
+
blocks the `frame-src` that directive needs.
|
|
9
|
+
|
|
10
|
+
## Considered options
|
|
11
|
+
|
|
12
|
+
Shipping the id as plain text works in every renderer and costs a reader one
|
|
13
|
+
copy and one search per node.
|
|
14
|
+
|
|
15
|
+
The `click` directive is the documented way to link a node. GitHub's Content
|
|
16
|
+
Security Policy stops it.
|
|
17
|
+
|
|
18
|
+
## Consequences
|
|
19
|
+
|
|
20
|
+
GitHub documents none of this behaviour. A community thread reports it
|
|
21
|
+
working since March 2024, and GitHub has broken it once already. A second
|
|
22
|
+
break renders the label as literal `<a href=...>` text rather than plain
|
|
23
|
+
text.
|
|
24
|
+
|
|
25
|
+
The anchor wraps the id alone, never the whole label, so a link reads as a
|
|
26
|
+
link.
|
|
27
|
+
|
|
28
|
+
Its `href` takes single quotes, since the mermaid label is already
|
|
29
|
+
double-quoted. Mermaid rewrites anything matching `#<word>;` into a
|
|
30
|
+
private sentinel. So a quote inside a url becomes `'` and never the
|
|
31
|
+
numeric `'`, and `escapeLabel` turns every `#` a label carries into
|
|
32
|
+
`#`.
|
|
33
|
+
|
|
34
|
+
The GitHub renderer needs `url` in the `gh issue list --json` field list. It
|
|
35
|
+
has no other way to build the address, so that field is not optional.
|
|
36
|
+
|
|
37
|
+
The files backend draws plain ids. A node on disk has no address to link to.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# The map root carries no status of its own
|
|
2
|
+
|
|
3
|
+
A map's root node has no status of its own. Its state follows its subtree: open while any node below it is open, fog, or claimed, and resolved otherwise.
|
|
4
|
+
|
|
5
|
+
The frontier never returns the root. `archive` closes it when the map clears.
|
|
6
|
+
|
|
7
|
+
Before this, the map skill created the root as resolved and nothing ever changed it. The field called the destination resolved while eleven nodes below it were still open.
|
|
8
|
+
|
|
9
|
+
On GitHub, `gh issue create` opened the root issue and nothing closed it. The two backends disagreed, and the GitHub frontier returned its own root.
|
|
10
|
+
|
|
11
|
+
## Considered options
|
|
12
|
+
|
|
13
|
+
- Keep the root resolved at creation, and let the frontier skip it as a resolved node. Rejected: a green root on an open map misreads on every diagram. A closed issue at the top of an open map misreads on GitHub.
|
|
14
|
+
- Store the derived status on the root and rewrite it after every resolution. Rejected: every writer would have to recompute the subtree, and one missed write leaves a stale field. Deriving it at read time cannot drift.
|
|
15
|
+
|
|
16
|
+
## Consequences
|
|
17
|
+
|
|
18
|
+
- The root is the one node whose stored status means nothing on its own. The diagram prints a count in its place, for example `#229 destination - 11 of 13 open`.
|
|
19
|
+
- The frontier has one structural exception: the node with no `answers`. Both backends share it, because the diagram renderer runs the same function over GitHub nodes.
|
|
20
|
+
- `archive` gains a step. After its gate passes, it resolves the root, then disposes of the map. Its gate ignores the root, or an open root would fail every map.
|
|
21
|
+
- A root closed before this decision stays closed. Nothing reopens history.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Call impeccable's command line, and copy only its question sets
|
|
2
|
+
|
|
3
|
+
acstack uses impeccable, a third-party design plugin, as an optional design gate. acstack calls five commands through impeccable's documented command-line contract: `detect`, `context`, `audit`, `polish`, and `document`. It copies only impeccable's stable question sets, into the map's frontend branch. It never copies impeccable's files and depends on no other surface.
|
|
4
|
+
|
|
5
|
+
This project does not own impeccable, and impeccable moved three major versions in a year.
|
|
6
|
+
|
|
7
|
+
## Considered options
|
|
8
|
+
|
|
9
|
+
Copying impeccable into acstack turns every upstream release into a manual port. Naming all 23 commands ties acstack to names that change between versions. Putting the integration inside impeccable is not possible, since this project does not own that repo.
|
|
10
|
+
|
|
11
|
+
## Consequences
|
|
12
|
+
|
|
13
|
+
A copied question set can go stale, and a rename of one of the five called commands breaks the gate. The version floor (major 4, warn only) surfaces that without blocking a project, since the gate is optional. Commands that change a design's intent never run unattended; a human picks one in a grill round.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
- [0001](0001-ste-writing-standard.md) – One plain-language writing standard based on ASD-STE100
|
|
2
|
+
- [0002](0002-version-gate-not-auto-bump.md) – A PR gate enforces the version bump; CI never bumps it
|
|
3
|
+
- [0003](0003-handoff-ack-command.md) – Handoff acknowledgement is a CLI command, not a reply
|
|
4
|
+
- [0004](0004-dev-setup-per-host.md) – Dev setup is declared per host, not per project
|
|
5
|
+
- [0005](0005-two-orchestrators-per-host.md) – Two orchestrators coexist on one host, and a checkout's path names its owner
|
|
6
|
+
- [0006](0006-document-opener-service.md) – A document opener service on the laptop, separate from the Playwriter bridge
|
|
7
|
+
- [0007](0007-lead-check-reads-the-transcript.md) – A session's own transcript decides lead or child, not the environment
|
|
8
|
+
- [0008](0008-cli-audits-skill-interviews.md) – The CLI audits, the skill interviews
|
|
9
|
+
- [0009](0009-verify-the-write-not-the-writer.md) – The config writer verifies its result instead of predicting it
|
|
10
|
+
- [0010](0010-promote-dev-to-main-by-fast-forward.md) – A labelled workflow fast-forwards main to dev, and nobody merges
|
|
11
|
+
- [0011](0011-node-header-is-the-edge-encoding.md) – The node body header is the authoritative edge encoding on GitHub
|
|
12
|
+
- [0012](0012-node-kind-is-a-closed-set-of-five.md) – A map node's kind is a closed set of five
|
|
13
|
+
- [0013](0013-the-diagram-renderer-is-pure.md) – The diagram renderer takes nodes in and never calls gh
|
|
14
|
+
- [0014](0014-reading-a-node-hides-its-generated-diagram.md) – Reading a node hides its generated diagram
|
|
15
|
+
- [0015](0015-a-node-id-links-to-its-issue-through-an-anchor.md) – A node id links to its issue through an anchor
|
|
16
|
+
- [0016](0016-the-map-root-carries-no-status-of-its-own.md) – The map root carries no status of its own
|
|
17
|
+
- [0017](0017-call-impeccable-copy-only-its-questions.md) – Call impeccable's command line, and copy only its question sets
|