Skip to content

feat(#480): /handover checklist-first doc selection + template pick#481

Merged
atlas-apex merged 1 commit into
me2resh:devfrom
atlas-apex:feature/GH-480-handover-checklist
Jun 2, 2026
Merged

feat(#480): /handover checklist-first doc selection + template pick#481
atlas-apex merged 1 commit into
me2resh:devfrom
atlas-apex:feature/GH-480-handover-checklist

Conversation

@atlas-apex

Copy link
Copy Markdown
Collaborator

Summary

  • Checklist-first document selection (new step 5.6) — after /handover computes the assessment + harnessability score, it now presents a numbered catalogue of the optional artefacts (L2/L1 C4 diagrams, DFD, Feature Inventory, journey, vision, sequence) and lets the operator pick which to generate via default / all / none / a comma-list / +N -N toggles. Previously the doc set was fixed, so a pure-backend handover still got a container diagram and a UI-heavy one couldn't request a journey or DFD. The handover assessment + harnessability score are always written and never appear in the checklist — they are the skill's core output.
  • Per-doc template pick — for each selected template-backed doc the operator now chooses the template, with candidates resolved through the existing portfolio_resolve_template mechanism (framework templates/** + adopter custom-templates/** override) and an Other option for sibling variants. The default is always the conventional template — the path the helper would pick unprompted — so --all and "default" runs stay byte-stable. This exposes adopter overrides that were previously unreachable from the skill, without any new resolution code.
  • Computed vs template-backed distinction made explicit — toggle-only/computed rows (Feature Inventory, journey) offer no template pick; template-backed rows do. The prompt labels each so the operator knows which ones ask a follow-up question.
  • Interactive-by-default with an --all escape — the checklist is the default (--interactive names it for scripts); --all generates the full default set with conventional templates and no prompt, byte-for-byte the pre-checklist flow. This realises the issue's recommended shape while keeping scripted runs reproducible by adding one flag. Documented in Usage + argument-hint.
  • In-skill stubs + hand-offs — step 6.1 generates the L1 context + sequence stubs inline when selected; richer artefacts (DFD/inventory/journey/vision) hand off to their owning skills (/dfd, /extract-features, /journey, /tech-vision) rather than being reimplemented, mirroring step 8's follow-up offer.
  • Supporting wiringCONTAINER_TEMPLATE/CONTEXT_TEMPLATE/SEQUENCE_TEMPLATE thread the per-doc pick into the generation steps; bootstrap-exemption scope widened to the new stubs; Rules 19–20 added; Output-location + step 10 summary updated; /handover one-liner in CLAUDE.md refreshed (skill/hook/role counts unchanged).

Testing

  1. bash .claude/hooks/tests/test_site_counts.sh → PASS (57 skills / 37 hooks / 20 roles — unchanged; no new skill/hook/role added).
  2. npx --no-install markdownlint-cli2 --config .markdownlint.json .claude/skills/handover/SKILL.md docs/agdr/AgDR-0057-*.md CLAUDE.md → only MD060 (table-pipe-spacing) findings, which are not in CI's pinned markdownlint-cli2-action@v16 linter; no MD022/MD032/MD040-class errors.
  3. Read-through consistency: --all skip-path, the template-pick fallback (${CONTAINER_TEMPLATE:-$(portfolio_resolve_template …)}), and the selection-condition guards in steps 6 / 6.1 all reference variables set in step 5.6. No executable tests exist for a skill doc — verification is lint + site-counts + internal consistency.

Glossary

Term Definition
Template-backed doc An artefact rendered from a file in the template library (templates/** or an adopter custom-templates/** override), as opposed to a computed/toggle-only output assembled from the repo scan
portfolio_resolve_template Existing helper in _lib-portfolio-paths.sh that resolves a template path with adopter-override semantics (custom override first, framework default second)
Computed / toggle-only output An artefact derived from the repo scan with no template to choose — the operator only decides whether to emit it (e.g. the Feature Inventory)
--all Non-interactive flag that generates the full default doc set with conventional templates, reproducing the pre-checklist behaviour byte-for-byte
Hand-off Recording a doc selection and offering to run the owning skill (/dfd, /extract-features, /journey, /tech-vision) instead of reimplementing its output inline
Bootstrap exemption The require-active-ticket.sh carve-out that lets /handover write projects/<name>/ files before a tracker ticket exists

Closes #480

- Add step 5.6 "Document selection (checklist)" after the assessment is
  computed: operator opts in to which artefacts to generate from a numbered
  catalogue (L2/L1 C4 diagrams, DFD, Feature Inventory, journey, vision,
  sequence). The handover assessment + harnessability score are always
  written and never appear in the checklist — they are the core output.
- Add a per-doc template-pick sub-step for each selected template-backed
  doc: list candidates resolved via the existing portfolio_resolve_template
  (framework templates/** + adopter custom-templates/** override), default
  to the conventional template so --all/"default" runs stay byte-stable.
- Distinguish computed/toggle-only rows (no template choice) from
  template-backed rows (choose-a-template) explicitly in the prompt.
- Default behaviour is the interactive checklist (--interactive); --all is
  the non-interactive escape that generates the full default set with
  conventional templates, byte-for-byte the pre-checklist flow. Documented
  in the Usage section + argument-hint.
- Add step 6.1 to generate the in-skill L1 context + sequence stubs when
  selected; richer docs (DFD/inventory/journey/vision) hand off to their
  owning skills rather than being reimplemented.
- Wire CONTAINER_TEMPLATE/CONTEXT_TEMPLATE/SEQUENCE_TEMPLATE through to the
  generation steps; widen bootstrap-exemption scope to the new stubs;
  add Rules 19-20; update Output-location + step 10 summary.
- Update the /handover one-liner in CLAUDE.md (counts unchanged).
- Record the decision in docs/agdr/AgDR-0057-handover-checklist-selection.md
  (interactive-with---all-escape default + reuse of template resolution).

Closes #480

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

@atlas-apex atlas-apex left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review: PR #481

Commit: 91e51d3055cd55bda7434edb392c3da6d2b36f0f

Verdict is APPROVED, posted as a comment because GitHub blocks self-approval (PR author == reviewer identity). The 481-rex.approved marker (bare HEAD SHA) is written for the merge gate.

Summary

Makes /handover present an opt-in document-selection checklist (new step 5.6) after the computed core (assessment + harnessability), lets the operator pick a template per template-backed doc via the existing portfolio_resolve_template mechanism, and adds an --all non-interactive escape that reproduces today's full set byte-for-byte. Docs/skill-only change: SKILL.md, a CLAUDE.md one-liner, and a new AgDR-0057.

Checklist Results

  • Architecture & Design: Pass (checklist slots after the computed core, before doc generation)
  • Code Quality: Pass (reuses portfolio_resolve_template / portfolio_registry; no reinvented resolution; per-bash-block source preamble preserved)
  • Testing: N/A (skill doc — verified via site-counts + internal consistency, no executable tests exist)
  • Security: Pass (no auth/secrets/crypto surface)
  • Performance: N/A
  • PR Description & Glossary: Pass (6-term glossary; narrative summary bullets)
  • Summary Bullet Narrative: Pass (every bullet answers what + why)
  • Technical Decisions (AgDR): Pass (AgDR-0057 included, <!-- agdr: --> marker present, referenced in Rules 19-20)
  • Adopter Handbooks: N/A (no handbooks apply to a markdown-only docs/skill diff; semantic index empty — fail-soft to path-convention)

Issues Found

None.

Verification performed

  • Step ordering: 5 → 5.5 → 5.6 → 6 → 6.1 → 7 → 7.5 → 8 → 9 → 10. The checklist (5.6) is correctly inserted after the assessment (5) / harnessability (4.5) compute and before doc generation (6).
  • Cross-references resolve: every in-text reference (step 4.5, step 5, step 6, step 6.1, step 8's follow-up offer, step 10 summary, step 5.5 topology) points at a real heading.
  • Helper reuse confirmed: portfolio_resolve_template and portfolio_registry are real functions in _lib-portfolio-paths.sh (lines 504, 142). The per-doc pick threads $CONTAINER_TEMPLATE / $CONTEXT_TEMPLATE / $SEQUENCE_TEMPLATE with ${VAR:-$(portfolio_resolve_template …)} fallbacks — no new resolution code, and --all/unset cleanly falls through to conventional resolution.
  • Computed-vs-template split is correct: assessment + harnessability are always-written and explicitly excluded from the catalogue; Feature Inventory / journey are toggle-only (no template pick); container/context/dfd/vision/sequence are template-backed.
  • All catalogue templates exist: templates/architecture/{c4-container,c4-context,dfd,vision,sequence}.md all present.
  • Bootstrap exemption widened to cover the new architecture/context.md + architecture/sequence-<flow>.md writes (same projects/<name>/ class already exempt) — preamble + clone/reindex steps intact.
  • site-counts green: 57 skills / 37 hooks / 20 roles unchanged (no new skill/hook/role). test_site_counts.sh PASS.

On the default-change-to-interactive decision (you asked me to judge)

I agree with keeping interactive as the default and --all as the escape. The change is discoverable (a single prompt with a sensible default — the L2 container pre-ticked), --all preserves scripted reproducibility byte-for-byte, and /handover is a bootstrap-class interactive skill where the operator is always present, so the prompt cost is low. AgDR-0057's Options table fairly weighs the --all-default alternative and rejects it on the grounds that the valuable feature would be rarely rediscovered — that's a sound call. No change requested here.

Suggestions

  • nit (non-blocking): the PR notes MD060 (table-pipe-spacing) findings from a newer markdownlint than CI's pinned markdownlint-cli2-action@v16. Not in the gating linter so it won't block, but worth normalising the new tables' pipe spacing next time the file is touched, to avoid drift when CI's linter is eventually bumped.

Verdict

APPROVED


🤖 Reviewed by Rex (Code Reviewer Agent)
📌 Reviewed commit: 91e51d3055cd55bda7434edb392c3da6d2b36f0f

@atlas-apex atlas-apex merged commit 9fbda76 into me2resh:dev Jun 2, 2026
4 of 5 checks passed
me2resh added a commit that referenced this pull request Jun 5, 2026
…481)

- Add step 5.6 "Document selection (checklist)" after the assessment is
  computed: operator opts in to which artefacts to generate from a numbered
  catalogue (L2/L1 C4 diagrams, DFD, Feature Inventory, journey, vision,
  sequence). The handover assessment + harnessability score are always
  written and never appear in the checklist — they are the core output.
- Add a per-doc template-pick sub-step for each selected template-backed
  doc: list candidates resolved via the existing portfolio_resolve_template
  (framework templates/** + adopter custom-templates/** override), default
  to the conventional template so --all/"default" runs stay byte-stable.
- Distinguish computed/toggle-only rows (no template choice) from
  template-backed rows (choose-a-template) explicitly in the prompt.
- Default behaviour is the interactive checklist (--interactive); --all is
  the non-interactive escape that generates the full default set with
  conventional templates, byte-for-byte the pre-checklist flow. Documented
  in the Usage section + argument-hint.
- Add step 6.1 to generate the in-skill L1 context + sequence stubs when
  selected; richer docs (DFD/inventory/journey/vision) hand off to their
  owning skills rather than being reimplemented.
- Wire CONTAINER_TEMPLATE/CONTEXT_TEMPLATE/SEQUENCE_TEMPLATE through to the
  generation steps; widen bootstrap-exemption scope to the new stubs;
  add Rules 19-20; update Output-location + step 10 summary.
- Update the /handover one-liner in CLAUDE.md (counts unchanged).
- Record the decision in docs/agdr/AgDR-0057-handover-checklist-selection.md
  (interactive-with---all-escape default + reuse of template resolution).

Closes #480

Co-authored-by: me2resh <ahmed.abdelaliem@gmail.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.

2 participants