Skip to content

feat(aidd-context): rebuild onboard as a token-lean guided tutorial#425

Merged
blafourcade merged 45 commits into
nextfrom
feat/onboard-rework
Jul 10, 2026
Merged

feat(aidd-context): rebuild onboard as a token-lean guided tutorial#425
blafourcade merged 45 commits into
nextfrom
feat/onboard-rework

Conversation

@blafourcade

Copy link
Copy Markdown
Contributor

Rebuilds aidd-context:00-onboard from a status dashboard into a guided tutorial, and cuts what the model loads by a third.

What changed

  • Tutorial, not a dashboard. ASCII banner, a Your AIDD setup block (AI tools · plugins · memory), then one clear next action with its key. Nothing runs until the user replies.
  • State-aware foundations. An existing repo starts with project memory and skips the stack. A greenfield repo designs the stack first. One rule: memory records what exists, so if nothing exists, create something first.
  • Four actions, one file group each. scan → assess → present → run ↺, over references/{state,order,run}/ plus a flow curriculum. Each action loads only its own layer.
  • Warnings carry a fix. A ⚠️ never stands alone: plain cause, keyed remedy, one action line per screen.
  • It refuses to guess. A plan with an unreadable status: surfaces as broken rather than being pinned somewhere on the flow.

Token budget

Model-loaded corpus 5921 → ~3900 tokens (-34%), always-on description 66 → 43. No behaviour was dropped: the cuts came from duplication, prose that restated a table, and rules that had two homes.

How it was verified

  • Eight purpose-built repos (greenfield, existing, drift, mid-work, idle, broken plan, no VCS) run headless on Claude. Captures land in aidd_docs/tasks/2026_07/2026_07_08_onboard-tutorial-rebuild/.
  • Ten adversarial audit lenses plus two independent checker passes.
  • A run on Codex found the worst defect of the lot: the read an action's file before running it rule had been moved into skill-authoring.md, a contract no executing host ever reads. Codex read SKILL.md and stopped. The router carries the line again. Proof in codex-portability.md.

Static audits found the duplication. Only running it found the specification holes. Only a second host found the rule that had no reader.

Known gaps, deliberately shipped

  • The interactive surface is untested. Every verification exercised the first screen only. Typing 1, the GUIDED handoff and its return line, the OK walk, [m], [?], back, recap, and the idle-menu umbrellas have never been executed once.
  • Codex is verified on greenfield only.
  • This skill diverges from the published authoring contract: nested references (R3) and inline @ citations (R13). The contract pair follows on the next milestone, with a rule forbidding a runtime instruction from living only in the contract.
  • The no tests health signal fired in one fixture and not in another with the same state. Model variance, unresolved.

🤖 Generated with Claude Code

aidd-bot Bot and others added 30 commits July 7, 2026 04:50
Co-authored-by: aidd-bot[bot] <290648294+aidd-bot[bot]@users.noreply.github.com>
Remove the aidd-ui package from release-please-config.json. Its
release-as: 0.1.0-alpha.0 pin forced the same version on every run, so
any change touching aidd-ui made release-please retry the existing
aidd-ui-v0.1.0-alpha.0 tag and fail (Validation Failed: already_exists).
Dropping it from the config freezes aidd-ui at its current alpha while it
is still a scaffold; re-add it with proper prerelease handling when it is
ready to version.


Claude-Session: https://claude.ai/code/session_01WKWd6AVpdYSCmRZWQWAnRt

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Restore the aidd-ui package block in release-please-config.json so it
matches the other seven plugins (package-name + extra-files), but
without the release-as: 0.1.0-alpha.0 pin. The pin forced the same
version every run, retrying the existing aidd-ui-v0.1.0-alpha.0 tag and
failing (already_exists). Supersedes the block removal in #394: aidd-ui
stays release-managed like its siblings; the next change bumps it to a
fresh version instead of colliding.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WKWd6AVpdYSCmRZWQWAnRt
Reshape the onboard report from a status dashboard into a noob-first
guide: one plain state sentence, one recommended action with its key,
the rest on demand behind [?]. Emoji-anchored state kept, glyphs cut to
✅/⚠️/❌, tiers phrased as plain clauses, labels made explicit
(tech stack, project knowledge saved, knowledge loaded by the AI).

