@bvdm/delano 0.2.4 → 0.2.6

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 (27) hide show
  1. package/.delano/viewer/public/styles.css +1 -1
  2. package/README.md +35 -0
  3. package/assets/install-manifest.json +9 -0
  4. package/assets/payload/.agents/adapters/manifest.schema.json +103 -0
  5. package/assets/payload/.agents/adapters/spec-kit/adapter.json +71 -0
  6. package/assets/payload/.agents/schemas/status-transitions.json +17 -0
  7. package/assets/payload/.agents/scripts/check-status-transitions.mjs +83 -2
  8. package/assets/payload/.agents/scripts/pm/import-spec-kit.sh +605 -0
  9. package/assets/payload/.agents/scripts/pm/init.sh +31 -2
  10. package/assets/payload/.agents/scripts/pm/research.sh +296 -0
  11. package/assets/payload/.agents/scripts/pm/validate.sh +15 -0
  12. package/assets/payload/.agents/skills/README.md +1 -0
  13. package/assets/payload/.agents/skills/research-skill/SKILL.md +66 -0
  14. package/assets/payload/.agents/skills/research-skill/references/runbook.md +59 -0
  15. package/assets/payload/.agents/skills/research-skill/templates/fold-forward-checklist.md +9 -0
  16. package/assets/payload/.agents/skills/research-skill/templates/research-summary.md +21 -0
  17. package/assets/payload/.delano/viewer/public/styles.css +1 -1
  18. package/assets/payload/.project/templates/decisions.md +18 -0
  19. package/assets/payload/.project/templates/plan.md +17 -0
  20. package/assets/payload/.project/templates/spec.md +12 -0
  21. package/assets/payload/.project/templates/task.md +6 -0
  22. package/assets/payload/.project/templates/workstream.md +1 -0
  23. package/package.json +4 -2
  24. package/src/cli/commands/state.js +689 -0
  25. package/src/cli/commands/wrapper.js +16 -3
  26. package/src/cli/index.js +119 -7
  27. package/src/cli/lib/project-state.js +918 -0
