@bvdm/delano 0.1.5 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/HANDBOOK.md +1 -0
  2. package/README.md +12 -1
  3. package/assets/install-manifest.json +12 -0
  4. package/assets/payload/.agents/hooks/bash-worktree-fix.sh +0 -0
  5. package/assets/payload/.agents/hooks/post-tool-logger.js +0 -0
  6. package/assets/payload/.agents/hooks/session-tracker.js +0 -0
  7. package/assets/payload/.agents/hooks/user-prompt-logger.js +0 -0
  8. package/assets/payload/.agents/scripts/check-path-standards.sh +0 -0
  9. package/assets/payload/.agents/scripts/fix-path-standards.sh +0 -0
  10. package/assets/payload/.agents/scripts/git-sparse-download.sh +0 -0
  11. package/assets/payload/.agents/scripts/log-event.js +0 -0
  12. package/assets/payload/.agents/scripts/log-event.sh +0 -0
  13. package/assets/payload/.agents/scripts/pm/blocked.sh +0 -0
  14. package/assets/payload/.agents/scripts/pm/epic-list.sh +0 -0
  15. package/assets/payload/.agents/scripts/pm/in-progress.sh +0 -0
  16. package/assets/payload/.agents/scripts/pm/init.sh +0 -0
  17. package/assets/payload/.agents/scripts/pm/next.sh +0 -0
  18. package/assets/payload/.agents/scripts/pm/prd-list.sh +0 -0
  19. package/assets/payload/.agents/scripts/pm/search.sh +0 -0
  20. package/assets/payload/.agents/scripts/pm/standup.sh +0 -0
  21. package/assets/payload/.agents/scripts/pm/status.sh +0 -0
  22. package/assets/payload/.agents/scripts/pm/validate.sh +1 -0
  23. package/assets/payload/.agents/scripts/query-log.sh +0 -0
  24. package/assets/payload/.agents/scripts/test-and-log.sh +0 -0
  25. package/assets/payload/.agents/skills/README.md +6 -0
  26. package/assets/payload/.agents/skills/manage-context/SKILL.md +55 -0
  27. package/assets/payload/.agents/skills/manage-context/references/context-audit-checklist.md +26 -0
  28. package/assets/payload/.agents/skills/manage-context/references/runbook.md +26 -0
  29. package/assets/payload/.agents/skills/manage-context/templates/context-debt-report.md +22 -0
  30. package/assets/payload/.agents/skills/manage-context/templates/context-refresh-summary.md +13 -0
  31. package/assets/payload/.agents/skills/onboarding/SKILL.md +49 -0
  32. package/assets/payload/.agents/skills/onboarding/references/agents-md-best-practices.md +76 -0
  33. package/assets/payload/.agents/skills/prototype-skill/SKILL.md +51 -0
  34. package/assets/payload/.agents/skills/prototype-skill/references/probe-design-checklist.md +26 -0
  35. package/assets/payload/.agents/skills/prototype-skill/references/runbook.md +27 -0
  36. package/assets/payload/.agents/skills/prototype-skill/templates/probe-approval-recommendation.md +13 -0
  37. package/assets/payload/.agents/skills/prototype-skill/templates/probe-findings.md +16 -0
  38. package/assets/payload/HANDBOOK.md +1 -0
  39. package/assets/payload/install-delano.sh +0 -0
  40. package/install-delano.sh +0 -0
  41. package/package.json +1 -1
  42. package/src/cli/commands/onboarding.js +29 -0
  43. package/src/cli/index.js +12 -0
  44. package/src/cli/lib/install.js +1 -0
  45. package/src/cli/lib/onboarding.js +243 -0
package/HANDBOOK.md CHANGED
@@ -633,6 +633,7 @@ This keeps rapid learning without weakening team governance.
633
633
 
634
634
  **Primary components**
635
635
 
636
+ - skill: `prototype-skill`
636
637
  - discovery artifacts from `spec.md`
637
638
  - targeted prototype commands or narrow experiments
638
639
  - `pm/validate.sh` if probe findings mutate contracts
package/README.md CHANGED
@@ -16,7 +16,7 @@ The npm package is intentionally thin. It distributes the approved runtime paylo
16
16
 
17
17
  - Package: `@bvdm/delano`
18
18
  - Binary: `delano`
19
- - Commands: `install`, `init`, `validate`, `status`, `next`
19
+ - Commands: `onboarding`, `install`, `init`, `validate`, `status`, `next`
20
20
  - Primary v1.1 goal: bootstrap a repo safely, then stay out of the way
21
21
 
22
22
  ## One-command bootstrap
@@ -84,9 +84,18 @@ Notes:
84
84
 
85
85
  ## How to use Delano after install
86
86
 
87
+ Recommended first step:
88
+
89
+ ```bash
90
+ delano onboarding
91
+ ```
92
+
93
+ `delano onboarding` searches upward for `AGENTS.md`, asks for explicit approval before it analyzes anything, and prints recommendations using the packaged onboarding skill rubric. It does not edit `AGENTS.md` on its own.
94
+
87
95
  If you bootstrap with one-shot `npx`, keep using `npx` for wrapper commands:
88
96
 