Restore three behaviors the earlier linter rebuild dropped:
- session ledger (kills the re-nag for off-disk completions)
- plan-status hedge driving the build-to-ship pin
- capability map documented as the fixed catalogue (light tradeoff)

Fix the dev-flow pin to read only the current branch's PR, never a
repo-wide open PR or review queue. Rework the idle menu into three plain
umbrellas (start new work / improve the project / customize the AI) plus
explore. Add a recap reply, a return-to-onboard affordance on GUIDED
handoff, and a framing line so the interactive nature is announced.

Conform to the skill-authoring contract (R1-R13).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
5-phase plan for reworking onboard into a token-optimized guided
tutorial: granular conditional-load file tree, 4-action chain
(scan → assess → present → run), state-aware foundations, leaner
router format, updated skill-authoring contract. Colleague-approved
mockup gallery included.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…uthoring

Phase 1 of the onboard rebuild. Relax R3 to allow nested reference
sub-folders with a load-locality rule; reconcile R13 (import vs
pointer, nested paths); add R14 (telegraphic notation, mermaid only
for branching); specify the router format (tiny title, arrow/pick-one
chaining schema, verb-led Does, no intro/Input column, official
frontmatter keys only).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Phase 2. Split the state catalogue into tiny conditional-load refs:
state/zones.md (foundations, dev flow, health), state/detection.md
(AI-tool roots + per-tool wiring), state/done-rule.md (session ledger),
state/hedge.md (plan-status pin). Rewrite 01-scan to load them per
step and detect AI tools + wiring. checks.md kept until phase 3
extracts order/.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Phase 3. Add 02-assess (snapshot => decision: state class, ranked next,
chosen screen) over order/{ranking, idle-menu, screen-map(mermaid)}.
Rename 03-run => 04-run over run/{replies, tiers, return}. Rename
02-report => 03-present (body rewritten in phase 4). Delete run-tiers.md
(content moved to run/). Four actions: scan → assess → present → run.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
… flow + banner)

Phase 4. Rewrite 03-present to render the screen 02-assess chose,
injecting banner.txt on entry screens and loading flow.md on flow/walk
screens. New flow.md (8-step curriculum, two state-aware foundation
paths, vertical + map layouts). New banner.txt (AIDD ASCII). Rewrite
report.md into the screen shapes (state block with warning-carries-a-fix,
foundations step, where-you-are, [?] detail). Delete checks.md, now
fully split into state/ and order/.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Phase 5. Rewrite SKILL.md in the new router format (tiny title,
'scan → assess → present → run ↺' schema, verb-led Does, no intro or
Input column): 567 → 296 tok. Reframe README as a guided tutorial.

Token budget (tiktoken cl100k, proxy): always-on description 66 tok;
model-loaded corpus 5672 tok (-249 vs the noob-first checkpoint). The
real win is conditional loading — each action pays its own layer
(scan ~1280, assess ~620, run ~620) instead of the old checks.md
(2068) + run-tiers (1033) co-loaded monolith.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
All five phases done, link check green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Single-home the glyph semantics (state refs describe status in words;
display legend stays in report.md), split disk-detectable dev-flow pins
from inferred ones in zones.md, and point report.md's tier clause to
run/tiers.md instead of restating it. review.md verdict now approve.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Cut flow.md duplication (the step table was repeated as a vertical
code block; present renders the table now): 562 → 324 tok. Telegraph
the prose notes and drop the duplicated flow map in zones.md
(769 → 649), and tighten idle-menu, detection, tiers. No condition
lost. References corpus 3211 → 2678; model-loaded total 5921 → 5255
(-11% vs the noob-first checkpoint).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add the mandatory ## Output section to 04-run (R8 action anatomy;
the other three actions had it). Stop the README from restating the
glyph legend that report.md single-homes (describe status in words).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Lead with 'Guide a project through AIDD' instead of the awkward
'onboard onto an AIDD project'; drop near-duplicate triggers. 66 -> 49
always-on tokens.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Describe the journey (first setup to shipping a feature) rather than
restating the scan/assess mechanism the actions already own.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…mbiguous ↺

