@vpxa/aikit 0.1.355 → 0.1.356

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.
@@ -1,11 +1,11 @@
1
- const e={ask:{description:`Quick research question — find answer using AI Kit + web search`,agent:`Researcher-Alpha`,tools:[`search`,`web_search`,`web_fetch`,`knowledge`,`present`],content:`## Quick Research
1
+ const e={ask:{description:`Quick research question — find answer using AI Kit + web search`,agent:`Researcher-Alpha`,intent:`Quick research question using AI Kit + web search`,tools:[`search`,`web_search`,`web_fetch`,`knowledge`,`present`],content:`## Quick Research
2
2
 
3
3
  1. **AI Kit Recall** — Search the AI Kit index for existing answers
4
4
  2. **Web Search** — If AI Kit has no relevant results, search the web
5
5
  3. **Synthesize** — Combine findings into a clear, concise answer
6
6
  4. **Remember** — If the answer is broadly useful, persist it with \`knowledge({ action: "remember", ... })\`
7
7
 
8
- **Always cite sources** — AI Kit entries, file paths, or URLs.`},debug:{description:`Systematic error diagnosis: reproduce → trace → diagnose → fix → verify`,agent:`Debugger`,tools:[`search`,`symbol`,`trace`,`blast_radius`,`check`,`test_run`,`parse_output`,`knowledge`,`present`],content:'## Debug Workflow\n\n1. **Parse Error** — Use `parse_output` on the error message/stack trace\n2. **AI Kit Recall** — Search for known issues matching this pattern\n3. **Reproduce** — Run the failing command/test to confirm\n4. **Trace** — Use `symbol` and `trace` to follow the call chain\n5. **Diagnose** — Form hypothesis, gather evidence\n6. **Fix** — Implement minimal fix\n7. **Verify** — `check` + `test_run` to confirm fix and no regressions\n8. **Remember** — Persist the fix with `knowledge({ action: "remember", category: "troubleshooting", ... })`'},implement:{description:`Full lifecycle implementation: plan → build → review → commit`,agent:`Orchestrator`,tools:[`search`,`scope_map`,`forge_ground`,`check`,`test_run`,`blast_radius`,`knowledge`,`audit`,`present`],content:`## Implementation Pipeline
8
+ **Always cite sources** — AI Kit entries, file paths, or URLs.`},debug:{description:`Systematic error diagnosis: reproduce → trace → diagnose → fix → verify`,agent:`Debugger`,tools:[`search`,`symbol`,`trace`,`blast_radius`,`check`,`test_run`,`parse_output`,`knowledge`,`present`],intent:`Systematic error diagnosis and fix workflow`,content:'## Debug Workflow\n\n1. **Parse Error** — Use `parse_output` on the error message/stack trace\n2. **AI Kit Recall** — Search for known issues matching this pattern\n3. **Reproduce** — Run the failing command/test to confirm\n4. **Trace** — Use `symbol` and `trace` to follow the call chain\n5. **Diagnose** — Form hypothesis, gather evidence\n6. **Fix** — Implement minimal fix\n7. **Verify** — `check` + `test_run` to confirm fix and no regressions\n8. **Remember** — Persist the fix with `knowledge({ action: "remember", category: "troubleshooting", ... })`'},implement:{description:`Full lifecycle implementation: plan → build → review → commit`,agent:`Orchestrator`,tools:[`search`,`scope_map`,`forge_ground`,`check`,`test_run`,`blast_radius`,`knowledge`,`audit`,`present`],intent:`Full lifecycle implementation with quality gates`,content:`## Implementation Pipeline
9
9
 
10
10
  Follow the Orchestrator's full workflow:
11
11
 
@@ -16,7 +16,7 @@ Follow the Orchestrator's full workflow:
16
16
 
17
17
  **🛑 MANDATORY STOPS** — After plan, after each batch, after completion.
18
18
 
19
- Refer to the Orchestrator agent's full instructions for the detailed workflow.`},plan:{description:`Create a detailed TDD implementation plan without executing it`,agent:`Planner`,tools:[`search`,`scope_map`,`forge_ground`,`forge_classify`,`file_summary`,`analyze`,`knowledge`,`present`],content:`## Planning Workflow
19
+ Refer to the Orchestrator agent's full instructions for the detailed workflow.`},plan:{description:`Create a detailed TDD implementation plan without executing it`,agent:`Planner`,tools:[`search`,`scope_map`,`forge_ground`,`forge_classify`,`file_summary`,`analyze`,`knowledge`,`present`],intent:`Create detailed TDD implementation plan`,content:`## Planning Workflow
20
20
 
21
21
  1. **AI Kit Recall** — Search for past plans, architecture decisions
22
22
  2. **FORGE Ground** — Classify tier, scope map, seed unknowns
@@ -25,7 +25,7 @@ Refer to the Orchestrator agent's full instructions for the detailed workflow.`}
25
25
  5. **Dependency Graph** — Group into parallel batches
26
26
  6. **Present** — Show plan with open questions
27
27
 
28
- **🛑 MANDATORY STOP** — Wait for user approval. Do NOT implement.`},design:{description:`Collaborative design session — explore ideas, refine requirements, produce a design spec`,agent:`Orchestrator`,tools:[`search`,`scope_map`,`file_summary`,`knowledge`,`forge_classify`,`present`],content:`## Design Session
28
+ **🛑 MANDATORY STOP** — Wait for user approval. Do NOT implement.`},design:{description:`Collaborative design session — explore ideas, refine requirements, produce a design spec`,agent:`Orchestrator`,intent:`Collaborative design exploration session`,tools:[`search`,`scope_map`,`file_summary`,`knowledge`,`forge_classify`,`present`],content:`## Design Session
29
29
 
30
30
  Enter Phase 0 (Design Gate) directly — the user is requesting a design session.
31
31
 
@@ -34,7 +34,7 @@ Enter Phase 0 (Design Gate) directly — the user is requesting a design session
34
34
  3. If Advanced Mode, use the full Multi-Model Decision Protocol (3-phase: research → peer review → verdict, defined in Orchestrator instructions) for unresolved technical choices
35
35
  4. Terminal state: brainstorming skill invokes writing-plans skill
36
36
 
37
- **🛑 HARD GATE** — Do NOT skip brainstorming. Do NOT write code. Design first.`},review:{description:`Dual-model code + architecture review pipeline`,agent:`Orchestrator`,tools:[`search`,`blast_radius`,`check`,`test_run`,`analyze`,`knowledge`,`present`],content:`## Review Pipeline
37
+ **🛑 HARD GATE** — Do NOT skip brainstorming. Do NOT write code. Design first.`},review:{description:`Dual-model code + architecture review pipeline`,agent:`Orchestrator`,intent:`Multi-model code and architecture review pipeline`,tools:[`search`,`blast_radius`,`check`,`test_run`,`analyze`,`knowledge`,`present`],content:`## Review Pipeline
38
38
 
39
39
  ### Step 1: Scope
40
40
  Identify changed files and their blast radius.
@@ -52,7 +52,7 @@ Merge findings from both reviewers:
52
52
  - **Disagreements**: Contradicting verdicts → present both to user
53
53
 
54
54
  ### Step 5: Report
55
- Present unified review with: verdict, findings by severity, recommended actions.`},"flow-add":{description:`Install a new flow from a git URL or local path — with interactive error recovery`,agent:`Orchestrator`,tools:[`flow`,`search`,`present`],content:`## Flow Installation Assistant
55
+ Present unified review with: verdict, findings by severity, recommended actions.`},"flow-add":{description:`Install a new flow from a git URL or local path — with interactive error recovery`,agent:`Orchestrator`,intent:`Install a flow from git URL or local path`,tools:[`flow`,`search`,`present`],content:`## Flow Installation Assistant
56
56
 
57
57
  Install a development flow from a git repository or local directory.
58
58
 
@@ -61,7 +61,7 @@ Provide a git URL or local path:
61
61
  - \`https://github.com/org/my-flow.git\`
62
62
  - \`git@github.com:org/my-flow.git\`
63
63
  - \`./path/to/local/flow\`
64
- - \`C:\\Users\\name\\flows\\my-flow\`
64
+ - \`C:\\path\\to\\flow\`
65
65
 
66
66
  ### Workflow
67
67
 
@@ -130,7 +130,7 @@ If \`flow({ action: 'add', source })\` succeeds cloning but returns a format/str
130
130
  ### Post-Install
131
131
  After successful installation:
132
132
  - Show the flow name, steps, and description via \`present\`
133
- - Remind user they can start it with \`flow({ action: 'start', name, topic })\``},"flow-manage":{description:`List, inspect, update, and remove installed flows`,agent:`Orchestrator`,tools:[`flow`,`present`],content:`## Flow Management
133
+ - Remind user they can start it with \`flow({ action: 'start', name, topic })\``},"flow-manage":{description:`List, inspect, update, and remove installed flows`,agent:`Orchestrator`,intent:`List, inspect, update, and remove installed flows`,tools:[`flow`,`present`],content:`## Flow Management
134
134
 
135
135
  Manage your installed development flows.
136
136
 
@@ -148,7 +148,7 @@ Manage your installed development flows.
148
148
  1. If no specific action requested, start with \`flow({ action: 'list' })\` and present overview
149
149
  2. Use \`present\` to display flow information in a clear table/card format
150
150
  3. For updates, warn if there's an active flow that might be affected
151
- 4. For removals, confirm with user before proceeding`},"flow-create":{description:`Create a new flow from scratch or migrate an existing workflow to aikit format`,agent:`Orchestrator`,tools:[`flow`,`search`,`present`],content:`## Flow Creation Assistant
151
+ 4. For removals, confirm with user before proceeding`},"flow-create":{description:`Create a new flow from scratch or migrate an existing workflow to aikit format`,agent:`Orchestrator`,intent:`Create or migrate development flows`,tools:[`flow`,`search`,`present`],content:`## Flow Creation Assistant
152
152
 
153
153
  Create a new development flow or migrate an existing workflow to the aikit flow format.
154
154
 
@@ -222,343 +222,14 @@ Each step README should include:
222
222
  - **Inputs** — What context/artifacts from prior steps are needed
223
223
  - **Instructions** — Detailed steps for the agent to follow
224
224
  - **Output** — What artifact(s) to produce and where to save them
225
- - **Acceptance criteria** — How to know the step is complete`},docs:{description:`Deep codebase understanding — analyze, learn, document, and visualize the entire project as an interactive knowledge graph`,agent:`Orchestrator`,tools:[`onboard`,`analyze`,`audit`,`produce_knowledge`,`graph`,`measure`,`blast_radius`,`search`,`symbol`,`trace`,`dead_symbols`,`file_summary`,`digest`,`knowledge`,`present`,`check`,`test_run`,`git_context`],content:`## Understand & Document — Full Codebase Intelligence
225
+ - **Acceptance criteria** — How to know the step is complete`},docs:{description:`Deep codebase understanding — analyze, learn, document, and visualize the entire project as an interactive knowledge graph`,agent:`Orchestrator`,intent:`Deep codebase understanding and documentation generation`,tools:[`onboard`,`analyze`,`audit`,`produce_knowledge`,`graph`,`measure`,`blast_radius`,`search`,`symbol`,`trace`,`dead_symbols`,`file_summary`,`digest`,`knowledge`,`present`,`check`,`test_run`,`git_context`],content:`## Deep Codebase Understanding Pipeline
226
226
 
227
- Turn this codebase into a deeply understood, richly documented, and visually explorable project.
228
- "Understand Anything" philosophy: **graphs that teach > graphs that impress.**
227
+ 1. **Load the \`docs\` skill** contains full workflow for analysis, knowledge graph, and documentation generation
228
+ 2. **Load the \`c4-architecture\` skill** for architecture diagrams and interactive viewers
229
+ 3. **Check status** — \`status({ includePrelude: true })\` to verify onboard state
230
+ 4. **Scan codebase** — \`onboard({ path: ".", update: true })\` if stale, then parallel analyze calls
231
+ 5. **For docs > markdown docs**: Follow the docs skill's 4-phase workflow (Scan → Investigate → Populate → Validate)
232
+ 6. **For docs > interactive viewers**: Follow docs skill's generation-pipeline.md Phases 4c + 6 for C4/tour HTML generation
233
+ 7. **Present results** — Document index, architecture overview, concerns board
229
234
 
230
- This is NOT just documentation generationit is a full **analyzeunderstandlearndocumentpresent** pipeline.
231
-
232
- ### Phase 1: Deep Scan (parallel analysis)
233
-
234
- Run all analysis tools in parallel to build a comprehensive baseline:
235
-
236
- 1. **Onboard** — \`onboard({ path: "." })\` if not already done (check \`status()\` first)
237
- 2. **Structure** — \`analyze({ items: [{aspect: "structure", path: "."}] })\`
238
- 3. **Dependencies** — \`analyze({ items: [{aspect: "dependencies", path: "."}] })\`
239
- 4. **Symbols** — \`analyze({ items: [{aspect: "symbols", path: "."}] })\`
240
- 5. **Patterns** — \`analyze({ items: [{aspect: "patterns", path: "."}] })\`
241
- 6. **Entry Points** — \`analyze({ items: [{aspect: "entry_points", path: "."}] })\`
242
- 7. **Diagrams** — \`analyze({ items: [{aspect: "diagram", path: "."}] })\`
243
- 8. **Health Audit** — \`audit({ path: "." })\`
244
- 9. **Complexity** — \`measure({ path: "." })\`
245
- 10. **Git Context** — \`git_context({ include_diff: true })\`
246
- 11. **Dead Symbols** — \`dead_symbols({ path: "." })\`
247
-
248
- Stash all results for later phases.
249
-
250
- ### Phase 2: Knowledge Graph Construction
251
-
252
- Build a navigable knowledge graph of the codebase:
253
-
254
- 1. **Discover modules** — \`graph({ action: 'find_nodes' })\` to get all indexed modules
255
- 2. **Map relationships** — For key modules, \`graph({ action: 'neighbors', node_id, direction: 'both' })\`
256
- 3. **Trace critical paths** — Use \`trace({ items: [{start: "<entry-point>", direction: "forward"}] })\` on each entry point
257
- 4. **Identify layers** — Classify modules into architectural layers (API, Service, Domain, Data, Infrastructure, UI, Utility, Config)
258
- 5. **Detect communities** — \`graph({ action: 'detect_communities' })\` to find natural module clusters
259
- 6. **Symbol deep-dive** — For each public API/export, \`symbol({ items: [{name}] })\` to understand usage
260
-
261
- Persist the graph structure and layer classification.
262
-
263
- ### Phase 3: Multi-Agent Understanding (parallel dispatch)
264
-
265
- Dispatch Researcher agents **in parallel** to deeply understand different aspects:
266
-
267
- **Researcher-Alpha** — Architecture & Design Patterns:
268
- - What architectural style is used? (layered, hexagonal, microservice, monolith)
269
- - What design patterns appear? (repository, factory, strategy, observer, etc.)
270
- - How is data flow organized? (request lifecycle, event pipeline, etc.)
271
-
272
- **Researcher-Beta** — Business Logic & Domain:
273
- - What are the core business domains/bounded contexts?
274
- - What are the key business flows and processes?
275
- - What domain entities and value objects exist?
276
- - How is business logic separated from infrastructure?
277
-
278
- **Researcher-Gamma** — Integration & Infrastructure:
279
- - What external services, APIs, databases are used?
280
- - How is authentication/authorization handled?
281
- - What is the deployment topology?
282
- - What monitoring, logging, observability exists?
283
-
284
- **Researcher-Delta** — Quality & Concerns:
285
- - What is the test coverage strategy?
286
- - What tech debt or code smells exist?
287
- - What security concerns should be noted?
288
- - What performance bottlenecks are visible?
289
- - What are the highest-complexity files?
290
-
291
- ### Phase 4: Document Everything
292
-
293
- Load the \`docs\` skill and generate comprehensive documentation:
294
-
295
- 1. **Project Knowledge** (7 architecture docs):
296
- - \`docs/architecture/stack.md\` — Language, runtime, frameworks, all dependencies
297
- - \`docs/architecture/structure.md\` — Directory layout, entry points, key files
298
- - \`docs/architecture/design.md\` — Layers, patterns, data flow, component boundaries
299
- - \`docs/architecture/conventions.md\` — Naming, formatting, error handling, imports
300
- - \`docs/architecture/integrations.md\` — External APIs, databases, auth, monitoring
301
- - \`docs/architecture/testing.md\` — Test frameworks, file organization, mocking
302
- - \`docs/architecture/concerns.md\` — Tech debt, security risks, performance issues
303
-
304
- 2. **Component Docs** — For each major module/component:
305
- - \`docs/architecture/components/{name}.md\` — Purpose, API, design decisions, data flow
306
-
307
- 3. **Reference Docs**:
308
- - \`docs/reference/api.md\` — API surface, endpoints, schemas
309
- - \`docs/reference/configuration.md\` — Config options, environment variables
310
-
311
- 4. **Guides**:
312
- - \`docs/guides/onboarding.md\` — Guided tour for new developers (dependency-ordered walkthrough)
313
- - \`docs/guides/architecture-tour.md\` — Visual architecture walkthrough
314
-
315
- 5. **Project Overview**:
316
- - \`docs/README.md\` — Index linking all docs, project summary
317
-
318
- 6. **Persist Knowledge** — \`produce_knowledge({ path: "." })\` + \`knowledge({ action: "remember", ... })\` for key findings
319
-
320
- 7. **AGENTS.md** — Generate an agent-friendly project context file at the repo root:
321
- - Project overview, architecture style, key modules
322
- - Build/test/run commands
323
- - Coding conventions and patterns in use
324
- - Key entry points and data flows
325
- - Known concerns and tech debt
326
-
327
- > **Interactive HTML viewers** (C4 diagrams, code tour walkthroughs) are generated by the \`/aikit-docs-site\` command. Use it after this command to produce interactive explorable documentation.
328
-
329
- ### Phase 5: Interactive Presentation
330
-
331
- Present the understanding as a rich interactive dashboard using \`present\`:
332
-
333
- 1. **Architecture Overview** — Mermaid diagram of system layers and component relationships
334
- 2. **Dependency Graph** — Module dependency visualization
335
- 3. **Metrics Dashboard** — File count, complexity distribution, test coverage, health score
336
- 4. **Knowledge Map** — Key modules with descriptions, organized by architectural layer
337
- 5. **Guided Tour** — Recommended reading order for codebase onboarding
338
- 6. **Concerns Board** — Tech debt, dead code, security risks as a status board
339
- 7. **Business Domain Map** — Domain entities and their relationships
340
-
341
- Use the \`c4-architecture\` skill for generating proper C4 architecture diagrams (Context, Container, Component levels).
342
-
343
- ### Output Summary
344
-
345
- After all phases complete, present a final summary to the user:
346
- - Total files analyzed, modules discovered, patterns detected
347
- - Architecture style and key design decisions identified
348
- - Number of docs generated and their locations
349
- - Top concerns and recommendations
350
- - Links to the interactive dashboard
351
-
352
- ### Rules
353
-
354
- - **Every claim must be traceable** to source files or tool output
355
- - **Never infer or assume** — only document what is verifiable
356
- - **Mark unknowns** with \`[TODO]\` and intent-dependent decisions with \`[ASK USER]\`
357
- - **Delegate to specialists**: architecture diagrams → \`c4-architecture\` skill, ADRs → \`adr-skill\`
358
- - **Compress between phases** — use \`digest\` and \`stash\` to manage context
359
- - **🛑 STOP after Phase 5** — present results and ask user for feedback before any follow-up work`},"docs-site":{description:`Generate interactive HTML documentation — C4 architecture viewers and code tour walkthroughs with browser verification`,agent:`Orchestrator`,tools:[`onboard`,`analyze`,`produce_knowledge`,`graph`,`search`,`symbol`,`trace`,`file_summary`,`digest`,`knowledge`,`browser`,`present`,`check`,`git_context`,`measure`],content:`## Generate Interactive Documentation Viewers
360
-
361
- Create interactive HTML documentation using C4 architecture viewers and code tour walkthroughs.
362
-
363
- > **Prerequisite:** Run \`/aikit-docs\` first to generate the base markdown documentation and AGENTS.md.
364
-
365
- ### Phase 1: Analyze Project
366
-
367
- \`\`\`
368
- onboard({ path: "." }) # If not done (check status() first)
369
- analyze({ items: [{aspect: "structure", path: "."}] }) # Directory layout
370
- analyze({ items: [{aspect: "dependencies", path: "."}] }) # Module graph
371
- analyze({ items: [{aspect: "entry_points", path: "."}] }) # API surface
372
- analyze({ items: [{aspect: "diagram", path: "."}] }) # Architecture diagram data
373
- graph({ action: "find_nodes" }) # Module graph for C4 mapping
374
- graph({ action: "detect_communities" }) # Natural module clusters
375
- \`\`\`
376
-
377
- Stash results for use in subsequent phases.
378
-
379
- ### Phase 2: Generate C4 Architecture Data
380
-
381
- Create C4 JSON data files for each architectural level. Save to \`docs/architecture/interactive/\`.
382
-
383
- **Required schema — MUST match exactly:**
384
-
385
- \`\`\`json
386
- {
387
- "title": "Project Name - C4 Level",
388
- "description": "What this diagram shows",
389
- "layout": { "direction": "DOWN", "spacing": 80, "layerSpacing": 120 },
390
- "nodes": [
391
- {
392
- "id": "unique-string-id",
393
- "type": "person|system|container|component|database|queue|external",
394
- "label": "Display Name",
395
- "description": "What this element does",
396
- "technology": "Language/framework",
397
- "parentId": "optional-boundary-id"
398
- }
399
- ],
400
- "edges": [
401
- {
402
- "id": "unique-edge-id",
403
- "source": "source-node-id",
404
- "target": "target-node-id",
405
- "label": "Relationship description",
406
- "technology": "Protocol/transport"
407
- }
408
- ]
409
- }
410
- \`\`\`
411
-
412
- **C4 levels to generate:**
413
- 1. \`system-context.json\` — External actors + the system as a black box
414
- 2. \`containers.json\` — Major deployable units (services, databases, frontends)
415
- 3. \`{component-name}-components.json\` — Internal structure of key containers
416
-
417
- **Critical rules:**
418
- - Top-level keys are \`nodes\` and \`edges\` (NOT \`elements\`/\`relationships\`)
419
- - Every edge MUST have a unique \`id\` field (ELK crashes without it)
420
- - Node \`type\` MUST be one of: person, system, container, component, database, queue, external
421
- - \`layout.direction\` MUST be: DOWN, UP, LEFT, or RIGHT
422
- - \`parentId\` references must point to existing node IDs (or omit entirely)
423
-
424
- ### Phase 3: Generate Tour Data
425
-
426
- Create code tour JSON files. Save to \`docs/tours/interactive/\`.
427
-
428
- **Required schema — MUST match exactly:**
429
-
430
- \`\`\`json
431
- {
432
- "title": "Tour Title",
433
- "description": "What this tour teaches",
434
- "estimatedTime": "15 min",
435
- "steps": [
436
- {
437
- "stepNumber": 1,
438
- "id": "kebab-case-step-id",
439
- "title": "Step Title",
440
- "file": "relative/path/to/file.ts",
441
- "line": 42,
442
- "explanation": "What this code does and why it matters",
443
- "learnsConcept": "Concept name",
444
- "duration": "2 min",
445
- "notes": "Optional additional context"
446
- }
447
- ],
448
- "dependencies": [
449
- { "source": "step-id-1", "target": "step-id-2" }
450
- ]
451
- }
452
- \`\`\`
453
-
454
- **Tours to generate:**
455
- 1. \`architecture-overview.json\` — High-level system walkthrough (entry points → core logic → outputs)
456
- 2. \`onboarding.json\` — New developer guided tour (most important files in dependency order)
457
- 3. Additional tours for complex subsystems with >5 modules
458
-
459
- **Critical rules:**
460
- - Step content field is \`explanation\` (NOT \`description\`)
461
- - Every step needs \`id\` (kebab-case) and \`stepNumber\` (integer, 1-based)
462
- - \`learnsConcept\` is the concept tag (NOT \`highlights\`)
463
- - \`dependencies\` array uses step \`id\` values in \`{source, target}\` objects
464
- - Root MUST have \`title\`, \`description\`, \`estimatedTime\`
465
-
466
- ### Phase 4: Inject Data into HTML Templates
467
-
468
- Use PowerShell to inject JSON data into the viewer template HTML files.
469
-
470
- **Template locations:**
471
- - C4 viewer: \`C:\\Users\\AnVPX\\.copilot\\skills\\c4-architecture\\assets\\c4-viewer.html\` (tag: \`id="diagram-data"\`)
472
- - Tour viewer: \`C:\\Users\\AnVPX\\.copilot\\skills\\docs\\assets\\tour-viewer.html\` (tag: \`id="tour-data"\`)
473
-
474
- **Injection procedure (for EACH JSON file):**
475
-
476
- \`\`\`powershell
477
- $template = [System.IO.File]::ReadAllText("TEMPLATE_PATH")
478
- $startTag = '<script type="application/json" id="TARGET_ID">'
479
- $startIdx = $template.IndexOf($startTag)
480
- if ($startIdx -lt 0) { throw "Tag not found" }
481
- $contentStart = $startIdx + $startTag.Length
482
- $endIdx = $template.IndexOf('<\/script>', $contentStart)
483
-
484
- $before = $template.Substring(0, $contentStart)
485
- $after = $template.Substring($endIdx)
486
- $data = Get-Content "JSON_PATH" -Raw
487
-
488
- $output = $before + [char]10 + $data + [char]10 + $after
489
- [System.IO.File]::WriteAllText("OUTPUT_PATH", $output, [System.Text.Encoding]::UTF8)
490
- \`\`\`
491
-
492
- **Output file layout:**
493
- \`\`\`
494
- docs/
495
- architecture/interactive/
496
- system-context.json # Data
497
- system-context.html # Injected viewer (from c4-viewer.html)
498
- containers.json
499
- containers.html
500
- tours/interactive/
501
- architecture-overview.json # Data
502
- architecture-overview.html # Injected viewer (from tour-viewer.html)
503
- onboarding.json
504
- onboarding.html
505
- \`\`\`
506
-
507
- **Rules:**
508
- - JSON + HTML MUST be siblings in the same \`interactive/\` directory
509
- - NEVER use \`inject-viewer.mjs\` — use the PowerShell procedure above
510
- - Verify \`$startIdx -ge 0\` before proceeding
511
-
512
- ### Phase 5: Browser Verification (MANDATORY)
513
-
514
- **Every generated HTML file MUST be tested before presenting to user.**
515
-
516
- \`\`\`
517
- # 1. Serve the docs folder
518
- run_in_terminal("npx -y serve docs -l 4000 --no-clipboard", mode: "async")
519
-
520
- # 2. Open each viewer
521
- browser({ action: 'open', url: 'http://localhost:4000/architecture/interactive/system-context.html', mode: 'ui', waitUntil: 'networkidle' })
522
-
523
- # 3. Read accessibility snapshot
524
- browser({ action: 'read', pageId: '<id>', readMode: 'snapshot' })
525
-
526
- # 4. Verify content renders:
527
- # C4: nodes with labels, edges, Zoom In/Out/Fit buttons, Mini Map
528
- # Tour: step numbers + titles, Prev/Next buttons, explanation text, file paths
529
-
530
- # 5. If blank or errors → fix JSON schema → re-inject → re-test
531
-
532
- # 6. Clean up
533
- browser({ action: 'session', sessionAction: 'close', pageId: '<id>' })
534
- kill_terminal(<serve-terminal-id>)
535
- \`\`\`
536
-
537
- **Verification checklist:**
538
-
539
- | Viewer | Must see in snapshot | Failure indicator |
540
- |--------|---------------------|-------------------|
541
- | C4 | Node labels, edge groups, Zoom/Fit buttons, Mini Map | Empty page, "Error", no nodes |
542
- | Tour | Step numbers + titles, Prev/Next, explanation text | Blank panel, "undefined", no steps |
543
-
544
- ### Phase 6: Present Results
545
-
546
- After ALL viewers pass verification:
547
-
548
- 1. List all generated files (JSON + HTML) with descriptions
549
- 2. Provide the serve command: \`npx -y serve docs -l 4000 --no-clipboard\`
550
- 3. List all viewer URLs (e.g., \`http://localhost:4000/architecture/interactive/system-context.html\`)
551
- 4. Note any issues found during verification
552
-
553
- ### Critical Rules
554
-
555
- 1. **NEVER skip browser verification** — a valid JSON can still produce a broken viewer
556
- 2. **NEVER use \`file:///\` URLs** — CORS blocks ES modules; always serve via HTTP
557
- 3. **NEVER use \`inject-viewer.mjs\`** — use the PowerShell injection procedure
558
- 4. **NEVER use \`elements\`/\`relationships\`** — the ReactFlow viewer uses \`nodes\`/\`edges\`
559
- 5. **NEVER omit \`id\` on edges** — ELK layout throws null errors
560
- 6. **NEVER use \`description\` in tour steps** — template reads \`explanation\`
561
- 7. **ALWAYS use \`npx -y\`** — without \`-y\` the command hangs on install prompt
562
- 8. **ALWAYS include \`layout\` object in C4 JSON** — ELK crashes without direction/spacing
563
- 9. **ALWAYS verify \`$startIdx -ge 0\`** before injection — missing tag = wrong template
564
- 10. **All data must come from AI Kit analysis tools** — never fabricate architecture`}};export{e as PROMPTS};
235
+ **Already provided by skills:** Phase detail (scan tools, knowledge graph construction, multi-agent dispatch, 7-doc templates, quality checklists). Load the \`docs\` skill and follow its workflow.`},"docs-site":{description:`Generate interactive HTML documentation C4 architecture viewers and code tour walkthroughs with browser verification`,agent:`Orchestrator`,intent:`Generate interactive HTML documentation (C4 viewers + code tours)`,tools:[`onboard`,`analyze`,`produce_knowledge`,`graph`,`search`,`symbol`,`trace`,`file_summary`,`digest`,`knowledge`,`browser`,`present`,`check`,`git_context`,`measure`],content:"## Interactive Documentation Viewers\n\nGenerate C4 architecture viewers and code tour walkthroughs using maintained viewer assets.\n\n1. **Load the `c4-architecture` skill** C4 JSON schema, viewer injection script, ELK auto-layout\n2. **Load the `docs` skill** — tour JSON schema, viewer injection, line validation\n3. **For C4 diagrams**: Follow c4-architecture skill workflow generate JSON use `scripts/inject-viewer.mjs` to inject into `assets/c4-viewer.html`\n4. **For code tours**: Follow docs skill tour-generation.md generate tour JSON use `scripts/inject-viewer.mjs` to inject into tour viewer\n5. **Browser verification**: Open each HTML via `serve` + `browser` tool to verify rendering\n6. **Serve**: `npx -y serve docs -l 4000 --no-clipboard`\n\n**JSON schemas, viewer rules, injection scripts, and verification checklist are in the loaded skills** — never hardcode them in commands."}};export{e as PROMPTS};
@@ -1 +1 @@
1
- const e=`analyze.audit.blast_radius.changelog.check.checkpoint.codemod.config.data_transform.dead_symbols.delegate.describe_tool.diff_parse.digest.encode.env.eval.evidence_map.file_summary.find.flow.forge_classify.forge_ground.git_context.graph.guide.health.http.knowledge.lane.list_tools.lookup.measure.onboard.parse_output.present.process.produce_knowledge.queue.regex_test.reindex.rename.replay.restore.schema_validate.scope_map.search.search_tools.session_digest.signal.stash.status.symbol.test_run.time.trace.watch.web_fetch.web_search.workset`.split(`.`),t={orchestrator:[`memory`,`runCommand`,`switchAgent`,`newWorkspace`,`reviewPlan`,`killTerminal`,`createTask`,`terminal`,`terminalSel`,`lastCommand`,`problems`,`readFile`,`subagent`,`search`,`web`,`todo`,`searchSubagent`,`textSearch`,`browser`,`askQuestions`,`resolveMemoryFileUri`],researcher:[`terminal`,`problems`,`readFile`,`lastCommand`,`subagent`,`search`,`web`,`browser`],reviewer:[`terminal`,`problems`,`readFile`,`lastCommand`,`subagent`,`search`,`web`,`browser`],codeAgent:[`createTask`,`terminal`,`problems`,`readFile`,`lastCommand`,`subagent`,`createFile`,`editFiles`,`rename`,`createDirectory`,`search`,`todo`,`browser`],debugger:[`terminal`,`problems`,`readFile`,`terminalSel`,`lastCommand`,`subagent`,`createFile`,`editFiles`,`search`,`browser`],refactor:[`terminal`,`problems`,`readFile`,`lastCommand`,`subagent`,`createFile`,`editFiles`,`rename`,`createDirectory`,`search`,`browser`],explorer:[`problems`,`readFile`,`search`,`fileSearch`,`listDir`,`textSearch`,`browser`],planner:[`terminal`,`problems`,`readFile`,`reviewPlan`,`memory`,`askQuestions`,`resolveMemoryFileUri`,`lastCommand`,`subagent`,`createFile`,`editFiles`,`rename`,`createDirectory`,`search`,`web`,`todo`,`searchSubagent`,`browser`],security:[`terminal`,`problems`,`readFile`,`subagent`,`search`,`web`,`browser`],documenter:[`terminal`,`problems`,`readFile`,`lastCommand`,`subagent`,`createFile`,`editFiles`,`rename`,`createDirectory`,`search`,`web`,`browser`]},n={terminal:[`Bash`],problems:[`Read`],readFile:[`Read`],lastCommand:[`Bash`],subagent:[],createFile:[`Write`],editFiles:[`Edit`],rename:[`Write`],createDirectory:[`Write`],search:[`Read`],web:[`WebFetch`,`WebSearch`],todo:[`TodoRead`,`TodoWrite`],memory:[],runCommand:[`Bash`],switchAgent:[],newWorkspace:[`Bash`],reviewPlan:[],killTerminal:[`Bash`],createTask:[`Bash`],terminalSel:[`Bash`],fileSearch:[`Read`],listDir:[`Read`],textSearch:[`Read`],searchSubagent:[],browser:[],askQuestions:[],resolveMemoryFileUri:[]};export{e as AIKIT_TOOLS,n as CLAUDE_CODE_TOOL_MAP,t as IDE_CAPABILITIES};
1
+ const e=`analyze.audit.blast_radius.browser.changelog.check.checkpoint.codemod.config.data_transform.dead_symbols.delegate.describe_tool.diff_parse.digest.encode.env.eval.evidence_map.file_summary.find.flow.forge_classify.forge_ground.git_context.graph.guide.health.http.knowledge.lane.list_tools.lookup.measure.onboard.parse_output.present.process.produce_knowledge.queue.regex_test.reindex.rename.replay.restore.schema_validate.scope_map.search.search_tools.session_digest.signal.stash.status.symbol.test_run.time.trace.watch.web_fetch.web_search.workset`.split(`.`),t={orchestrator:[`memory`,`runCommand`,`switchAgent`,`newWorkspace`,`reviewPlan`,`killTerminal`,`createTask`,`terminal`,`terminalSel`,`lastCommand`,`problems`,`readFile`,`subagent`,`search`,`web`,`todo`,`searchSubagent`,`textSearch`,`browser`,`askQuestions`,`resolveMemoryFileUri`],researcher:[`terminal`,`problems`,`readFile`,`lastCommand`,`subagent`,`search`,`web`,`browser`],reviewer:[`terminal`,`problems`,`readFile`,`lastCommand`,`subagent`,`search`,`web`,`browser`],codeAgent:[`createTask`,`terminal`,`problems`,`readFile`,`lastCommand`,`subagent`,`createFile`,`editFiles`,`rename`,`createDirectory`,`search`,`todo`,`browser`],debugger:[`terminal`,`problems`,`readFile`,`terminalSel`,`lastCommand`,`subagent`,`createFile`,`editFiles`,`search`,`browser`],refactor:[`terminal`,`problems`,`readFile`,`lastCommand`,`subagent`,`createFile`,`editFiles`,`rename`,`createDirectory`,`search`,`browser`],explorer:[`problems`,`readFile`,`search`,`fileSearch`,`listDir`,`textSearch`,`browser`],planner:[`terminal`,`problems`,`readFile`,`reviewPlan`,`memory`,`askQuestions`,`resolveMemoryFileUri`,`lastCommand`,`subagent`,`createFile`,`editFiles`,`rename`,`createDirectory`,`search`,`web`,`todo`,`searchSubagent`,`browser`],security:[`terminal`,`problems`,`readFile`,`subagent`,`search`,`web`,`browser`],documenter:[`terminal`,`problems`,`readFile`,`lastCommand`,`subagent`,`createFile`,`editFiles`,`rename`,`createDirectory`,`search`,`web`,`browser`]},n={terminal:[`Bash`],problems:[`Read`],readFile:[`Read`],lastCommand:[`Bash`],subagent:[],createFile:[`Write`],editFiles:[`Edit`],rename:[`Write`],createDirectory:[`Write`],search:[`Read`],web:[`WebFetch`,`WebSearch`],todo:[`TodoRead`,`TodoWrite`],memory:[],runCommand:[`Bash`],switchAgent:[],newWorkspace:[`Bash`],reviewPlan:[],killTerminal:[`Bash`],createTask:[`Bash`],terminalSel:[`Bash`],fileSearch:[`Read`],listDir:[`Read`],textSearch:[`Read`],searchSubagent:[],browser:[],askQuestions:[],resolveMemoryFileUri:[]};export{e as AIKIT_TOOLS,n as CLAUDE_CODE_TOOL_MAP,t as IDE_CAPABILITIES};
@@ -0,0 +1,8 @@
1
+ import { defineConfig } from 'vitest/config';
2
+
3
+ export default defineConfig({
4
+ test: {
5
+ include: ['scaffold/__tests__/prompts-quality.test.mjs'],
6
+ exclude: ['**/node_modules/**'],
7
+ },
8
+ });
@@ -1,7 +0,0 @@
1
- import{c as e,l as t,n,o as r,r as i,t as a}from"./scaffold-BNPHP-QC.js";import{a as o,i as s,m as c,n as l,o as u,r as d,t as f}from"./templates-CztsaGb2.js";import{appendFileSync as p,existsSync as m,mkdirSync as h,readFileSync as g,unlinkSync as _,writeFileSync as v}from"node:fs";import{basename as y,resolve as b}from"node:path";import{homedir as x}from"node:os";import{AIKIT_PATHS as S,EMBEDDING_DEFAULTS as C,isUserInstalled as w}from"../../core/dist/index.js";function T(e){return m(b(e,`.cursor`))?`cursor`:m(b(e,`.claude`))?`claude-code`:m(b(e,`.windsurf`))?`windsurf`:m(b(e,`.zed`))?`zed`:m(b(e,`.idea`))?`intellij`:m(b(e,`.opencode`))?`opencode`:m(b(e,`AGENTS.md`))?`hermes`:`copilot`}function E(e){let t=[];return m(b(e,`.cursor`))&&t.push(`cursor`),(m(b(e,`.claude`))||m(b(e,`CLAUDE.md`)))&&t.push(`claude-code`),m(b(e,`.windsurf`))&&t.push(`windsurf`),m(b(e,`.zed`))&&t.push(`zed`),m(b(e,`.idea`))&&t.push(`intellij`),m(b(e,`.gemini`))&&t.push(`gemini-cli`),(m(b(e,`.codex`))||m(b(e,`codex.md`)))&&t.push(`codex-cli`),(m(b(e,`.opencode`))||m(b(e,`OPENCODE.md`)))&&t.push(`opencode`),t.push(`copilot`),t.push(`hermes`),[...new Set(t)]}function D(e){return{servers:{[e]:{...s}}}}function O(e){let{type:t,...n}=s;return{mcpServers:{[e]:n}}}function k(e){let{type:t,...n}=s;return{context_servers:{[e]:{...n}}}}function A(e){let{type:t,...n}=s;return{mcp:{[e]:{type:`local`,command:[n.command,...n.args]}}}}const j={scaffoldDir:`general`,writeMcpConfig(e,t){let n=b(e,`.vscode`),r=b(n,`mcp.json`);m(r)||(h(n,{recursive:!0}),v(r,`${JSON.stringify(D(t),null,2)}\n`,`utf-8`),console.log(` Created .vscode/mcp.json`))},writeInstructions(e,t){let n=b(e,`.github`),r=b(n,`copilot-instructions.md`);h(n,{recursive:!0}),v(r,l(y(e),t),`utf-8`),console.log(` Updated .github/copilot-instructions.md`)},writeAgentsMd(e,t){v(b(e,`AGENTS.md`),f(y(e),t),`utf-8`),console.log(` Updated AGENTS.md`)}};function M(e){let{type:t,...n}=s;return{mcpServers:{[e]:{command:n.command,args:[...n.args]}}}}const N=`Orchestrator`;function P(e){return{...M(e),agent:N}}function F(e,t){let n=t??b(x(),`.claude`),r=b(n,`settings.json`),i=M(e);if(!m(r)){h(n,{recursive:!0});let t=P(e);v(r,`${JSON.stringify(t,null,2)}\n`,`utf-8`),console.log(` Created ${r} — MCP server + default agent`);return}try{let e=JSON.parse(g(r,`utf-8`));e.mcpServers={...e.mcpServers||{},...i.mcpServers},e.agent=N,v(r,`${JSON.stringify(e,null,2)}\n`,`utf-8`),console.log(` Updated ${r} — MCP server + default agent`)}catch{console.warn(` ⚠ ${r} contains invalid JSON — skipping config merge`)}}const I={scaffoldDir:`general`,writeMcpConfig(e,t){F(t);let n=b(e,`.mcp.json`);m(n)||(v(n,`${JSON.stringify(O(t),null,2)}\n`,`utf-8`),console.log(` Created .mcp.json`))},writeInstructions(e,t){let n=b(e,`CLAUDE.md`),r=y(e);v(n,`${l(r,t)}\n---\n\n${f(r,t)}`,`utf-8`),console.log(` Updated CLAUDE.md`)},writeAgentsMd(e,t){}},L={scaffoldDir:`general`,writeMcpConfig(e,t){let n=b(e,`.cursor`),r=b(n,`mcp.json`);m(r)||(h(n,{recursive:!0}),v(r,`${JSON.stringify(O(t),null,2)}\n`,`utf-8`),console.log(` Created .cursor/mcp.json`))},writeInstructions(e,t){let n=b(e,`.cursor`,`rules`),r=b(n,`aikit.mdc`);h(n,{recursive:!0});let i=y(e);v(r,`${l(i,t)}\n---\n\n${f(i,t)}`,`utf-8`),console.log(` Updated .cursor/rules/aikit.mdc`);let a=b(n,`kb.mdc`);m(a)&&a!==r&&(_(a),console.log(` Removed legacy .cursor/rules/kb.mdc`))},writeAgentsMd(e,t){}},R={scaffoldDir:`general`,writeMcpConfig(e,t){let n=b(e,`.vscode`),r=b(n,`mcp.json`);m(r)||(h(n,{recursive:!0}),v(r,`${JSON.stringify(D(t),null,2)}\n`,`utf-8`),console.log(` Created .vscode/mcp.json (Windsurf-compatible)`))},writeInstructions(e,t){let n=b(e,`.windsurfrules`),r=y(e);v(n,`${l(r,t)}\n---\n\n${f(r,t)}`,`utf-8`),console.log(` Updated .windsurfrules`)},writeAgentsMd(e,t){}},z={scaffoldDir:`general`,writeMcpConfig(e,t){let n=b(e,`.zed`),r=b(n,`settings.json`);if(h(n,{recursive:!0}),!m(r))v(r,`${JSON.stringify(k(t),null,2)}\n`,`utf-8`),console.log(` Created .zed/settings.json`);else{let e;try{e=JSON.parse(g(r,`utf-8`))}catch{console.warn(` ⚠ .zed/settings.json contains invalid JSON — skipping MCP config merge`);return}e.context_servers?.[t]||(e.context_servers={...e.context_servers,...k(t).context_servers},v(r,`${JSON.stringify(e,null,2)}\n`,`utf-8`),console.log(` Updated .zed/settings.json with context_servers`))}},writeInstructions(e,t){let n=b(e,`.rules`),r=y(e);v(n,`${l(r,t)}\n---\n\n${f(r,t)}`,`utf-8`),console.log(` Updated .rules`)},writeAgentsMd(e,t){}},B={scaffoldDir:`general`,writeMcpConfig(e,t){let n=b(e,`mcp.json`);m(n)||(v(n,`${JSON.stringify(O(t),null,2)}\n`,`utf-8`),console.log(` Created mcp.json`))},writeInstructions(e,t){let n=b(e,`.aiassistant`,`rules`),r=b(n,`aikit.md`);h(n,{recursive:!0});let i=y(e);v(r,`${l(i,t)}\n---\n\n${f(i,t)}`,`utf-8`),console.log(` Updated .aiassistant/rules/aikit.md`)},writeAgentsMd(e,t){}},V={scaffoldDir:`general`,writeMcpConfig(e,t){let n=b(e,`.opencode`),r=b(n,`opencode.json`);m(r)||(h(n,{recursive:!0}),v(r,`${JSON.stringify(A(t),null,2)}\n`,`utf-8`),console.log(` Created .opencode/opencode.json`))},writeInstructions(e,t){let n=b(e,`OPENCODE.md`),r=y(e);v(n,`${l(r,t)}\n---\n\n${f(r,t)}`,`utf-8`),console.log(` Updated OPENCODE.md`)},writeAgentsMd(e,t){}},H={scaffoldDir:`general`,writeMcpConfig(e,t){},writeInstructions(e,t){let n=b(e,`AGENTS.md`),r=y(e);v(n,`${l(r,t)}\n---\n\n${f(r,t)}`,`utf-8`),console.log(` Updated AGENTS.md (Hermes)`)},writeAgentsMd(e,t){}};function U(e){switch(e){case`copilot`:return j;case`claude-code`:return I;case`cursor`:return L;case`windsurf`:return R;case`zed`:return z;case`intellij`:return B;case`opencode`:return V;case`hermes`:return H;case`gemini-cli`:case`codex-cli`:return j}}const W={serverName:o,sources:[{path:`.`,excludePatterns:[`**/node_modules/**`,`**/dist/**`,`**/build/**`,`**/.git/**`,`**/${S.data}/**`,`**/coverage/**`,`**/*.min.js`,`**/package-lock.json`,`**/pnpm-lock.yaml`]}],indexing:{chunkSize:1500,chunkOverlap:200,minChunkSize:100},embedding:{model:C.model,dimensions:C.dimensions},store:{backend:`sqlite-vec`,path:S.data},curated:{path:S.aiCurated}};function G(e,t){let n=b(e,`aikit.config.json`);return m(n)&&!t?(console.log(`aikit.config.json already exists. Use --force to overwrite.`),!1):(v(n,`${JSON.stringify(W,null,2)}\n`,`utf-8`),console.log(` Created aikit.config.json`),!0)}function K(e){let t=b(e,`.gitignore`),n=[{dir:`.flows/`,label:`AI Kit flow runs`}];if(m(t)){let e=g(t,`utf-8`),r=n.filter(t=>!e.includes(t.dir));r.length>0&&(p(t,`\n${r.map(e=>`# ${e.label}\n${e.dir}`).join(`
2
- `)}\n`,`utf-8`),console.log(` Added ${r.map(e=>e.dir).join(`, `)} to .gitignore`))}else v(t,`${n.map(e=>`# ${e.label}\n${e.dir}`).join(`
3
- `)}\n`,`utf-8`),console.log(` Created .gitignore with AI Kit entries`)}function q(){return W.serverName}const J=[`decisions`,`patterns`,`conventions`,`troubleshooting`];function Y(e){let t=b(e,`.ai`,`curated`);m(t)||(h(t,{recursive:!0}),console.log(` Created .ai/curated/`));for(let e of J){let n=b(t,e);m(n)||h(n,{recursive:!0})}console.log(` Created .ai/curated/{${J.join(`,`)}}/`)}function X(e){switch(e){case`zed`:return`zed`;case`intellij`:return`intellij`;case`claude-code`:return`claude-code`;case`gemini-cli`:return`gemini`;case`codex-cli`:return`codex`;case`opencode`:return`opencode`;case`hermes`:return`hermes`;default:return`copilot`}}async function Z(n){let i=process.cwd();if(!G(i,n.force))return;K(i);let a=q(),o=U(T(i));o.writeMcpConfig(i,a),o.writeInstructions(i,a),o.writeAgentsMd(i,a);let s=c(),l=JSON.parse(g(b(s,`package.json`),`utf-8`)).version;await t(i,s,[...u],l,n.force),await r(i,s,[...d],l,n.force);let f=E(i),p=new Set;for(let t of f){let r=X(t);p.has(r)||(p.add(r),await e(i,s,r,l,n.force))}Y(i),console.log(`
4
- AI Kit initialized! Next steps:`),console.log(` aikit reindex Index your codebase`),console.log(` aikit search Search indexed content`),console.log(` aikit serve Start MCP server for IDE integration`),w()&&console.log(`
5
- Note: User-level AI Kit is also installed. This workspace uses its own local data store.`)}async function Q(e){w()?await $(e):await Z(e)}async function $(t){let n=process.cwd(),i=q(),a=U(T(n));a.writeInstructions(n,i),a.writeAgentsMd(n,i);let o=c(),s=JSON.parse(g(b(o,`package.json`),`utf-8`)).version,l=E(n),u=new Set;for(let r of l){let i=X(r);u.has(i)||(u.add(i),await e(n,o,i,s,t.force))}await r(n,o,[...d],s,t.force),Y(n),K(n),console.log(`
6
- Workspace scaffolded for user-level AI Kit! Files added:`),console.log(` Instruction files (AGENTS.md, copilot-instructions.md, etc.)`),console.log(` .ai/curated/ directories`),console.log(` .github/agents/ & .github/prompts/`),console.log(`
7
- The user-level AI Kit server will auto-index this workspace when opened in your IDE.`)}async function ee(){let e=process.cwd(),t=E(e),r=c(),o=[...await i(e,r,[...u])],s=new Set;for(let i of t){let t=X(i);s.has(t)||(s.add(t),o.push(...await n(e,r,t)))}o.push(...await a(e,r,[...d]));let l={summary:{total:o.length,new:o.filter(e=>e.status===`new`).length,outdated:o.filter(e=>e.status===`outdated`).length,current:o.filter(e=>e.status===`current`).length},files:o};console.log(JSON.stringify(l,null,2))}export{ee as guideProject,Z as initProject,$ as initScaffoldOnly,Q as initSmart};