89
97
  ```bash
98
+ npx -y @bvdm/delano@latest onboarding --approve-agents-analysis
90
99
  npx -y @bvdm/delano@latest validate
91
100
  npx -y @bvdm/delano@latest status
92
101
  npx -y @bvdm/delano@latest next -- --all
@@ -95,6 +104,7 @@ npx -y @bvdm/delano@latest next -- --all
95
104
  If the package is installed locally or globally, run these inside the target repository:
96
105
 
97
106
  ```bash
107
+ delano onboarding
98
108
  delano validate
99
109
  delano status
100
110
  delano next -- --all
@@ -133,6 +143,7 @@ The CLI does not bundle its own shell or Python runtime.
133
143
 
134
144
  The base install payload intentionally excludes top-level adapter entry docs such as `AGENTS.md`, `CLAUDE.md`, `CODEX.md`, `OPENCODE.md`, and `PI.md`. Those remain opt-in only.
135
145
  The installable `.project/context/` pack is seeded from generic templates during packaging; it does not ship Delano's own repo-specific context files into consumer repositories.
146
+ After install, the recommended first step is `delano onboarding`, which requires explicit approval before it reviews `AGENTS.md`.
136
147
 
137
148
  ## Optional AGENTS.md / CLAUDE.md snippet
138
149
 
@@ -49,10 +49,22 @@
49
49
  ".agents/skills/closeout-skill/SKILL.md",
50
50
  ".agents/skills/closeout-skill/templates/closure-checklist.md",
51
51
  ".agents/skills/closeout-skill/templates/outcome-review.md",
52
+ ".agents/skills/manage-context/references/context-audit-checklist.md",
53
+ ".agents/skills/manage-context/references/runbook.md",
54
+ ".agents/skills/manage-context/SKILL.md",
55
+ ".agents/skills/manage-context/templates/context-debt-report.md",
56
+ ".agents/skills/manage-context/templates/context-refresh-summary.md",
57
+ ".agents/skills/onboarding/references/agents-md-best-practices.md",
58
+ ".agents/skills/onboarding/SKILL.md",
52
59
  ".agents/skills/discovery-skill/references/runbook.md",
53
60
  ".agents/skills/discovery-skill/SKILL.md",
54
61
  ".agents/skills/discovery-skill/templates/clarification-questions.md",
55
62
  ".agents/skills/discovery-skill/templates/discovery-summary.md",
63
+ ".agents/skills/prototype-skill/references/probe-design-checklist.md",
64
+ ".agents/skills/prototype-skill/references/runbook.md",
65
+ ".agents/skills/prototype-skill/SKILL.md",
66
+ ".agents/skills/prototype-skill/templates/probe-approval-recommendation.md",
67
+ ".agents/skills/prototype-skill/templates/probe-findings.md",
56
68
  ".agents/skills/execution-skill/references/runbook.md",
57
69
  ".agents/skills/execution-skill/SKILL.md",
58
70
  ".agents/skills/execution-skill/templates/blocker-update.md",
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -91,6 +91,7 @@ fi
91
91
  # Required skill contracts