The 'scan → assess → present → run ↺' glyph is ambiguous about where
the loop returns. Show the cycle as a mermaid flowchart so the LLM
reads the run → scan edge unambiguously. Update the contract: a
pipeline schema is arrows for a straight run or a mermaid when the
flow loops (a cycle is not linear, so R14 permits it).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Verb + object per action (read the project / decide the next step /
show the screen / act on the reply); the action files carry the detail.
Includes the reviewed transversal rules.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Trim each action to essentials: a rule-free title line, a one-line
Output, one-line Process steps (detail lives in the refs, cases as
sub-bullets), and challenged one-sentence Test points.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Drop the cross-skill import of 02-project-memory's memory-block.md.
Memory-wiring drift is judged in the Zones step against a self-contained
rule in zones.md (the standard aidd_project_memory block that imports the
memory files), so onboard no longer reaches into another skill's files.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
… semicolons

Output names the produced artifact (snapshot / decision / screen) instead
of enumerating its contents with a colon. Drop 03-present's Warn step —
report.md already owns the warning-and-fix rules that Shape applies. Split
every semicolon run-on into sub-bullets or separate lines.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The router mermaid owns the scan → assess → present → run chain, so
each action's Input/Output/handoff no longer restates its neighbour.
Inputs and outputs name the artifact (snapshot, decision, screen),
not the producer or consumer. Drop the reply enumeration from 04-run
input (replies.md owns it) and 02-assess's pure-handoff step.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Trim the legend comment (glyph single-home + inline pointers to
replies.md/tiers.md), shorten placeholder hints, and replace the notes
that restated flow.md/replies.md with pointers. Five screen shapes kept,
mapping the screen-map state classes. 776 -> 590 tok.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…esent

An asset holds the shape to fill, not rules and not action names. Strip
report.md to the five screen templates. Move the render rules (framing
first-only, glyph meanings, warning-carries-fix, ids/tier under [?]) into
03-present, where the renderer owns them. report.md 590 -> 351 tok.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Drop the 'action reads/does this' opener from every reference — the
action already declares which ref it reads, so naming the consumer back
is duplication. Remove the read/write and when-a-plan-exists conditions
that the actions own, fix a stale glyph-legend pointer, and clear the
remaining semicolons. References are the looked-up data now, nothing more.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Restore the explain-project reply (dropped, not relocated) with its
memory-filled guard. Drop the render instruction from detection.md
(03-present owns rendering). Align 04-run Output with its Process by
exempting umbrella picks from the re-scan too.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
detection: detect a tool by its own dir only (.claude/.codex/.cursor/
.opencode) — AGENTS.md is a shared wiring target many tools read, not a
codex signal. hedge: cover all five plan statuses (pending, in-progress,
implemented, reviewed, blocked) plus open-PR. idle-menu: new work is sdlc
or brainstorm, not spec. screen-map: one class/when/screen table, drop
the redundant mermaid. zones: keep detectable pins in the table, inferred
stages in a note; trim noise. return + done-rule: slimmed, purpose-first.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The 'AGENTS.md is the shared target... CLAUDE.md is claude's' prose just
restated a column. One table now carries detection dir + wiring file per
tool; the shared AGENTS.md is self-evident from the rows.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
flow + ranking + replies + screen-map: drop openers that only echo the
H1. ranking: drop the state-aware parenthetical zones.md owns. replies:
[n] just runs a step or opens an umbrella, idle-menu owns the umbrella
mechanic. tiers: fold the clause into a table column, drop the What
column and the OK-walk bullet that restated it. flow: drop the render
hint. Includes the banner flag.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
'unreadable or absent' read as 'no plan', but hedge only applies when a
plan exists — with no plan, zones.md places the pin. The row is about a
missing or unreadable status field.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
blafourcade and others added 15 commits July 10, 2026 10:11
… pin