@@ -0,0 +1,296 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ usage() {
5
+ cat <<'USAGE'
6
+ Usage:
7
+ research.sh <project-slug> <research-slug> [options]
8
+
9
+ Creates a repo-native Delano research intake folder for a project.
10
+
11
+ Required arguments:
12
+ project-slug Existing Delano project slug
13
+ research-slug Research folder slug in kebab-case
14
+
15
+ Options:
16
+ --title <title> Human-readable research title
17
+ --question <question> Primary research question
18
+ --owner <owner> Research owner, defaults to team
19
+ --no-validate Create artifacts without running Delano validation
20
+ --json Print a single machine-readable JSON result
21
+ -h, --help Show this help
22
+
23
+ Agent notes:
24
+ - Use this before mutating spec/plan/tasks when intent is unclear.
25
+ - Update findings.md and progress.md during investigation.
26
+ - Fold durable conclusions forward into spec.md, plan.md, decisions.md, workstreams, tasks, or updates.
27
+ - Research files are supporting discovery state, not executable task truth.
28
+ USAGE
29
+ }
30
+
31
+ resolve_python() {
32
+ if command -v python3 >/dev/null 2>&1 && python3 -c "import sys" >/dev/null 2>&1; then
33
+ PYTHON_CMD=(python3)
34
+ elif command -v py >/dev/null 2>&1 && py -3 -c "import sys" >/dev/null 2>&1; then
35
+ PYTHON_CMD=(py -3)
36
+ elif command -v python >/dev/null 2>&1 && python -c "import sys" >/dev/null 2>&1; then
37
+ PYTHON_CMD=(python)
38
+ else
39
+ echo "Error: Python runtime not found. Install python3, python, or py -3." >&2
40
+ exit 1
41
+ fi
42
+ }
43
+
44
+ resolve_python
45
+
46
+ json_escape() {
47
+ "${PYTHON_CMD[@]}" -c 'import json,sys; print(json.dumps(sys.stdin.read().rstrip("\n")))'
48
+ }
49
+
50
+ if [[ "${1:-}" == "" || "${1:-}" == "-h" || "${1:-}" == "--help" ]]; then
51
+ usage
52
+ exit 0
53
+ fi
54
+
55
+ if [[ "${2:-}" == "" ]]; then
56
+ usage
57
+ exit 1
58
+ fi
59
+
60
+ project_slug="$1"
61
+ research_slug="$2"
62
+ shift 2
63
+
64
+ title=""
65
+ question=""
66
+ owner="team"
67
+ validate="true"
68
+ json="false"
69
+
70
+ while [[ $# -gt 0 ]]; do
71
+ case "$1" in
72
+ --title)
73
+ title="${2:-}"
74
+ if [[ -z "$title" ]]; then echo "Error: --title requires a value"; exit 1; fi
75
+ shift 2
76
+ ;;
77
+ --question)
78
+ question="${2:-}"
79
+ if [[ -z "$question" ]]; then echo "Error: --question requires a value"; exit 1; fi
80
+ shift 2
81
+ ;;
82
+ --owner)
83
+ owner="${2:-}"
84
+ if [[ -z "$owner" ]]; then echo "Error: --owner requires a value"; exit 1; fi
85
+ shift 2
86
+ ;;
87
+ --no-validate)
88
+ validate="false"
89
+ shift
90
+ ;;
91
+ --json)
92
+ json="true"
93
+ shift
94
+ ;;
95
+ -h|--help)
96
+ usage
97
+ exit 0
98
+ ;;
99
+ --)
100
+ shift
101
+ ;;
102
+ --*)
103
+ echo "Error: unknown option: $1"
104
+ exit 1
105
+ ;;
106
+ *)
107
+ echo "Error: unexpected positional argument: $1"
108
+ exit 1
109
+ ;;
110
+ esac
111
+ done
112
+
113
+ if [[ ! "$project_slug" =~ ^[a-z0-9]+(-[a-z0-9]+)*$ ]]; then
114
+ echo "Error: project-slug must be kebab-case"
115
+ exit 1
116
+ fi
117
+
118
+ if [[ ! "$research_slug" =~ ^[a-z0-9]+(-[a-z0-9]+)*$ ]]; then
119
+ echo "Error: research-slug must be kebab-case"
120
+ exit 1
121
+ fi
122
+
123
+ root="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
124
+ cd "$root"
125
+
126
+ project_dir=".project/projects/$project_slug"
127
+ if [[ ! -d "$project_dir" ]]; then
128
+ echo "Error: Delano project not found: $project_dir"
129
+ exit 1
130
+ fi
131
+
132
+ research_dir="$project_dir/research/$research_slug"
133
+ if [[ -d "$research_dir" ]]; then
134
+ echo "Error: research intake already exists at $research_dir"
135
+ exit 1
136
+ fi
137
+
138
+ now="$(date -u +"%Y-%m-%dT%H:%M:%SZ")"
139
+ title="${title:-${research_slug//-/ }}"
140
+ question="${question:-<primary research question>}"
141
+
142
+ mkdir -p "$research_dir"
143
+
144
+ cat > "$research_dir/task_plan.md" <<PLAN
145
+ ---
146
+ type: research_intake
147
+ project: $project_slug
148
+ slug: $research_slug
149
+ owner: $owner
150
+ status: opened
151
+ created: $now
152
+ updated: $now
153
+ ---
154
+
155
+ # Research Plan: $title
156
+
157
+ ## Goal
158
+
159
+ Answer the research question and fold durable conclusions into canonical Delano project artifacts.
160
+
161
+ ## Primary Question
162
+
163
+ $question
164
+
165
+ ## Scope
166
+
167
+ ### In Scope
168
+
169
+ - Gather relevant evidence.
170
+ - Capture findings and decisions.
171
+ - Identify changes needed in \`spec.md\`, \`plan.md\`, \`decisions.md\`, workstreams, tasks, or updates.
172
+
173
+ ### Out of Scope
174
+
175
+ - Marking delivery tasks done from research alone.
176
+ - External sync writes without normal Delano approval semantics.
177
+ - Storing secrets, credentials, or private machine paths.
178
+
179
+ ## Current Phase
180
+
181
+ Opened
182
+
183
+ ## Phases
184
+
185
+ - [x] Open research intake
186
+ - [ ] Investigate sources and options
187
+ - [ ] Summarize findings
188
+ - [ ] Fold forward into canonical project artifacts or explicitly close as no-action
189
+
190
+ ## Decisions Made
191
+
192
+ | Decision | Rationale |
193
+ | --- | --- |
194
+
195
+ ## Blockers
196
+
197
+ | Blocker | Owner | Check-back |
198
+ | --- | --- | --- |
199
+ PLAN
200
+
201
+ cat > "$research_dir/findings.md" <<FINDINGS
202
+ ---
203
+ type: research_findings
204
+ project: $project_slug
205
+ slug: $research_slug
206
+ created: $now
207
+ updated: $now
208
+ ---
209
+
210
+ # Findings: $title
211
+
212
+ ## Source References
213
+
214
+ - <source, file, command, or artifact inspected>
215
+
216
+ ## Observations
217
+
218
+ - <finding>
219
+
220
+ ## Options Considered
221
+
222
+ | Option | Pros | Cons | Decision |
223
+ | --- | --- | --- | --- |
224
+
225
+ ## Fold-Forward Candidates
226
+
227
+ | Finding | Target Artifact | Proposed Change |
228
+ | --- | --- | --- |
229
+
230
+ ## Open Questions
231
+
232
+ - <question>
233
+ FINDINGS
234
+
235
+ cat > "$research_dir/progress.md" <<PROGRESS
236
+ ---
237
+ type: research_progress
238
+ project: $project_slug
239
+ slug: $research_slug
240
+ created: $now
241
+ updated: $now
242
+ ---
243
+
244
+ # Progress: $title
245
+
246
+ ## $now
247
+
248
+ - Opened research intake for project \`$project_slug\`.
249
+ - Primary question: $question
250
+
251
+ ## Validation Evidence
252
+
253
+ - Pending.
254
+
255
+ ## Handoff Summary
256
+
257
+ - Pending.
258
+ PROGRESS
259
+
260
+ validation_status="skipped"
261
+ ok="true"
262
+ error=""
263
+ if [[ "$validate" == "true" ]]; then
264
+ if [[ "$json" == "true" ]]; then
265
+ validation_log="$(mktemp)"
266
+ if "$root/.agents/scripts/pm/validate.sh" >"$validation_log" 2>&1; then
267
+ validation_status="passed"
268
+ else
269
+ validation_status="failed"
270
+ ok="false"
271
+ error="validation_failed"
272
+ fi
273
+ rm -f "$validation_log"
274
+ else
275
+ "$root/.agents/scripts/pm/validate.sh"
276
+ validation_status="passed"
277
+ fi
278
+ fi
279
+
280
+ if [[ "$json" == "true" ]]; then
281
+ project_json="$(printf '%s' "$project_dir" | json_escape)"
282
+ research_json="$(printf '%s' "$research_dir" | json_escape)"
283
+ validation_json="$(printf '%s' "$validation_status" | json_escape)"
284
+ if [[ "$ok" == "true" ]]; then
285
+ printf '{"ok":true,"command":"research","project":%s,"research":%s,"files":["task_plan.md","findings.md","progress.md"],"validation":%s}\n' "$project_json" "$research_json" "$validation_json"
286
+ else
287
+ error_json="$(printf '%s' "$error" | json_escape)"
288
+ printf '{"ok":false,"command":"research","project":%s,"research":%s,"files":["task_plan.md","findings.md","progress.md"],"validation":%s,"error":%s}\n' "$project_json" "$research_json" "$validation_json" "$error_json"
289
+ exit 1
290
+ fi
291
+ else
292
+ echo "Created Delano research intake: $research_dir"
293
+ echo "Files: task_plan.md, findings.md, progress.md"
294
+ echo "Validation: $validation_status"
295
+ echo "Next: update findings.md and progress.md, then fold conclusions into canonical Delano artifacts."
296
+ fi
@@ -147,6 +147,7 @@ fi
147
147
  # Required skill contracts
148
148
  required_skills=(
149
149
  discovery-skill
150
+ research-skill
150
151
  prototype-skill
151
152
  planning-skill
152
153
  breakdown-skill
@@ -467,6 +468,20 @@ if [[ -n "$artifact_schema_check" ]]; then
467
468
  fi
468
469
  fi
469
470
 
471
+ if [[ -f scripts/check-adapter-manifests.mjs ]]; then
472
+ echo ""
473
+ if command -v node >/dev/null 2>&1; then
474
+ if node scripts/check-adapter-manifests.mjs; then
475
+ true
476
+ else
477
+ errors=$((errors + 1))
478
+ fi
479
+ else
480
+ echo "❌ Node runtime not found for adapter manifest check"
481
+ errors=$((errors + 1))
482
+ fi
483
+ fi
484
+
470
485
  operating_modes_check=""
471
486
  if [[ -f .agents/scripts/check-operating-modes.mjs ]]; then
472
487
  operating_modes_check=".agents/scripts/check-operating-modes.mjs"
@@ -5,6 +5,7 @@ Handbook-aligned skill contracts.
5
5
  Core workflow skills:
6
6
 
7
7
  - `discovery-skill`
8
+ - `research-skill`
8
9
  - `prototype-skill`
9
10
  - `planning-skill`
10
11
  - `breakdown-skill`
@@ -0,0 +1,66 @@
1
+ ---
2
+ name: research-skill
3
+ description: Open and run repo-native research intake before mutating canonical delivery artifacts. Use when a Delano request has unclear intent, unresolved options, external evidence needs, or material uncertainty that should be investigated before changing spec, plan, workstreams, or tasks.
4
+ ---
5
+
6
+ # research-skill
7
+
8
+ ## Trigger context
9
+ - delivery intent is unclear enough that direct changes to `spec.md`, `plan.md`, workstreams, or tasks would be speculative
10
+ - options, constraints, risks, or external evidence need investigation before planning or execution
11
+ - imported or user-provided material needs synthesis into Delano's canonical project artifacts
12
+ - a previous `planning_with_files` style briefing would have been useful, but the work must stay inside the Delano repo
13
+
14
+ ## Non-triggers
15
+ - obvious implementation tasks with accepted scope
16
+ - simple bug fixes or one-file edits
17
+ - work that already has an approved spec, plan, and ready tasks
18
+ - personal Obsidian briefing or vault-based planning
19
+
20
+ ## Required inputs
21
+ - project_slug
22
+ - research_slug
23
+ - research_title
24
+ - primary_question
25
+ - owner
26
+ - known_constraints
27
+
28
+ ## Output schema
29
+ - `.project/projects/<slug>/research/<research-slug>/task_plan.md`
30
+ - `.project/projects/<slug>/research/<research-slug>/findings.md`
31
+ - `.project/projects/<slug>/research/<research-slug>/progress.md`
32
+ - folded-forward updates to `spec.md`, `plan.md`, `decisions.md`, workstreams, tasks, or update notes when conclusions are durable
33
+ - explicit no-action closeout when research does not change canonical artifacts
34
+
35
+ ## Quality checks
36
+ - research question is specific enough to answer
37
+ - findings cite inspected files, commands, sources, or artifacts
38
+ - progress log records actions, validation, blockers, and closeout
39
+ - durable conclusions are folded into canonical Delano project artifacts
40
+ - research files do not contain secrets, credentials, private machine paths, or Obsidian vault paths
41
+ - research output is not treated as executable task truth until folded forward
42
+
43
+ ## Failure behavior
44
+ - stop if project slug does not exist
45
+ - return a narrower research question when the current question is too broad
46
+ - document evidence gaps before recommending artifact changes
47
+ - leave canonical project files unchanged when findings are weak or unresolved
48
+
49
+ ## Allowed side effects
50
+ - create a research intake folder under `.project/projects/<slug>/research/<research-slug>/`
51
+ - update `task_plan.md`, `findings.md`, and `progress.md` during investigation
52
+ - update canonical Delano artifacts only after evidence supports the change
53
+ - run Delano validation after creating or folding forward research
54
+
55
+ ## Script hooks
56
+ - `bash .agents/scripts/pm/research.sh <project-slug> <research-slug> --title "<Research Title>" --question "<Primary Question>" --owner <owner> --json`
57
+ - `bash .agents/scripts/pm/validate.sh`
58
+ - `bash .agents/scripts/pm/status.sh`
59
+
60
+ ## Lineage
61
+ This skill adapts Bart's `planning_with_files` pattern to Delano. Keep the useful three-file working state and closeout discipline, but do not use Obsidian, `BartsVault`, or external briefing folders. Delano research belongs inside the project repository.
62
+
63
+ ## Execution assets
64
+ - `references/runbook.md`
65
+ - `templates/research-summary.md`
66
+ - `templates/fold-forward-checklist.md`
@@ -0,0 +1,59 @@
1
+ # research-skill runbook
2
+
3
+ Use research intake as Delano's repo-native version of file-based planning for unclear work. It gives agents durable working state without moving the source of truth out of the repository.
4
+
5
+ ## 1. Decide whether research is needed
6
+
7
+ Open research when the next canonical artifact change would otherwise be a guess. Good triggers include unclear imported requirements, competing implementation options, missing evidence, uncertain user intent, and questions that need investigation before delivery planning.
8
+
9
+ Skip research when the work is already decided and executable. Use `execution-skill`, `planning-skill`, or `quality-skill` directly instead.
10
+
11
+ ## 2. Open the intake
12
+
13
+ Run:
14
+
15
+ ```bash
16
+ bash .agents/scripts/pm/research.sh <project-slug> <research-slug> \
17
+ --title "<Research Title>" \
18
+ --question "<Primary Question>" \
19
+ --owner <owner> \
20
+ --json
21
+ ```
22
+
23
+ The command creates:
24
+ - `task_plan.md`
25
+ - `findings.md`
26
+ - `progress.md`
27
+
28
+ under:
29
+ - `.project/projects/<project-slug>/research/<research-slug>/`
30
+
31
+ Do not create Obsidian briefings for Delano research.
32
+
33
+ ## 3. Work inside the intake
34
+
35
+ Use `task_plan.md` for phase state, `findings.md` for evidence and conclusions, and `progress.md` for chronological actions, tests, blockers, and handoff notes.
36
+
37
+ Keep entries concise and evidence-led. Cite local files, commands, issue references, PRs, docs, or external sources that were actually inspected.
38
+
39
+ ## 4. Fold forward
40
+
41
+ Research is not done just because the three files exist. Durable conclusions must be folded into canonical Delano artifacts:
42
+ - `spec.md`
43
+ - `plan.md`
44
+ - `decisions.md`
45
+ - `workstreams/*.md`
46
+ - `tasks/*.md`
47
+ - `updates/*.md`
48
+
49
+ If the answer is no-action, record why in `progress.md` and keep canonical files unchanged.
50
+
51
+ ## 5. Validate and report
52
+
53
+ Run validation after creating intake files and again after folding conclusions forward:
54
+
55
+ ```bash
56
+ bash .agents/scripts/pm/validate.sh
57
+ ```
58
+
59
+ Report the research path, conclusion, folded-forward files, validation result, and remaining open items.
@@ -0,0 +1,9 @@
1
+ # Fold-forward Checklist
2
+
3
+ - [ ] Research question answered or explicitly narrowed
4
+ - [ ] Evidence and gaps recorded in `findings.md`
5
+ - [ ] Actions, validation, and blockers recorded in `progress.md`
6
+ - [ ] Durable conclusions copied into canonical Delano artifacts
7
+ - [ ] No secrets, credentials, private machine paths, or Obsidian vault paths included
8
+ - [ ] `bash .agents/scripts/pm/validate.sh` run after changes
9
+ - [ ] No-action closeout recorded if canonical artifacts stayed unchanged
@@ -0,0 +1,21 @@
1
+ # Research Summary
2
+
3
+ ## Question
4
+
5
+ <primary research question>
6
+
7
+ ## Evidence Inspected
8
+
9
+ - <file, command, source, issue, PR, or artifact>
10
+
11
+ ## Findings
12
+
13
+ - <finding tied to evidence>
14
+
15
+ ## Recommendation
16
+
17
+ <recommended Delano artifact change or no-action decision>
18
+
19
+ ## Confidence
20
+
21
+ <high|medium|low> because <reason>
@@ -602,7 +602,7 @@ button { font-family: inherit; font-size: inherit; color: inherit; background: n
602
602
  /* ---------- Workspace dashboard ---------- */