92
92
  required_skills=(
93
93
  discovery-skill
94
+ prototype-skill
94
95
  planning-skill
95
96
  breakdown-skill
96
97
  sync-skill
File without changes
File without changes
@@ -5,6 +5,7 @@ Handbook-aligned skill contracts.
5
5
  Core workflow skills:
6
6
 
7
7
  - `discovery-skill`
8
+ - `prototype-skill`
8
9
  - `planning-skill`
9
10
  - `breakdown-skill`
10
11
  - `sync-skill`
@@ -13,6 +14,11 @@ Core workflow skills:
13
14
  - `closeout-skill`
14
15
  - `learning-skill`
15
16
 
17
+ Utility skills:
18
+
19
+ - `manage-context`
20
+ - `onboarding`
21
+
16
22
  Each skill defines:
17
23
  - intent and trigger context
18
24
  - required inputs
@@ -0,0 +1,55 @@
1
+ ---
2
+ name: manage-context
3
+ description: Repair and maintain `.project/context/` so it reflects current project reality. Use when context files are stale, contradictory, still template-like, after major scope or architecture changes, before handoff, or when execution friction suggests context debt.
4
+ ---
5
+
6
+ # manage-context
7
+
8
+ ## Trigger context
9
+ - `.project/context/` still contains starter or placeholder language
10
+ - implementation reality has drifted from spec, plan, or workstreams
11
+ - repeated confusion appears around scope, terminology, ownership, architecture, or testing
12
+ - a handoff, restart, or milestone review needs trustworthy context
13
+ - a major scope, workflow, or architecture change landed and context was not refreshed
14
+
15
+ ## Required inputs
16
+ - current `.project/context/` files
17
+ - related project docs (`spec.md`, `plan.md`, `workstreams/*.md`, `decisions.md`, progress notes)
18
+ - recent execution evidence (task state, code changes, review feedback, logs)
19
+
20
+ ## Output schema
21
+ - updated `.project/context/*.md` files where needed
22
+ - context debt summary
23
+ - explicit contradictions or evidence gaps list
24
+ - recommended follow-up actions when context cannot be repaired safely
25
+
26
+ ## Quality checks
27
+ - no obvious template placeholders remain
28
+ - context matches current implementation and delivery reality
29
+ - terminology is consistent across files
30
+ - scope, constraints, and non-goals are explicit
31
+ - progress reflects evidence, not aspiration
32
+ - unresolved uncertainty is stated plainly instead of being hidden
33
+
34
+ ## Failure behavior
35
+ - do not invent missing facts
36
+ - stop short of rewriting uncertain sections as if they were confirmed
37
+ - return evidence gaps and contradiction notes when repair is partial
38
+ - prefer an explicit partial refresh over fake completeness
39
+
40
+ ## Allowed side effects
41
+ - update files under `.project/context/`
42
+ - remove stale placeholder text from context files
43
+ - normalize duplicated or conflicting phrasing across context files
44
+ - add concise dated notes when they improve handoff clarity
45
+
46
+ ## Script hooks
47
+ - `bash .agents/scripts/pm/validate.sh`
48
+ - `bash .agents/scripts/pm/status.sh`
49
+ - `bash .agents/scripts/pm/search.sh "<term>"`
50
+
51
+ ## Execution assets
52
+ - `references/runbook.md`
53
+ - `references/context-audit-checklist.md`
54
+ - `templates/context-debt-report.md`
55
+ - `templates/context-refresh-summary.md`
@@ -0,0 +1,26 @@
1
+ # Context Audit Checklist
2
+
3
+ Use this checklist before declaring the context pack healthy.
4
+
5
+ ## Reality check
6
+ - Does `project-overview.md` describe the project as it exists now?
7
+ - Does `project-brief.md` still match the active outcome and constraints?
8
+ - Does `tech-context.md` match the real implementation shape?
9
+ - Does `product-context.md` match the real user or delivery problem?
10
+ - Does `progress.md` describe actual current status rather than intended status?
11
+
12
+ ## Drift check
13
+ - Are there claims that conflict with `spec.md`, `plan.md`, or workstreams?
14
+ - Are there terms used inconsistently across context files?
15
+ - Are owners, boundaries, or dependencies implied in one file but absent in others?
16
+ - Are testing expectations current, especially in `gui-testing.md`?
17
+
18
+ ## Template debt check
19
+ - Are placeholder markers or generic starter phrases still present?
20
+ - Are sections filled with boilerplate rather than repo-specific facts?
21
+ - Does the pack still read like an install scaffold instead of a lived project?
22
+
23
+ ## Handoff check
24
+ - Could a new agent or teammate resume work from this context pack without guessing?
25
+ - Are the main constraints, risks, and non-goals easy to find?
26
+ - Are open questions explicit?
@@ -0,0 +1,26 @@
1
+ # Context Runbook
2
+
3
+ 1. Read `.project/context/README.md` to confirm the expected context pack shape.
4
+ 2. Review all current `.project/context/*.md` files.
5
+ 3. Cross-check the context pack against the active source of truth:
6
+ - `.project/projects/<slug>/spec.md`
7
+ - `.project/projects/<slug>/plan.md`
8
+ - `.project/projects/<slug>/workstreams/*.md`
9
+ - `.project/projects/<slug>/decisions.md`
10
+ - recent task state, code changes, and review feedback
11
+ 4. Mark context debt before editing:
12
+ - stale claims
13
+ - template placeholders
14
+ - contradictory terminology
15
+ - missing constraints or ownership
16
+ - progress statements without evidence
17
+ 5. Repair only what the evidence supports.
18
+ 6. Record unresolved contradictions or evidence gaps explicitly.
19
+ 7. Validate:
20
+ - `bash .agents/scripts/pm/validate.sh`
21
+ - `bash .agents/scripts/pm/status.sh`
22
+
23
+ Exit gate:
24
+ - context pack is trustworthy enough for handoff or resumed execution
25
+ - open uncertainty is visible
26
+ - no placeholder text remains in edited sections
@@ -0,0 +1,22 @@
1
+ # Context Debt Report
2
+
3
+ ## Summary
4
+
5
+ ## Stale or Contradictory Sections
6
+ - File:
7
+ - Issue:
8
+ - Evidence:
9
+ - Action:
10
+
11
+ ## Placeholder or Template Debt
12
+ - File:
13
+ - Section:
14
+ - Replacement needed:
15
+
16
+ ## Missing Context
17
+ - Gap:
18
+ - Why it matters:
19
+ - Best source of truth:
20
+
21
+ ## Recommended Follow-up
22
+ -
@@ -0,0 +1,13 @@
1
+ # Context Refresh Summary
2
+
3
+ ## Refreshed Files
4
+ -
5
+
6
+ ## What Changed
7
+ -
8
+
9
+ ## Remaining Uncertainty
10
+ -
11
+
12
+ ## Next Action
13
+ - Resume execution or handoff using the refreshed context pack.
@@ -0,0 +1,49 @@
1
+ ---
2
+ name: onboarding
3
+ description: Analyze a repository `AGENTS.md` before broader work begins and improve it only when the user gives explicit approval. Use when the user wants a first-pass review of repo instructions, wants to tighten `AGENTS.md` quality, or needs a compact operating-rules and source-of-truth map for future agent turns.
4
+ ---
5
+
6
+ # onboarding
7
+
8
+ ## Trigger context
9
+ - the user wants an explicit first-turn onboarding pass for a repository
10
+ - `AGENTS.md` exists but may be too thin, stale, or missing key guidance
11
+ - the user asks to review, critique, or improve repo-level agent instructions
12
+ - Delano has just been introduced and `AGENTS.md` should be checked before deeper work starts
13
+
14
+ ## Required inputs
15
+ - repo-root `AGENTS.md`
16
+ - directly relevant source-of-truth docs referenced by `AGENTS.md`
17
+ - explicit user approval before analyzing `AGENTS.md`
18
+ - separate explicit user approval before editing `AGENTS.md`
19
+
20
+ ## Output schema
21
+ - concise gap analysis against `references/agents-md-best-practices.md`
22
+ - keep/add/remove recommendations tied to the repo's actual workflow
23
+ - if edit approval is given, an updated `AGENTS.md` that stays compact and retrieval-oriented
24
+ - explicit note when analysis or edits were skipped because approval was not given
25
+
26
+ ## Quality checks
27
+ - do not analyze `AGENTS.md` until the user explicitly approves the review
28
+ - do not edit `AGENTS.md` until the user explicitly approves changes
29
+ - preserve repo-specific truth instead of pasting generic boilerplate
30
+ - keep `AGENTS.md` compact and point to deeper docs instead of duplicating them
31
+ - make approval boundaries, order of operations, and verification expectations explicit
32
+
33
+ ## Failure behavior
34
+ - if approval is missing, stop and ask plainly
35
+ - if `AGENTS.md` is absent, report that and propose only a minimal skeleton
36
+ - if source-of-truth docs disagree, surface the conflict instead of flattening it
37
+ - if the repo intentionally keeps `AGENTS.md` thin, prefer the minimum coherent improvement
38
+
39
+ ## Allowed side effects
40
+ - read `AGENTS.md` and directly relevant source-of-truth docs
41
+ - update `AGENTS.md` only after explicit edit approval
42
+ - add concise retrieval hints that point to canonical docs
43
+
44
+ ## Script hooks
45
+ - `delano onboarding`
46
+ - `bash .agents/scripts/pm/validate.sh`
47
+
48
+ ## Execution assets
49
+ - `references/agents-md-best-practices.md`
@@ -0,0 +1,76 @@
1
+ # How to write an AGENTS.md that works
2
+
3
+ AGENTS.md carries the context the agent needs every turn. Skills and `docs/` hold optional, task-specific workflows. Do not confuse the two.
4
+
5
+ ## What belongs in AGENTS.md
6
+
7
+ 1. Operating rules: startup sequence, approval boundaries, destructive-action handling, definition of done, default workspace.
8
+ 2. Source-of-truth map: compact index pointing to where real knowledge lives. Include version-sensitive areas and "if working on X, read Y first" hints.
9
+ 3. Order-of-operations: phrase as a sequence, not a blanket rule. Not "always read docs first" but: explore structure -> retrieve relevant docs -> implement -> verify.
10
+ 4. Stable, high-impact constraints: repo location, branch policy, style rules, runtime quirks, business-logic conventions. High-frequency, high-impact, easy to miss.
11
+
12
+ ## What does not belong
13
+
14
+ Long prose, full runbooks, rarely-used procedures, or anything duplicated from `docs/`. Point to it instead.
15
+
16
+ ## Example skeleton (Delano-style)
17
+
18
+ ```markdown
19
+ ## Mission
20
+ One line: what this project is, what good work looks like.
21
+
22
+ ## First-Turn Workflow
23
+ 1. Inspect repo structure and current git state before assuming shape or ownership.
24
+ 2. Read the relevant local source of truth for the area being changed.
25
+ 3. Prefer current repo reality over stale plans or model memory.
26
+ 4. Make the smallest coherent change that satisfies the task.
27
+ 5. Verify with the narrowest meaningful check, then report done / partial / blocked explicitly.
28
+
29
+ ## Source of Truth
30
+ - `HANDBOOK.md`: delivery model, project contracts, evidence, continuity rules.
31
+ - `ARCHITECTURE.md`: product architecture and runtime/orchestration model.
32
+ - `.project/context/`: current project memory - start with `README.md`, then only what is relevant.
33
+ - `.project/projects/<project>/`: active delivery contracts (`spec.md`, `plan.md`, `decisions.md`, `workstreams/`, `tasks/`, `updates/`).
34
+ - `.agents/`: shared delivery/runtime assets, skills, rules, hooks, PM scripts.
35
+ - `README.md`: product status, setup, commands, operational gaps.
36
+ - `src/`, `skills/`, `starter/`, `fixtures/`, `tests/`: implemented surface.
37
+ - `possible-specs.md`: archived only - not active guidance.
38
+
39
+ ## Retrieval Index
40
+ - Delivery workflow -> `HANDBOOK.md` + matching `.agents/skills/<step>-skill/SKILL.md`
41
+ - Active scope / acceptance -> `spec.md` + relevant task files
42
+ - Architecture / runtime -> `ARCHITECTURE.md`, `plan.md`, `.project/context/system-patterns.md`
43
+ - Repo layout -> `.project/context/project-structure.md`
44
+ - Stack / commands -> `.project/context/tech-context.md`, `README.md`, `package.json`
45
+ - Style / docs conventions -> `.project/context/project-style-guide.md`
46
+ - GUI/browser checks -> `.project/context/gui-testing.md`
47
+ - Status / evidence -> `.project/context/progress.md`, `updates/`
48
+ - CRM/provider work -> `src/connectors/`, `fixtures/providers/`, provider tests
49
+ - Starter/runtime assets -> `starter/`, `.runtime/` expectations, starter validation tests
50
+
51
+ ## Delano Order of Operations
52
+ Use the full flow for features, contract changes, or material improvements:
53
+ 1. Discovery - define measurable outcome in `spec.md` (`discovery-skill`).
54
+ 2. Prototype Probe - time-boxed, only if uncertainty is high; findings back to spec.
55
+ 3. Planning - architecture, milestones, rollout, rollback in `plan.md` (`planning-skill`).
56
+ 4. Breakdown - atomic tasks, binary acceptance, acyclic dependencies (`breakdown-skill`).
57
+ 5. Synchronization - reconcile with Linear/GitHub when tracker state is involved (`sync-skill`).
58
+ 6. Execution - dependency-safe tasks inside workstream boundaries, evidence in `updates/` (`execution-skill`).
59
+ 7. Quality Ops - risk-based checks, verify acceptance before closure (`quality-skill`).
60
+ 8. Closeout - compare to outcome, update project memory, close the loop (`closeout-skill`).
61
+
62
+ For small local fixes: follow the first-turn workflow; update delivery/context files only when scope, architecture, status, or evidence changes.
63
+
64
+ ## Safety
65
+ - No destructive actions without approval.
66
+ - Prefer recoverable edits.
67
+ - Confirm before outbound/public actions.
68
+
69
+ ## Verification
70
+ - Run lint/test/build when relevant; if skipped, say why.
71
+ - Mark done / partial / blocked explicitly.
72
+ ```
73
+
74
+ ## Core principle
75
+
76
+ AGENTS.md should contain the minimum persistent context needed to make correct decisions reliably, and a compact map for retrieving everything else.
@@ -0,0 +1,51 @@
1
+ ---
2
+ name: prototype-skill
3
+ description: Run a time-boxed Prototype Probe to retire material uncertainty before spec approval. Use when `spec.md` is still draft, `probe_required: true`, or a narrow experiment is needed to bound technical or delivery risk before planning.
4
+ ---
5
+
6
+ # prototype-skill
7
+
8
+ ## Trigger context
9
+ - `spec.md` is still draft and contains material uncertainty
10
+ - `probe_required: true`
11
+ - approval would otherwise be speculative
12
+ - a narrow experiment can retire a specific technical, UX, integration, or delivery risk faster than discussion alone
13
+
14
+ ## Required inputs
15
+ - `spec.md` with uncertainty and probe fields populated
16
+ - target uncertainty to retire or bound
17
+ - time-box and experiment constraints
18
+ - success or failure evidence expected from the probe
19
+
20
+ ## Output schema
21
+ - updated draft `spec.md`
22
+ - probe findings summary
23
+ - explicit approval recommendation (`approve`, `revise`, or `run another narrow probe`)
24
+ - touched surfaces and footguns list
25
+
26
+ ## Quality checks
27
+ - probe stays time-boxed, normally `<= 1 day`
28
+ - experiment is narrow and directly tied to the uncertainty being tested
29
+ - no production merge happens directly from probe output
30
+ - findings are folded back into `spec.md` before continuation
31
+ - touched surfaces, footguns, and remaining uncertainty are explicit
32
+
33
+ ## Failure behavior
34
+ - stop if the probe is too broad, open-ended, or not tied to a material uncertainty
35
+ - return a narrower probe design when the current one is not safe or useful
36
+ - do not present exploratory output as production-ready implementation
37
+
38
+ ## Allowed side effects
39
+ - update draft `spec.md`
40
+ - create or update temporary probe notes inside the project folder when needed
41
+ - record approval recommendation and follow-up actions
42
+
43
+ ## Script hooks
44
+ - `bash .agents/scripts/pm/validate.sh`
45
+ - `bash .agents/scripts/pm/status.sh`
46
+
47
+ ## Execution assets
48
+ - `references/runbook.md`
49
+ - `references/probe-design-checklist.md`
50
+ - `templates/probe-findings.md`
51
+ - `templates/probe-approval-recommendation.md`
@@ -0,0 +1,26 @@
1
+ # Probe Design Checklist
2
+
3
+ Use this before running a Prototype Probe.
4
+
5
+ ## Probe quality
6
+ - Is the uncertainty material enough to justify a probe?
7
+ - Is the probe tied to one concrete question?
8
+ - Is the probe smaller than full implementation?
9
+ - Can the result change the spec approval decision?
10
+
11
+ ## Scope control
12
+ - What is explicitly in scope?
13
+ - What is explicitly out of scope?
14
+ - Which surfaces may be touched?
15
+ - What would make this probe too broad?
16
+
17
+ ## Evidence
18
+ - What outcome would justify approval?
19
+ - What outcome would require revision?
20
+ - What outcome would suggest another narrow probe?
21
+ - What footguns or side effects must be recorded even if the probe succeeds?
22
+
23
+ ## Safety
24
+ - Is there any risk of probe code being treated like production-ready output?
25
+ - Is there a clean way to prevent direct merge from probe artifacts?
26
+ - Are follow-up tasks likely to be needed after the probe?
@@ -0,0 +1,27 @@
1
+ # Prototype Probe Runbook
2
+
3
+ 1. Read the draft `spec.md` and identify the single material uncertainty to retire or bound.
4
+ 2. Confirm `probe_required: true` and keep the probe narrow.
5
+ 3. Define the smallest useful experiment:
6
+ - what is being tested
7
+ - what evidence is needed
8
+ - what touched surfaces are in scope
9
+ - what is explicitly out of scope
10
+ 4. Time-box the probe, normally to `<= 1 day`.
11
+ 5. Run the experiment using the safest path, CLI-first when feasible.
12
+ 6. Do not merge probe output directly into production delivery flow.
13
+ 7. Fold findings back into `spec.md`:
14
+ - what changed after probe
15
+ - touched surfaces
16
+ - footguns
17
+ - remaining uncertainty
18
+ - approval recommendation
19
+ 8. Validate if contracts changed:
20
+ - `bash .agents/scripts/pm/validate.sh`
21
+ 9. Snapshot status when useful:
22
+ - `bash .agents/scripts/pm/status.sh`
23
+
24
+ Exit gate:
25
+ - probe findings recorded
26
+ - approval recommendation is clear
27
+ - next step is explicit: approve, revise, or run another narrow probe
@@ -0,0 +1,13 @@
1
+ # Probe Approval Recommendation
2
+
3
+ ## Recommendation
4
+ - Approve
5
+ - Revise
6
+ - Run another narrow probe
7
+
8
+ ## Why
9
+
10
+ ## Remaining Uncertainty
11
+
12
+ ## Immediate Next Action
13
+ -
@@ -0,0 +1,16 @@
1
+ # Probe Findings
2
+
3
+ ## Uncertainty Tested
4
+
5
+ ## Experiment Shape
6
+
7
+ ## Evidence Observed
8
+
9
+ ## Touched Surfaces
10
+ -
11
+
12
+ ## Footguns
13
+ -
14
+
15
+ ## What Changed In The Spec
16
+ -
@@ -633,6 +633,7 @@ This keeps rapid learning without weakening team governance.
633
633
 
634
634
  **Primary components**
635
635
 
636
+ - skill: `prototype-skill`
636
637
  - discovery artifacts from `spec.md`
637
638
  - targeted prototype commands or narrow experiments
638
639
  - `pm/validate.sh` if probe findings mutate contracts
File without changes
package/install-delano.sh CHANGED
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bvdm/delano",
3
- "version": "0.1.5",
3
+ "version": "0.1.7",
4
4
  "description": "CLI for the Delano delivery runtime.",
5
5
  "license": "UNLICENSED",
6
6
  "bin": {
@@ -0,0 +1,29 @@
1
+ const { ANALYSIS_APPROVAL_FLAG, runOnboarding } = require("../lib/onboarding");
2
+
3
+ function getOnboardingHelp() {
4
+ return [
5
+ "Usage:",
6
+ " delano onboarding [options]",
7
+ "",
8
+ "Options:",
9
+ " --target <dir> Analyze the nearest AGENTS.md starting from this directory.",
10
+ ` ${ANALYSIS_APPROVAL_FLAG} Explicitly approve AGENTS.md analysis without an interactive prompt.`,
11
+ " -h, --help Show command help.",
12
+ "",
13
+ "Behavior:",
14
+ " - Finds AGENTS.md by searching upward from the target directory.",
15
+ " - Requires explicit approval before analyzing the file.",
16
+ " - Uses the packaged onboarding skill rubric to print recommendations.",
17
+ " - Never edits AGENTS.md; changes remain a separate explicit approval step.",
18
+ "",
19
+ "Examples:",
20
+ " delano onboarding",
21
+ ` delano onboarding ${ANALYSIS_APPROVAL_FLAG}`,
22
+ " delano onboarding --target ../repo"
23
+ ].join("\n");
24
+ }
25
+
26
+ module.exports = {
27
+ getOnboardingHelp,
28
+ runOnboarding
29
+ };
package/src/cli/index.js CHANGED
@@ -3,6 +3,7 @@ const path = require("node:path");
3
3
 
4
4
  const { CliError } = require("./lib/errors");
5
5
  const { getPackageRoot } = require("./lib/runtime");
6
+ const { getOnboardingHelp, runOnboarding } = require("./commands/onboarding");
6
7
  const { runInstall, getInstallHelp } = require("./commands/install");
7
8
  const { createWrapperCommand } = require("./commands/wrapper");
8
9
 
@@ -14,6 +15,11 @@ const wrapperCommands = {
14
15
  };
15
16
 
16
17
  const commands = {
18
+ onboarding: {
19
+ description: "Analyze AGENTS.md with the approval-first onboarding skill.",
20
+ run: runOnboarding,
21
+ help: getOnboardingHelp
22
+ },
17
23
  install: {
18
24
  description: "Install the approved Delano runtime payload into a target repository.",
19
25
  run: runInstall,
@@ -84,6 +90,7 @@ function getGeneralHelp() {
84
90
  " delano <command> [options]",
85
91
  "",
86
92
  "Commands:",
93
+ " onboarding Analyze AGENTS.md with the approval-first onboarding skill",
87
94
  " install Install the approved Delano runtime payload",
88
95
  " init Run .agents/scripts/pm/init.sh in the current Delano repo",
89
96
  " validate Run .agents/scripts/pm/validate.sh in the current Delano repo",
@@ -95,6 +102,8 @@ function getGeneralHelp() {
95
102
  " -v, --version Show version",
96
103
  "",
97
104
  "Examples:",
105
+ " delano onboarding",
106
+ " delano onboarding --approve-agents-analysis",
98
107
  " delano --yes",
99
108
  " delano --target ../my-repo --yes",
100
109
  " npx -y @bvdm/delano@latest --yes",
@@ -104,6 +113,9 @@ function getGeneralHelp() {
104
113
  "Shorthand:",
105
114
  " delano [install-options] is equivalent to delano install [install-options].",
106
115
  "",
116
+ "Recommended first step after install:",
117
+ " Run 'delano onboarding' to review AGENTS.md. The command requires explicit approval before analysis.",
118
+ "",
107
119
  "Use 'delano <command> --help' for command-specific help."
108
120
  ].join("\n");
109
121
  }
@@ -251,6 +251,7 @@ function applyInstallPlan(plan, options) {
251
251
 
252
252
  console.log("");
253
253
  console.log(`Installed ${plan.items.length} files into ${options.target}.`);
254
+ console.log("Recommended next step: run 'delano onboarding' to review AGENTS.md. The command asks for explicit approval before analysis.");
254
255
  }
255
256
 
256
257
  function normalizeManifestEntries(rawManifest) {
@@ -0,0 +1,243 @@
1
+ const { existsSync, readFileSync } = require("node:fs");
2
+ const path = require("node:path");
3
+ const readline = require("node:readline/promises");
4
+ const { stdin, stdout } = require("node:process");
5
+
6
+ const { CliError } = require("./errors");
7
+ const { getPackageRoot } = require("./runtime");
8
+
9
+ const ANALYSIS_APPROVAL_FLAG = "--approve-agents-analysis";
10
+
11
+ function parseOnboardingArgs(args) {
12
+ const options = {
13
+ approveAnalysis: false,
14
+ target: process.cwd()
15
+ };
16
+
17
+ for (let index = 0; index < args.length; index += 1) {
18
+ const arg = args[index];
19
+
20
+ if (arg === "--target") {
21
+ index += 1;
22
+ if (!args[index]) {
23
+ throw new CliError("Missing value for --target.", 1);
24
+ }
25
+ options.target = args[index];
26
+ continue;
27
+ }
28
+
29
+ if (arg.startsWith("--target=")) {
30
+ options.target = arg.slice("--target=".length);
31
+ continue;
32
+ }
33
+
34
+ if (arg === ANALYSIS_APPROVAL_FLAG) {
35
+ options.approveAnalysis = true;
36
+ continue;
37
+ }
38
+
39
+ throw new CliError(`Unknown onboarding option: ${arg}`, 1);
40
+ }
41
+
42
+ options.target = path.resolve(options.target);
43
+ return options;
44
+ }
45
+
46
+ function findAgentsFile(startDir = process.cwd()) {
47
+ let current = path.resolve(startDir);
48
+ const { root } = path.parse(current);
49
+
50
+ while (true) {
51
+ const candidate = path.join(current, "AGENTS.md");
52
+ if (existsSync(candidate)) {
53
+ return candidate;
54
+ }
55
+
56
+ if (current === root) {
57
+ return null;
58
+ }
59
+
60
+ current = path.dirname(current);
61
+ }
62
+ }
63
+
64
+ function getOnboardingGuidePath() {
65
+ const packageRoot = getPackageRoot();
66
+ const candidates = [
67
+ path.join(packageRoot, ".agents", "skills", "onboarding", "references", "agents-md-best-practices.md"),
68
+ path.join(
69
+ packageRoot,
70
+ "assets",
71
+ "payload",
72
+ ".agents",
73
+ "skills",
74
+ "onboarding",
75
+ "references",
76
+ "agents-md-best-practices.md"
77
+ )
78
+ ];
79
+
80
+ for (const candidate of candidates) {
81
+ if (existsSync(candidate)) {
82
+ return candidate;
83
+ }
84
+ }
85
+
86
+ throw new CliError(
87
+ "Could not find the packaged onboarding guide. Rebuild the package assets with 'npm run build:assets'.",
88
+ 1
89
+ );
90
+ }
91
+
92
+ function analyzeAgentsContent(content) {
93
+ const checks = [
94
+ {
95
+ label: "mission",
96
+ presentMessage: "Maps the repository's core operating surface and canonical files.",
97
+ missingMessage: "Add a one-line mission so each turn starts from the repo's purpose and quality bar.",
98
+ test: (text) => /(^|\n)##\s+mission\b/i.test(text)
99
+ },
100
+ {
101
+ label: "first-turn workflow",
102
+ presentMessage: "Provides a reusable first-turn sequence instead of only static rules.",
103
+ missingMessage: "Add a numbered first-turn workflow so the agent knows how to inspect, retrieve, implement, and verify in order.",
104
+ test: (text) => /first-turn workflow|first turn workflow/i.test(text)
105
+ || (/order of operations/i.test(text) && /(^|\n)1\.\s/m.test(text))
106
+ },
107
+ {
108
+ label: "source-of-truth map",
109
+ presentMessage: "Points to the main sources of truth the agent should trust.",
110
+ missingMessage: "Keep a compact source-of-truth map and include 'read this first for X' hints where drift would be costly.",
111
+ test: (text) => /canonical truth|source of truth/i.test(text)
112
+ },
113
+ {
114
+ label: "retrieval index",
115
+ presentMessage: "Provides retrieval hints for common questions and work areas.",
116
+ missingMessage: "Add a retrieval index so the agent can jump from a task area to the right file quickly.",
117
+ test: (text) => /retrieval index/i.test(text)
118
+ },
119
+ {
120
+ label: "stable constraints",
121
+ presentMessage: "Captures durable repo constraints and runtime shape.",
122
+ missingMessage: "Call out stable high-impact constraints such as runtime assumptions, branch policy, style rules, or business-logic conventions.",
123
+ test: (text) => /branch policy|style rules|runtime quirks|default workspace|definition of done|node|bash|python|workspace/i.test(text)
124
+ },
125
+ {
126
+ label: "approval and safety boundaries",
127
+ presentMessage: "States approval boundaries or destructive-action handling.",
128
+ missingMessage: "Make approval boundaries explicit, including destructive actions, recoverable edits, and outbound/public actions.",
129
+ test: (text) => /approval|destructive|recoverable|outbound|public actions|confirm/i.test(text)
130
+ },
131
+ {
132
+ label: "verification expectations",
133
+ presentMessage: "Tells the agent how to verify work and report completion state.",
134
+ missingMessage: "Add verification expectations, including when to run lint/test/build and how to report done, partial, or blocked.",
135
+ test: (text) => /verification|verify|lint|test|build|done|partial|blocked/i.test(text)
136
+ }
137
+ ];
138
+
139
+ const strengths = [];
140
+ const gaps = [];
141
+
142
+ for (const check of checks) {
143
+ if (check.test(content)) {
144
+ strengths.push(check.presentMessage);
145
+ } else {
146
+ gaps.push(check.missingMessage);
147
+ }
148
+ }
149
+
150
+ return { strengths, gaps };
151
+ }
152
+
153
+ function formatOnboardingReport({ agentsPath, guidePath, review }) {
154
+ const lines = [
155
+ "Onboarding review",
156
+ "-----------------",
157
+ `AGENTS.md: ${agentsPath}`,
158
+ `Guide: ${guidePath}`,
159
+ ""
160
+ ];
161
+
162
+ if (review.strengths.length > 0) {
163
+ lines.push("Already working well:");
164
+ for (const strength of review.strengths) {
165
+ lines.push(`- ${strength}`);
166
+ }
167
+ lines.push("");
168
+ }
169
+
170
+ if (review.gaps.length > 0) {
171
+ lines.push("Improve next:");
172
+ for (const gap of review.gaps) {
173
+ lines.push(`- ${gap}`);
174
+ }
175
+ lines.push("");
176
+ } else {
177
+ lines.push("No major gaps detected against the onboarding guide.");
178
+ lines.push("");
179
+ }
180
+
181
+ lines.push("No edits were applied.");
182
+ lines.push("If you want AGENTS.md changed, approve that explicitly in a separate step.");
183
+
184
+ return lines.join("\n");
185
+ }
186
+
187
+ async function confirmAgentsAnalysis(options, agentsPath) {
188
+ if (options.approveAnalysis) {
189
+ return true;
190
+ }
191
+
192
+ if (!stdin.isTTY || !stdout.isTTY) {
193
+ throw new CliError(
194
+ `Onboarding requires explicit approval. Re-run interactively or pass ${ANALYSIS_APPROVAL_FLAG}.`,
195
+ 1
196
+ );
197
+ }
198
+
199
+ const rl = readline.createInterface({ input: stdin, output: stdout });
200
+ try {
201
+ const answer = await rl.question(
202
+ `Analyze AGENTS.md at ${agentsPath} with the onboarding skill rubric? This only reads the file and prints recommendations. [y/N] `
203
+ );
204
+ return /^[Yy](es)?$/.test(answer.trim());
205
+ } finally {
206
+ rl.close();
207
+ }
208
+ }
209
+
210
+ async function runOnboarding(args) {
211
+ const options = parseOnboardingArgs(args);
212
+ const agentsPath = findAgentsFile(options.target);
213
+
214
+ if (!agentsPath) {
215
+ throw new CliError(
216
+ `Could not find AGENTS.md from ${options.target}. Add AGENTS.md or pass --target to a repository that has one.`,
217
+ 1
218
+ );
219
+ }
220
+
221
+ const approved = await confirmAgentsAnalysis(options, agentsPath);
222
+ if (!approved) {
223
+ console.log("Onboarding skipped. No analysis performed.");
224
+ return 0;
225
+ }
226
+
227
+ const guidePath = getOnboardingGuidePath();
228
+ const agentsContent = readFileSync(agentsPath, "utf8");
229
+ const review = analyzeAgentsContent(agentsContent);
230
+ console.log(formatOnboardingReport({ agentsPath, guidePath, review }));
231
+ return 0;
232
+ }
233
+
234
+ module.exports = {
235
+ ANALYSIS_APPROVAL_FLAG,
236
+ analyzeAgentsContent,
237
+ confirmAgentsAnalysis,
238
+ findAgentsFile,
239
+ formatOnboardingReport,
240
+ getOnboardingGuidePath,
241
+ parseOnboardingArgs,
242
+ runOnboarding
243
+ };