A missing or unreadable status: means the plan itself is broken. Surface
it like blocked does, rather than inventing an Implement-then-Review pin.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Explore becomes idle-menu slot 4, so [?] is no longer overloaded between
'expand detail' and 'explore' on the idle screen. Delete the two replies.md
bullets that restated 04-run's loop decision (five lenses agreed). Drop
04-run's verbatim echo of tiers.md and its lone sibling-action reference.
Drop flow.md's consumer-naming line. Strip trailing whitespace.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The index still carried the pre-rework description.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
A real headless run improvised three things the asset never specified:
the foundations screen previewed the remaining steps, the option line
carried OK-walks-all and the flow map, and a zero-tool project crossed
its AI-tools row. Pin all three: the remaining steps are part of the
foundations shape, the option line names the walk and the map, and an
undetected tool set reads 'none yet' uncrossed since the memory row
already carries the gap.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The live greenfield run stacked the entry screen's action line on top of
the foundations step's, repeating the same options twice. A screen that
carries a foundations step uses that step's line.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
A drift screen printed [1] twice: the warning's fix line and the arrow
line both claimed the same action. Generalise the rule — a warning's fix
or a foundations step already is the action line, so the arrow line
renders only when neither does.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
A live run trailed improvised prose past the options line, guessing what
comes after the fix. Lines stay short, nothing follows the options line,
and lookahead lives under [?].

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Split the compound render bullets in 03-present and its Inject step, and
cut 04-run's Output back to the artifact it names — the ledger write and
the re-scan are Process steps, not Output prose.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Four lines still stacked two ideas. Each case becomes a sub-bullet, each
assertion its own Test point.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Codex triggered the skill, read SKILL.md, and stopped. The 'read the
action file before running it' rule had been moved into the authoring
contract, which no executing host ever reads, so it reached nobody at
runtime. The router carries it again and the contract now says why.

CLAUDE.md without a .claude/ dir left claude undetected, so memory-wiring
drift was never judged and a broken block reported as healthy. A
tool-exclusive file is a valid signal; only the shared AGENTS.md is not.

A used-but-unwired tool rendered as missing, and a warning screen still
stacked two action lines. The shapes now name three mutually exclusive
action blocks, so a screen cannot carry two.

Captured runs for both hosts land beside the plan.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The contract changes this rework leaned on (nested references, router
format, the runtime read-the-action rule) ship in their own pair on the
next milestone. This branch touches onboard only.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The orphaned runtime rule was the only blocker. With the router carrying
it, Codex reads the actions and renders the same greenfield screen Claude
does.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
A live run on a broken-plan repo obeyed the one-action rule, then trailed
a detail block, a state snapshot, and a next hint past the options line.
The rule now names exactly what must not follow.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Left unshaped, a live idle screen grew a four-row list with descriptions.
Slot 1 is the action line, the rest join the options line.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
next removed the per-skill README mirrors (#396), so onboard's README goes
with them. The reworked SKILL.md, actions, references and assets are kept
as this branch wrote them.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@blafourcade blafourcade merged commit 279842a into next Jul 10, 2026
7 checks passed
blafourcade added a commit that referenced this pull request Jul 10, 2026
…425)