603
603
  .project-grid {
604
604
  display: grid;
605
- grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
605
+ grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
606
606
  gap: 14px;
607
607
  padding-top: 16px;
608
608
  }
@@ -0,0 +1,18 @@
1
+ ---
2
+ name: <project-name>
3
+ slug: <kebab-case>
4
+ owner: <person-or-team>
5
+ created: <ISO8601 UTC>
6
+ updated: <ISO8601 UTC>
7
+ ---
8
+
9
+ # Decisions: <project-name>
10
+
11
+ ## Active Decisions
12
+ - No decisions recorded at creation.
13
+
14
+ ## Superseded Decisions
15
+ - None.
16
+
17
+ ## Open Decision Questions
18
+ - None recorded at creation.
@@ -13,8 +13,25 @@ spec_status_at_plan_time: <planned|active|complete|deferred>
13
13
 
14
14
  ## What Changed After Probe
15
15
 
16
+ ## Technical Context
17
+
16
18
  ## Architecture Decisions
17
19
 
20
+ ## Policy and Contract Checks
21
+ - [ ] `.project` remains the execution source of truth
22
+ - [ ] Probe decision is explicit
23
+ - [ ] Evidence gates are defined before handoff
24
+ - [ ] External sync writes require dry-run or operator approval
25
+
26
+ ## Generated Artifact Map
27
+ - `spec.md`: <source or generation notes>
28
+ - `plan.md`: <source or generation notes>
29
+ - `workstreams/`: <source or generation notes>
30
+ - `tasks/`: <source or generation notes>
31
+
32
+ ## Complexity Exceptions
33
+ - <exception, rationale, and owner>
34
+
18
35
  ## Probe-Driven Architecture Changes
19
36
 
20
37
  ## Workstream Design
@@ -19,6 +19,12 @@ probe_status: <pending|skipped|completed>
19
19
 
20
20
  ## Outcome and Success Metrics
21
21
 
22
+ ## User Stories
23
+ - US-001: As a <user>, I want <capability>, so that <outcome>.
24
+
25
+ ## Acceptance Scenarios
26
+ - AC-001: Given <context>, when <action>, then <observable result>.
27
+
22
28
  ## Scope
23
29
  ### In Scope
24
30
  ### Out of Scope
@@ -27,6 +33,12 @@ probe_status: <pending|skipped|completed>
27
33
 
28
34
  ## Non-Functional Requirements
29
35
 
36
+ ## Assumptions
37
+ - <assumption to validate>
38
+
39
+ ## Needs Clarification
40
+ - <question that must be answered before activation or execution>
41
+
30
42
  ## Hypotheses and Unknowns
31
43
 
32
44
  ## Touchpoints to Exercise
@@ -13,6 +13,8 @@ conflicts_with: []
13
13
  parallel: true
14
14
  priority: medium
15
15
  estimate: M
16
+ story_id:
17
+ acceptance_criteria_ids: []
16
18
  ---
17
19
 
18
20
  # Task: <task-title>
@@ -22,6 +24,10 @@ estimate: M
22
24
  ## Acceptance Criteria
23
25
  - [ ]
24
26
 
27
+ ## Traceability
28
+ - Story: <story_id or none>
29
+ - Acceptance criteria: <acceptance criteria ids or none>
30
+
25
31
  ## Technical Notes
26
32
 
27
33
  ## Definition of Done
@@ -1,4 +1,5 @@
1
1
  ---
2
+ id: WS-A
2
3
  name: WS-A API Foundation
3
4
  owner: backend-team
4
5
  status: planned
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bvdm/delano",
3
- "version": "0.2.4",
3
+ "version": "0.2.6",
4
4
  "description": "CLI for the Delano delivery runtime.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -58,6 +58,8 @@
58
58
  "check:project-metrics": "node scripts/summarize-project-metrics.mjs --json",
59
59
  "check:context-audit": "node scripts/check-context-audit.mjs",
60
60
  "check:skill-output-evals": "node scripts/check-skill-output-evals.mjs",
61
- "check:closeout-learning": "node scripts/propose-closeout-learning.mjs --json && node scripts/check-closeout-learning-proposals.mjs"
61
+ "check:closeout-learning": "node scripts/propose-closeout-learning.mjs --json && node scripts/check-closeout-learning-proposals.mjs",
62
+ "check:spec-kit-interop": "node scripts/check-spec-kit-interop-fixtures.mjs",
63
+ "check:adapter-manifests": "node scripts/check-adapter-manifests.mjs"
62
64
  }
63
65
  }