@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.
- package/HANDBOOK.md +1 -0
- package/README.md +12 -1
- package/assets/install-manifest.json +12 -0
- package/assets/payload/.agents/hooks/bash-worktree-fix.sh +0 -0
- package/assets/payload/.agents/hooks/post-tool-logger.js +0 -0
- package/assets/payload/.agents/hooks/session-tracker.js +0 -0
- package/assets/payload/.agents/hooks/user-prompt-logger.js +0 -0
- package/assets/payload/.agents/scripts/check-path-standards.sh +0 -0
- package/assets/payload/.agents/scripts/fix-path-standards.sh +0 -0
- package/assets/payload/.agents/scripts/git-sparse-download.sh +0 -0
- package/assets/payload/.agents/scripts/log-event.js +0 -0
- package/assets/payload/.agents/scripts/log-event.sh +0 -0
- package/assets/payload/.agents/scripts/pm/blocked.sh +0 -0
- package/assets/payload/.agents/scripts/pm/epic-list.sh +0 -0
- package/assets/payload/.agents/scripts/pm/in-progress.sh +0 -0
- package/assets/payload/.agents/scripts/pm/init.sh +0 -0
- package/assets/payload/.agents/scripts/pm/next.sh +0 -0
- package/assets/payload/.agents/scripts/pm/prd-list.sh +0 -0
- package/assets/payload/.agents/scripts/pm/search.sh +0 -0
- package/assets/payload/.agents/scripts/pm/standup.sh +0 -0
- package/assets/payload/.agents/scripts/pm/status.sh +0 -0
- package/assets/payload/.agents/scripts/pm/validate.sh +1 -0
- package/assets/payload/.agents/scripts/query-log.sh +0 -0
- package/assets/payload/.agents/scripts/test-and-log.sh +0 -0
- package/assets/payload/.agents/skills/README.md +6 -0
- package/assets/payload/.agents/skills/manage-context/SKILL.md +55 -0
- package/assets/payload/.agents/skills/manage-context/references/context-audit-checklist.md +26 -0
- package/assets/payload/.agents/skills/manage-context/references/runbook.md +26 -0
- package/assets/payload/.agents/skills/manage-context/templates/context-debt-report.md +22 -0
- package/assets/payload/.agents/skills/manage-context/templates/context-refresh-summary.md +13 -0
- package/assets/payload/.agents/skills/onboarding/SKILL.md +49 -0
- package/assets/payload/.agents/skills/onboarding/references/agents-md-best-practices.md +76 -0
- package/assets/payload/.agents/skills/prototype-skill/SKILL.md +51 -0
- package/assets/payload/.agents/skills/prototype-skill/references/probe-design-checklist.md +26 -0
- package/assets/payload/.agents/skills/prototype-skill/references/runbook.md +27 -0
- package/assets/payload/.agents/skills/prototype-skill/templates/probe-approval-recommendation.md +13 -0
- package/assets/payload/.agents/skills/prototype-skill/templates/probe-findings.md +16 -0
- package/assets/payload/HANDBOOK.md +1 -0
- package/assets/payload/install-delano.sh +0 -0
- package/install-delano.sh +0 -0
- package/package.json +1 -1
- package/src/cli/commands/onboarding.js +29 -0
- package/src/cli/index.js +12 -0
- package/src/cli/lib/install.js +1 -0
- 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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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,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
|
|
@@ -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
|
@@ -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
|
}
|
package/src/cli/lib/install.js
CHANGED
|
@@ -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
|
+
};
|