* chore: release main (#405)

Co-authored-by: aidd-bot[bot] <290648294+aidd-bot[bot]@users.noreply.github.com>

* ci(framework): stop release-please re-tagging aidd-ui (#394)

Remove the aidd-ui package from release-please-config.json. Its
release-as: 0.1.0-alpha.0 pin forced the same version on every run, so
any change touching aidd-ui made release-please retry the existing
aidd-ui-v0.1.0-alpha.0 tag and fail (Validation Failed: already_exists).
Dropping it from the config freezes aidd-ui at its current alpha while it
is still a scaffold; re-add it with proper prerelease handling when it is
ready to version.


Claude-Session: https://claude.ai/code/session_01WKWd6AVpdYSCmRZWQWAnRt

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>

* ci(framework): drop the aidd-ui release-as pin, keep it consistent

Restore the aidd-ui package block in release-please-config.json so it
matches the other seven plugins (package-name + extra-files), but
without the release-as: 0.1.0-alpha.0 pin. The pin forced the same
version every run, retrying the existing aidd-ui-v0.1.0-alpha.0 tag and
failing (already_exists). Supersedes the block removal in #394: aidd-ui
stays release-managed like its siblings; the next change bumps it to a
fresh version instead of colliding.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WKWd6AVpdYSCmRZWQWAnRt

* feat(aidd-context): rework onboard into a noob-first guide

Reshape the onboard report from a status dashboard into a noob-first
guide: one plain state sentence, one recommended action with its key,
the rest on demand behind [?]. Emoji-anchored state kept, glyphs cut to
✅/⚠️/❌, tiers phrased as plain clauses, labels made explicit
(tech stack, project knowledge saved, knowledge loaded by the AI).

Restore three behaviors the earlier linter rebuild dropped:
- session ledger (kills the re-nag for off-disk completions)
- plan-status hedge driving the build-to-ship pin
- capability map documented as the fixed catalogue (light tradeoff)

Fix the dev-flow pin to read only the current branch's PR, never a
repo-wide open PR or review queue. Rework the idle menu into three plain
umbrellas (start new work / improve the project / customize the AI) plus
explore. Add a recap reply, a return-to-onboard affordance on GUIDED
handoff, and a framing line so the interactive nature is announced.

Conform to the skill-authoring contract (R1-R13).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* docs(aidd-context): plan the onboard tutorial rebuild

5-phase plan for reworking onboard into a token-optimized guided
tutorial: granular conditional-load file tree, 4-action chain
(scan → assess → present → run), state-aware foundations, leaner
router format, updated skill-authoring contract. Colleague-approved
mockup gallery included.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* refactor(aidd-context): nested refs + leaner router format in skill-authoring

Phase 1 of the onboard rebuild. Relax R3 to allow nested reference
sub-folders with a load-locality rule; reconcile R13 (import vs
pointer, nested paths); add R14 (telegraphic notation, mermaid only
for branching); specify the router format (tiny title, arrow/pick-one
chaining schema, verb-led Does, no intro/Input column, official
frontmatter keys only).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* feat(aidd-context): onboard state layer (scan + state refs)

Phase 2. Split the state catalogue into tiny conditional-load refs:
state/zones.md (foundations, dev flow, health), state/detection.md
(AI-tool roots + per-tool wiring), state/done-rule.md (session ledger),
state/hedge.md (plan-status pin). Rewrite 01-scan to load them per
step and detect AI tools + wiring. checks.md kept until phase 3
extracts order/.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* feat(aidd-context): onboard assess + run actions with order/ + run/ refs

Phase 3. Add 02-assess (snapshot => decision: state class, ranked next,
chosen screen) over order/{ranking, idle-menu, screen-map(mermaid)}.
Rename 03-run => 04-run over run/{replies, tiers, return}. Rename
02-report => 03-present (body rewritten in phase 4). Delete run-tiers.md
(content moved to run/). Four actions: scan → assess → present → run.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* feat(aidd-context): onboard tutorial presentation (present + report + flow + banner)

Phase 4. Rewrite 03-present to render the screen 02-assess chose,
injecting banner.txt on entry screens and loading flow.md on flow/walk
screens. New flow.md (8-step curriculum, two state-aware foundation
paths, vertical + map layouts). New banner.txt (AIDD ASCII). Rewrite
report.md into the screen shapes (state block with warning-carries-a-fix,
foundations step, where-you-are, [?] detail). Delete checks.md, now
fully split into state/ and order/.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* feat(aidd-context): lean onboard router + tutorial README

Phase 5. Rewrite SKILL.md in the new router format (tiny title,
'scan → assess → present → run ↺' schema, verb-led Does, no intro or
Input column): 567 → 296 tok. Reframe README as a guided tutorial.

Token budget (tiktoken cl100k, proxy): always-on description 66 tok;
model-loaded corpus 5672 tok (-249 vs the noob-first checkpoint). The
real win is conditional loading — each action pays its own layer
(scan ~1280, assess ~620, run ~620) instead of the old checks.md
(2068) + run-tiers (1033) co-loaded monolith.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* chore(aidd-context): mark onboard tutorial rebuild implemented

All five phases done, link check green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(aidd-context): resolve onboard review findings

Single-home the glyph semantics (state refs describe status in words;
display legend stays in report.md), split disk-detectable dev-flow pins
from inferred ones in zones.md, and point report.md's tier clause to
run/tiers.md instead of restating it. review.md verdict now approve.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* refactor(aidd-context): compress onboard references

Cut flow.md duplication (the step table was repeated as a vertical
code block; present renders the table now): 562 → 324 tok. Telegraph
the prose notes and drop the duplicated flow map in zones.md
(769 → 649), and tighten idle-menu, detection, tiers. No condition
lost. References corpus 3211 → 2678; model-loaded total 5921 → 5255
(-11% vs the noob-first checkpoint).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(aidd-context): resolve checker findings on onboard

Add the mandatory ## Output section to 04-run (R8 action anatomy;
the other three actions had it). Stop the README from restating the
glyph legend that report.md single-homes (describe status in words).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* refactor(aidd-context): tighter onboard description

Lead with 'Guide a project through AIDD' instead of the awkward
'onboard onto an AIDD project'; drop near-duplicate triggers. 66 -> 49
always-on tokens.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* refactor(aidd-context): onboard description frames the journey

Describe the journey (first setup to shipping a feature) rather than
restating the scan/assess mechanism the actions already own.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* refactor(aidd-context): router loop as an explicit mermaid, not the ambiguous ↺

The 'scan → assess → present → run ↺' glyph is ambiguous about where
the loop returns. Show the cycle as a mermaid flowchart so the LLM
reads the run → scan edge unambiguously. Update the contract: a
pipeline schema is arrows for a straight run or a mermaid when the
flow loops (a cycle is not linear, so R14 permits it).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* refactor(aidd-context): terser onboard action table

Verb + object per action (read the project / decide the next step /
show the screen / act on the reply); the action files carry the detail.
Includes the reviewed transversal rules.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* refactor(aidd-context): lean onboard action files

Trim each action to essentials: a rule-free title line, a one-line
Output, one-line Process steps (detail lives in the refs, cases as
sub-bullets), and challenged one-sentence Test points.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* refactor(aidd-context): make onboard standalone

Drop the cross-skill import of 02-project-memory's memory-block.md.
Memory-wiring drift is judged in the Zones step against a self-contained
rule in zones.md (the standard aidd_project_memory block that imports the
memory files), so onboard no longer reaches into another skill's files.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* refactor(aidd-context): name action outputs, drop restated step, kill semicolons

Output names the produced artifact (snapshot / decision / screen) instead
of enumerating its contents with a colon. Drop 03-present's Warn step —
report.md already owns the warning-and-fix rules that Shape applies. Split
every semicolon run-on into sub-bullets or separate lines.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* refactor(aidd-context): actions stop naming sibling actions

The router mermaid owns the scan → assess → present → run chain, so
each action's Input/Output/handoff no longer restates its neighbour.
Inputs and outputs name the artifact (snapshot, decision, screen),
not the producer or consumer. Drop the reply enumeration from 04-run
input (replies.md owns it) and 02-assess's pure-handoff step.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* refactor(aidd-context): slim the report.md screen asset

Trim the legend comment (glyph single-home + inline pointers to
replies.md/tiers.md), shorten placeholder hints, and replace the notes
that restated flow.md/replies.md with pointers. Five screen shapes kept,
mapping the screen-map state classes. 776 -> 590 tok.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* refactor(aidd-context): report.md is pure shapes, rules move to 03-present

An asset holds the shape to fill, not rules and not action names. Strip
report.md to the five screen templates. Move the render rules (framing
first-only, glyph meanings, warning-carries-fix, ids/tier under [?]) into
03-present, where the renderer owns them. report.md 590 -> 351 tok.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* refactor(aidd-context): references hold data, not action coupling

Drop the 'action reads/does this' opener from every reference — the
action already declares which ref it reads, so naming the consumer back
is duplication. Remove the read/write and when-a-plan-exists conditions
that the actions own, fix a stale glyph-legend pointer, and clear the
remaining semicolons. References are the looked-up data now, nothing more.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(aidd-context): resolve checker findings on the onboard slim pass

Restore the explain-project reply (dropped, not relocated) with its
memory-filled guard. Drop the render instruction from detection.md
(03-present owns rendering). Align 04-run Output with its Process by
exempting umbrella picks from the re-scan too.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(aidd-context): correct + slim onboard references from review

detection: detect a tool by its own dir only (.claude/.codex/.cursor/
.opencode) — AGENTS.md is a shared wiring target many tools read, not a
codex signal. hedge: cover all five plan statuses (pending, in-progress,
implemented, reviewed, blocked) plus open-PR. idle-menu: new work is sdlc
or brainstorm, not spec. screen-map: one class/when/screen table, drop
the redundant mermaid. zones: keep detectable pins in the table, inferred
stages in a note; trim noise. return + done-rule: slimmed, purpose-first.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* refactor(aidd-context): fold detection wiring prose into the table

The 'AGENTS.md is the shared target... CLAUDE.md is claude's' prose just
restated a column. One table now carries detection dir + wiring file per
tool; the shared AGENTS.md is self-evident from the rows.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* refactor(aidd-context): drop prose that a table or another file carries

flow + ranking + replies + screen-map: drop openers that only echo the
H1. ranking: drop the state-aware parenthetical zones.md owns. replies:
[n] just runs a step or opens an umbrella, idle-menu owns the umbrella
mechanic. tiers: fold the clause into a table column, drop the What
column and the OK-walk bullet that restated it. flow: drop the render
hint. Includes the banner flag.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(aidd-context): hedge fallback names the status field, not the plan

'unreadable or absent' read as 'no plan', but hedge only applies when a
plan exists — with no plan, zones.md places the pin. The row is about a
missing or unreadable status field.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(aidd-context): a broken plan status surfaces, it does not guess a pin

A missing or unreadable status: means the plan itself is broken. Surface
it like blocked does, rather than inventing an Implement-then-Review pin.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(aidd-context): resolve the ten-lens audit findings on onboard

Explore becomes idle-menu slot 4, so [?] is no longer overloaded between
'expand detail' and 'explore' on the idle screen. Delete the two replies.md
bullets that restated 04-run's loop decision (five lenses agreed). Drop
04-run's verbatim echo of tiers.md and its lone sibling-action reference.
Drop flow.md's consumer-naming line. Strip trailing whitespace.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* docs(aidd-context): refresh the stale onboard row in the plugin index

The index still carried the pre-rework description.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(aidd-context): specify what the live greenfield run left to chance

A real headless run improvised three things the asset never specified:
the foundations screen previewed the remaining steps, the option line
carried OK-walks-all and the flow map, and a zero-tool project crossed
its AI-tools row. Pin all three: the remaining steps are part of the
foundations shape, the option line names the walk and the map, and an
undetected tool set reads 'none yet' uncrossed since the memory row
already carries the gap.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(aidd-context): one action line per screen

The live greenfield run stacked the entry screen's action line on top of
the foundations step's, repeating the same options twice. A screen that
carries a foundations step uses that step's line.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(aidd-context): the action line renders once, whoever carries it

A drift screen printed [1] twice: the warning's fix line and the arrow
line both claimed the same action. Generalise the rule — a warning's fix
or a foundations step already is the action line, so the arrow line
renders only when neither does.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(aidd-context): the screen ends at the options line

A live run trailed improvised prose past the options line, guessing what
comes after the fix. Lines stay short, nothing follows the options line,
and lookahead lives under [?].

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* refactor(aidd-context): one idea per line in the actions

Split the compound render bullets in 03-present and its Inject step, and
cut 04-run's Output back to the artifact it names — the ledger write and
the re-scan are Process steps, not Output prose.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* refactor(aidd-context): split the last compound action lines

Four lines still stacked two ideas. Each case becomes a sub-bullet, each
assertion its own Test point.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(aidd-context): three defects an eight-state headless sweep exposed

Codex triggered the skill, read SKILL.md, and stopped. The 'read the
action file before running it' rule had been moved into the authoring
contract, which no executing host ever reads, so it reached nobody at
runtime. The router carries it again and the contract now says why.

CLAUDE.md without a .claude/ dir left claude undetected, so memory-wiring
drift was never judged and a broken block reported as healthy. A
tool-exclusive file is a valid signal; only the shared AGENTS.md is not.

A used-but-unwired tool rendered as missing, and a warning screen still
stacked two action lines. The shapes now name three mutually exclusive
action blocks, so a screen cannot carry two.

Captured runs for both hosts land beside the plan.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* revert(aidd-context): keep skill-authoring out of this branch

The contract changes this rework leaned on (nested references, router
format, the runtime read-the-action rule) ship in their own pair on the
next milestone. This branch touches onboard only.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* docs(aidd-context): codex portability, proven before and after

The orphaned runtime rule was the only blocker. With the router carrying
it, Codex reads the actions and renders the same greenfield screen Claude
does.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(aidd-context): the options line is the last line, named plainly

A live run on a broken-plan repo obeyed the one-action rule, then trailed
a detail block, a state snapshot, and a next hint past the options line.
The rule now names exactly what must not follow.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(aidd-context): the idle menu is an action block, not a list

Left unshaped, a live idle screen grew a four-row list with descriptions.
Slot 1 is the action line, the rest join the options line.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: aidd-bot[bot] <290648294+aidd-bot[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
@aidd-bot aidd-bot Bot mentioned this pull request Jul 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant