@gcunharodrigues/wrxn 0.1.0

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 (102) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +38 -0
  3. package/bin/wrxn.cjs +342 -0
  4. package/lib/connect.cjs +216 -0
  5. package/lib/executor.cjs +238 -0
  6. package/lib/install.cjs +105 -0
  7. package/lib/manifest.cjs +67 -0
  8. package/lib/migrate.cjs +93 -0
  9. package/lib/onboard.cjs +84 -0
  10. package/lib/semver.cjs +14 -0
  11. package/lib/update.cjs +91 -0
  12. package/lib/worktree.cjs +217 -0
  13. package/manifest.json +451 -0
  14. package/migrations/README.md +21 -0
  15. package/package.json +23 -0
  16. package/payload/.claude/constitution.local.md +13 -0
  17. package/payload/.claude/constitution.md +28 -0
  18. package/payload/.claude/hooks/code-intel-push.cjs +108 -0
  19. package/payload/.claude/hooks/enforce-managed-guard.cjs +68 -0
  20. package/payload/.claude/hooks/enforce-managed-precommit.cjs +74 -0
  21. package/payload/.claude/hooks/enforce-push-authority.cjs +51 -0
  22. package/payload/.claude/hooks/enforce-review-marker.cjs +62 -0
  23. package/payload/.claude/hooks/enforce-tests-on-push.cjs +40 -0
  24. package/payload/.claude/hooks/recall-surface.cjs +127 -0
  25. package/payload/.claude/hooks/reference-detect.cjs +83 -0
  26. package/payload/.claude/hooks/session-end.cjs +132 -0
  27. package/payload/.claude/hooks/session-history.cjs +76 -0
  28. package/payload/.claude/hooks/session-start.cjs +117 -0
  29. package/payload/.claude/hooks/synapse-engine.cjs +351 -0
  30. package/payload/.claude/hooks/wiki-lint.cjs +104 -0
  31. package/payload/.claude/settings.json +60 -0
  32. package/payload/.claude/skills/audit/SKILL.md +23 -0
  33. package/payload/.claude/skills/diagnose/SKILL.md +117 -0
  34. package/payload/.claude/skills/diagnose/scripts/hitl-loop.template.sh +41 -0
  35. package/payload/.claude/skills/grill-me/SKILL.md +10 -0
  36. package/payload/.claude/skills/grill-with-docs/ADR-FORMAT.md +47 -0
  37. package/payload/.claude/skills/grill-with-docs/CONTEXT-FORMAT.md +60 -0
  38. package/payload/.claude/skills/grill-with-docs/SKILL.md +88 -0
  39. package/payload/.claude/skills/handoff/SKILL.md +19 -0
  40. package/payload/.claude/skills/improve-codebase-architecture/DEEPENING.md +37 -0
  41. package/payload/.claude/skills/improve-codebase-architecture/HTML-REPORT.md +123 -0
  42. package/payload/.claude/skills/improve-codebase-architecture/INTERFACE-DESIGN.md +44 -0
  43. package/payload/.claude/skills/improve-codebase-architecture/LANGUAGE.md +53 -0
  44. package/payload/.claude/skills/improve-codebase-architecture/SKILL.md +81 -0
  45. package/payload/.claude/skills/level-up/SKILL.md +28 -0
  46. package/payload/.claude/skills/memory/SKILL.md +79 -0
  47. package/payload/.claude/skills/onboard/SKILL.md +43 -0
  48. package/payload/.claude/skills/prototype/LOGIC.md +79 -0
  49. package/payload/.claude/skills/prototype/SKILL.md +30 -0
  50. package/payload/.claude/skills/prototype/UI.md +112 -0
  51. package/payload/.claude/skills/qa-walk/SKILL.md +227 -0
  52. package/payload/.claude/skills/qa-walk/references/cli-mode.md +28 -0
  53. package/payload/.claude/skills/qa-walk/references/finding-issue-template.md +48 -0
  54. package/payload/.claude/skills/qa-walk/references/walk-report-template.md +56 -0
  55. package/payload/.claude/skills/qa-walk/references/web-mode.md +112 -0
  56. package/payload/.claude/skills/setup-matt-pocock-skills/SKILL.md +121 -0
  57. package/payload/.claude/skills/setup-matt-pocock-skills/domain.md +51 -0
  58. package/payload/.claude/skills/setup-matt-pocock-skills/issue-tracker-github.md +22 -0
  59. package/payload/.claude/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +23 -0
  60. package/payload/.claude/skills/setup-matt-pocock-skills/issue-tracker-local.md +19 -0
  61. package/payload/.claude/skills/setup-matt-pocock-skills/triage-labels.md +15 -0
  62. package/payload/.claude/skills/skill-creator/LICENSE.txt +202 -0
  63. package/payload/.claude/skills/skill-creator/SKILL.md +209 -0
  64. package/payload/.claude/skills/skill-creator/scripts/init_skill.py +303 -0
  65. package/payload/.claude/skills/skill-creator/scripts/package_skill.py +110 -0
  66. package/payload/.claude/skills/skill-creator/scripts/quick_validate.py +65 -0
  67. package/payload/.claude/skills/synapse/SKILL.md +132 -0
  68. package/payload/.claude/skills/synapse/assets/README.md +50 -0
  69. package/payload/.claude/skills/synapse/references/brackets.md +100 -0
  70. package/payload/.claude/skills/synapse/references/commands.md +118 -0
  71. package/payload/.claude/skills/synapse/references/domains.md +126 -0
  72. package/payload/.claude/skills/synapse/references/layers.md +186 -0
  73. package/payload/.claude/skills/synapse/references/manifest.md +142 -0
  74. package/payload/.claude/skills/tdd/SKILL.md +22 -0
  75. package/payload/.claude/skills/tech-search/SKILL.md +431 -0
  76. package/payload/.claude/skills/tech-search/prompts/page-extract.md +133 -0
  77. package/payload/.claude/skills/to-issues/SKILL.md +83 -0
  78. package/payload/.claude/skills/to-prd/SKILL.md +74 -0
  79. package/payload/.claude/skills/triage/AGENT-BRIEF.md +168 -0
  80. package/payload/.claude/skills/triage/OUT-OF-SCOPE.md +101 -0
  81. package/payload/.claude/skills/triage/SKILL.md +103 -0
  82. package/payload/.claude/skills/write-a-skill/SKILL.md +117 -0
  83. package/payload/.recon.json +3 -0
  84. package/payload/.synapse/global +6 -0
  85. package/payload/.synapse/manifest +38 -0
  86. package/payload/.synapse/pipeline +6 -0
  87. package/payload/.synapse/routing +8 -0
  88. package/payload/.wrxn/continuity/.gitkeep +0 -0
  89. package/payload/.wrxn/history/.gitkeep +0 -0
  90. package/payload/.wrxn/wiki/.gitkeep +0 -0
  91. package/payload/.wrxn/wiki/concepts/.gitkeep +0 -0
  92. package/payload/.wrxn/wiki/decisions/.gitkeep +0 -0
  93. package/payload/.wrxn/wiki/gotchas/.gitkeep +0 -0
  94. package/payload/.wrxn/wiki/sessions/.gitkeep +0 -0
  95. package/payload/.wrxn/wiki.cjs +164 -0
  96. package/payload/aios-intake.md +32 -0
  97. package/payload/connections.md +15 -0
  98. package/payload/decisions/log.md +18 -0
  99. package/payload/docs/agents/domain.md +38 -0
  100. package/payload/docs/agents/issue-tracker.md +25 -0
  101. package/payload/docs/agents/triage-labels.md +15 -0
  102. package/payload/docs/workspace/operator-layer.md +14 -0
@@ -0,0 +1,431 @@
1
+ ---
2
+ name: tech-search
3
+ description: |
4
+ Self-contained deep tech research. WebSearch + WebFetch + Haiku workers.
5
+ Pipeline: Query > Decompose > Parallel Search (Haiku) > Evaluate > Synthesize > Document.
6
+ Zero external dependencies. MCPs optional.
7
+ Salva em docs/research/{YYYY-MM-DD}-{slug}/.
8
+ ---
9
+
10
+ # Tech Search
11
+
12
+ Self-contained deep research pipeline. Zero external dependencies.
13
+
14
+ ## Quick Start
15
+
16
+ ```
17
+ /tech-search "React Server Components vs Client Components"
18
+ ```
19
+
20
+ ## Activation
21
+
22
+ 1. Parse query from `$ARGUMENTS` (or ask if not provided)
23
+ 2. Execute 6-phase workflow
24
+ 3. Save to `docs/research/{YYYY-MM-DD}-{slug}/`
25
+
26
+ **CRITICAL:**
27
+ - NEVER implement code. Redirect to @pm or @dev.
28
+ - NEVER write files outside `docs/research/`.
29
+
30
+ ---
31
+
32
+ ## SKILL DEFINITION
33
+
34
+ ```yaml
35
+ skill:
36
+ name: Tech Search
37
+ id: tech-search
38
+
39
+ veto_conditions:
40
+ - id: VETO_NO_RESULTS
41
+ trigger: "ALL search waves return 0 results"
42
+ action: "STOP + Report: 'No results found. Reformulate query or check connectivity.'"
43
+
44
+ - id: VETO_IMPLEMENTATION_REQUEST
45
+ trigger: "User asks to implement, code, create agent/skill, or deploy"
46
+ action: "REDIRECT: 'Implementation is not my scope. Use @pm for prioritization or @dev for execution.'"
47
+ keywords:
48
+ - "implementa"
49
+ - "cria o agent"
50
+ - "cria a skill"
51
+ - "faz o codigo"
52
+ - "escreve o codigo"
53
+ - "desenvolve"
54
+ - "deploy"
55
+ - "implement"
56
+ - "build this"
57
+ - "code this"
58
+
59
+ - id: VETO_FORBIDDEN_PATH
60
+ trigger: "Attempt to write outside docs/research/"
61
+ action: "BLOCK + Error: 'Writing outside docs/research/ is forbidden.'"
62
+
63
+ constraints:
64
+ forbidden_actions:
65
+ - NEVER implement code, agents, skills, or production artifacts
66
+ - NEVER create files outside docs/research/
67
+ - NEVER write to .claude/agents/, .claude/skills/, squads/, app/, lib/
68
+
69
+ tool_hierarchy:
70
+ search:
71
+ 1_preferred: "Exa MCP (mcp__exa__web_search_exa) - if available"
72
+ 2_fallback: "WebSearch (always available)"
73
+ detection: "Try Exa first. If 401/429/503, set exa_available=false, use WebSearch."
74
+
75
+ docs:
76
+ 1_preferred: "Context7 MCP (mcp__context7__resolve-library-id + query-docs) - if available"
77
+ 2_fallback: "WebSearch with 'site:{library}.dev docs' or 'site:{library}.io docs'"
78
+ detection: "Try Context7 first. If fails, set context7_available=false."
79
+
80
+ deep_read:
81
+ only: "WebFetch with prompts/page-extract.md prompt"
82
+ note: "No ETL, no Bash, no external scripts. Pure WebFetch."
83
+
84
+ workers:
85
+ type: "general-purpose"
86
+ model: "haiku"
87
+ max_parallel: 5
88
+ max_deep_reads_per_worker: 3
89
+
90
+ workflow:
91
+ phases:
92
+
93
+ # ──────────────────────────────────────────────
94
+ # PHASE 1: AUTO-CLARIFY
95
+ # ──────────────────────────────────────────────
96
+ 1_auto_clarify:
97
+ name: "Auto-Clarification"
98
+ model_tier: "MAIN MODEL (inline)"
99
+ description: |
100
+ Pattern matching + technology detection on the user query.
101
+ Determines if clarification is needed or can be skipped.
102
+
103
+ execution: |
104
+ 1. Read user query (original text, unmodified)
105
+
106
+ 2. PATTERN MATCHING (case-insensitive):
107
+ - Technical keywords: "code", "implement", "how to", "api", "bug",
108
+ "error", "debug", "library", "sdk", "tutorial", "example"
109
+ → inferred_context.focus = "technical"
110
+ - Comparison keywords: "compare", "vs", "versus", "difference",
111
+ "better", "alternative", "tradeoff", "pros and cons"
112
+ → inferred_context.focus = "comparison"
113
+ - Recency keywords: "latest", "new", "2024", "2025", "2026",
114
+ "recent", "state of the art", "trending"
115
+ → inferred_context.temporal = "recent"
116
+ → Append current year to search queries
117
+
118
+ 3. TECHNOLOGY DETECTION (case-insensitive):
119
+ Scan for known technologies:
120
+ - Languages: JavaScript/JS, TypeScript/TS, Python, Java, Go, Rust, C#, Ruby, PHP
121
+ - Frameworks: React, Next.js, Vue, Angular, Svelte, Express, FastAPI, Django, Flask
122
+ - Databases: PostgreSQL, MySQL, MongoDB, Redis, Supabase, Firebase, Elasticsearch
123
+ - AI/ML: LLM, RAG, LangChain, OpenAI, Claude, Anthropic, TensorFlow, PyTorch
124
+ - Infra: Docker, Kubernetes, AWS, Vercel, GraphQL, REST, WebSocket
125
+ → Collect into inferred_context.domain = [list]
126
+
127
+ 4. DECISION:
128
+ - IF any pattern OR technology detected → skip clarification
129
+ - IF nothing detected → ask ONE question:
130
+ "Your query seems broad. What is the focus and technical context?"
131
+
132
+ output: "inferred_context object {focus, temporal, domain, skip_clarification}"
133
+
134
+ # ──────────────────────────────────────────────
135
+ # PHASE 2: DECOMPOSE
136
+ # ──────────────────────────────────────────────
137
+ 2_decompose:
138
+ name: "Query Decomposition"
139
+ model_tier: "MAIN MODEL"
140
+ description: |
141
+ Decomposes user query into 5-7 atomic, directly searchable sub-queries.
142
+ Uses extended thinking for deeper analysis.
143
+
144
+ execution: |
145
+ ultrathink
146
+
147
+ 1. DEEP ANALYSIS (use extended thinking):
148
+ - What are the REAL questions behind this query?
149
+ - What would a domain expert want to know?
150
+ - What gaps might standard searches miss?
151
+ - What assumptions should be tested?
152
+
153
+ 2. GENERATE 5-7 sub-queries that:
154
+ - Cover ORTHOGONAL angles (not overlapping)
155
+ - Include at least one "devil's advocate" query
156
+ - Include at least one "expert-level" query
157
+ - Are directly searchable (not abstract)
158
+
159
+ 3. INCORPORATE inferred_context:
160
+ - If focus=comparison → ensure queries cover both/all sides
161
+ - If temporal=recent → add year constraints
162
+ - If domain detected → scope queries to those technologies
163
+
164
+ 4. OUTPUT format:
165
+ {
166
+ "main_topic": "string",
167
+ "sub_queries": ["query1", "query2", ...],
168
+ "search_strategy": "parallel"
169
+ }
170
+
171
+ output: "decomposition_result JSON"
172
+
173
+ # ──────────────────────────────────────────────
174
+ # PHASE 3: PARALLEL SEARCH (Haiku Workers)
175
+ # ──────────────────────────────────────────────
176
+ 3_parallel_search:
177
+ name: "Parallel Search via Haiku Workers"
178
+ model_tier: "HAIKU (via Task tool, general-purpose agent)"
179
+ description: |
180
+ Dispatches sub-queries as parallel Haiku workers.
181
+ Each worker: WebSearch → select top URLs → WebFetch on best → return JSON.
182
+ Max 5 workers in parallel. No external dependencies.
183
+
184
+ execution: |
185
+ 1. PRE-CHECK MCP AVAILABILITY (main model, before dispatch):
186
+ - Try Context7: mcp__context7__resolve-library-id for detected library
187
+ → If fails: context7_available = false
188
+ - Try Exa: mcp__exa__web_search_exa("test", 1)
189
+ → If 401/429/503: exa_available = false
190
+
191
+ 2. DISPATCH WORKERS:
192
+ For EACH sub-query, create a Task call:
193
+
194
+ Task(
195
+ subagent_type: "general-purpose",
196
+ model: "haiku",
197
+ prompt: <WORKER_PROMPT>
198
+ )
199
+
200
+ Dispatch ALL Task calls in a SINGLE message for parallel execution.
201
+ Max 5 workers.
202
+
203
+ WORKER PROMPT TEMPLATE:
204
+ ```
205
+ You are a research worker. Search and extract information for ONE specific query.
206
+
207
+ QUERY: {sub_query}
208
+ CONTEXT: {inferred_context_json}
209
+ MCP AVAILABILITY: exa={exa_available}, context7={context7_available}
210
+
211
+ INSTRUCTIONS:
212
+ 1. Search using the best available tool:
213
+ - If context7 available AND query is about a specific library:
214
+ → Use mcp__context7__resolve-library-id then mcp__context7__query-docs
215
+ - If exa available:
216
+ → Use mcp__exa__web_search_exa(query, numResults=5)
217
+ - Else:
218
+ → Use WebSearch(query)
219
+
220
+ 2. From search results, select top 2-3 most relevant URLs
221
+
222
+ 3. Deep-read top 1-3 results using WebFetch:
223
+ - For each URL, use WebFetch with this prompt:
224
+ "Extract technical information relevant to: {sub_query}
225
+ Focus on: specific facts/numbers/benchmarks, code examples (preserve exactly),
226
+ best practices and warnings, expert recommendations.
227
+ Skip: navigation, ads, generic intros.
228
+ Format as structured markdown with Key Findings, Code/Examples,
229
+ Expert Quotes, and Actionable Insights sections."
230
+
231
+ 4. Return results as JSON (no other text):
232
+ {
233
+ "sub_query": "the original sub-query",
234
+ "sources": [
235
+ {"url": "...", "title": "...", "snippet": "first 200 chars...",
236
+ "credibility": "HIGH|MEDIUM|LOW", "tool_used": "WebSearch|Exa|Context7"}
237
+ ],
238
+ "key_findings": ["finding1 with specific data", "finding2", ...],
239
+ "code_examples": ["```lang\ncode\n```", ...],
240
+ "expert_quotes": ["quote — author", ...]
241
+ }
242
+
243
+ IMPORTANT:
244
+ - Do NOT synthesize or write reports. Just search and return raw findings.
245
+ - Be HONEST about credibility (LOW if source is generic/outdated).
246
+ - Preserve code examples EXACTLY as found.
247
+ - Max 3 deep reads per worker.
248
+ ```
249
+
250
+ 3. AGGREGATE RESULTS (main model):
251
+ - Collect all worker responses
252
+ - Parse JSON from each Task result
253
+ - Deduplicate by URL (keep highest credibility)
254
+ - Build unified results with tool attribution
255
+
256
+ 4. HANDLE FAILURES:
257
+ - For failed workers (no response or invalid JSON):
258
+ → Log warning, execute that sub-query directly in main context
259
+ - RULE: at least 1 successful result to proceed
260
+
261
+ output: |
262
+ {
263
+ "search_results": [...],
264
+ "tools_used": {"exa": N, "context7": N, "websearch": N, "webfetch": N},
265
+ "worker_stats": {"dispatched": N, "succeeded": N, "failed": N}
266
+ }
267
+
268
+ # ──────────────────────────────────────────────
269
+ # PHASE 4: EVALUATE COVERAGE
270
+ # ──────────────────────────────────────────────
271
+ 4_evaluate_coverage:
272
+ name: "Coverage Evaluation"
273
+ model_tier: "HAIKU (via Task tool)"
274
+ description: |
275
+ Evaluates if research is complete. Decides CONTINUE or STOP.
276
+ Max 2 waves total (simpler than tech-research's 3 waves).
277
+
278
+ execution: |
279
+ Wrap in Task(model: "haiku"):
280
+
281
+ 1. Calculate metrics:
282
+ - coverage_score (0-100): How well do findings answer the original query?
283
+ - source_quality: Count HIGH/MEDIUM/LOW credibility sources
284
+ - new_info_ratio: Estimate unique facts vs total
285
+
286
+ 2. STOPPING RULES:
287
+ HARD STOPS (always stop):
288
+ - wave >= 2 → "Max iterations reached"
289
+ - coverage_score >= 80 AND high_credibility >= 3 → "Sufficient coverage"
290
+
291
+ SOFT STOP:
292
+ - coverage_score >= 65 AND wave >= 1 → "Acceptable coverage"
293
+
294
+ MUST CONTINUE:
295
+ - coverage_score < 50 AND wave == 1 → "Insufficient first wave"
296
+
297
+ 3. IF CONTINUE:
298
+ - Generate 2-3 targeted gap-filling queries
299
+ - Return to Phase 3 (search again with new queries)
300
+
301
+ 4. IF STOP:
302
+ - Document final score and remaining gaps
303
+
304
+ output: |
305
+ {
306
+ "decision": "CONTINUE|STOP",
307
+ "coverage_score": 0-100,
308
+ "stop_reason": "reason",
309
+ "gaps": [...],
310
+ "next_queries": [...] (if CONTINUE)
311
+ }
312
+
313
+ # ──────────────────────────────────────────────
314
+ # PHASE 5: SYNTHESIZE
315
+ # ──────────────────────────────────────────────
316
+ 5_synthesize:
317
+ name: "Synthesize"
318
+ model_tier: "MAIN MODEL"
319
+ description: |
320
+ Consolidates all findings into a comprehensive research report.
321
+ Produces DOCUMENTATION ONLY, never production code.
322
+
323
+ execution: |
324
+ 1. Review all aggregated search results and findings
325
+ 2. Identify patterns, consensus, and contradictions across sources
326
+ 3. Rank techniques/solutions by evidence strength
327
+ 4. Generate:
328
+ - Executive summary (TL;DR)
329
+ - Detailed findings organized by theme
330
+ - Code examples for REFERENCE only (not production)
331
+ - Decision matrix: when to use what
332
+ - Practical next steps recommending @pm or @dev
333
+ 5. ALWAYS end with "Next Steps" section redirecting to implementation agents
334
+
335
+ output: "Synthesized report content"
336
+
337
+ # ──────────────────────────────────────────────
338
+ # PHASE 6: DOCUMENT
339
+ # ──────────────────────────────────────────────
340
+ 6_document:
341
+ name: "Document"
342
+ model_tier: "MAIN MODEL"
343
+ description: "Save complete research to docs/research/"
344
+ structure:
345
+ folder: "docs/research/{YYYY-MM-DD}-{slug}/"
346
+ files:
347
+ - name: "README.md"
348
+ content: "Index + TL;DR"
349
+ - name: "00-query-original.md"
350
+ content: "Original question + inferred context"
351
+ - name: "01-deep-research-prompt.md"
352
+ content: "Generated structured prompt with sub-queries"
353
+ - name: "02-research-report.md"
354
+ content: "Complete research findings"
355
+ - name: "03-recommendations.md"
356
+ content: "Recommendations and next steps (NO production code)"
357
+
358
+ security:
359
+ - Never include API keys or secrets in research docs
360
+ - Sanitize sensitive paths before saving
361
+ - Validate URLs before fetching
362
+ - NEVER write files outside docs/research/
363
+ - NEVER create agents, skills, or production code
364
+
365
+ scope_boundaries:
366
+ allowed_paths:
367
+ - "docs/research/**"
368
+ forbidden_paths:
369
+ - ".claude/agents/"
370
+ - ".claude/skills/"
371
+ - "squads/"
372
+ - "app/"
373
+ - "lib/"
374
+ - "src/"
375
+ - "*.ts"
376
+ - "*.tsx"
377
+ - "*.js"
378
+ - "*.py"
379
+ exception: "Code examples within docs/research/ markdown are allowed for DOCUMENTATION only"
380
+ ```
381
+
382
+ ---
383
+
384
+ ## Execution Flow
385
+
386
+ ```
387
+ Query → Auto-Clarify → Decompose (ultrathink, MAIN MODEL)
388
+ |
389
+ [Sub-query 1] [Sub-query 2] ... [Sub-query 5]
390
+ | | |
391
+ [Haiku GP] [Haiku GP] [Haiku GP]
392
+ (search+read) (search+read) (search+read)
393
+ | | |
394
+ +------+-------+-------+-----------+
395
+ |
396
+ Aggregate (MAIN MODEL)
397
+ |
398
+ Evaluate Coverage (HAIKU)
399
+ |
400
+ (coverage OK?) ── NO ──→ [Wave 2, max 2 total]
401
+ | YES
402
+ |
403
+ Synthesize (MAIN MODEL)
404
+ |
405
+ Document (MAIN MODEL)
406
+ ```
407
+
408
+ ## What This Skill Does NOT Have
409
+
410
+ - No ETL service dependency
411
+ - No infrastructure/ references
412
+ - No squads/ references
413
+ - No Bash commands
414
+ - No custom agents (uses built-in general-purpose)
415
+ - No Python/JS scripts
416
+ - No npm dependencies
417
+ - No wave compression (max 2 waves, context is sufficient)
418
+ - No citation verification (simplifies without quality loss)
419
+ - No follow-up behavior (run again for more research)
420
+ - No BlogDiscovery or SemanticChunker
421
+
422
+ ## Output Structure
423
+
424
+ ```
425
+ docs/research/{YYYY-MM-DD}-{slug}/
426
+ ├── README.md # Index + TL;DR
427
+ ├── 00-query-original.md # Original question + context
428
+ ├── 01-deep-research-prompt.md # Generated prompt with sub-queries
429
+ ├── 02-research-report.md # Complete findings
430
+ └── 03-recommendations.md # Recommendations (NO production code)
431
+ ```
@@ -0,0 +1,133 @@
1
+ ## ROLE
2
+ Technical content extractor. Simulates Exa's content extraction when reading pages.
3
+
4
+ ## TASK
5
+ Extract structured, relevant information from the page at {{URL}} related to: {{QUERY}}
6
+
7
+ ## EXTRACTION RULES
8
+
9
+ ### What to Extract
10
+
11
+ 1. **Key Facts** - Concrete information, numbers, specifications
12
+ 2. **Code Examples** - Actual code snippets (not just mentions)
13
+ 3. **Process/Steps** - How-to instructions, workflows
14
+ 4. **Comparisons** - Pros/cons, tradeoffs, benchmarks
15
+ 5. **Expert Opinions** - Quotes, recommendations from authors
16
+ 6. **Warnings/Gotchas** - Common mistakes, anti-patterns
17
+
18
+ ### What to SKIP
19
+
20
+ - Navigation, headers, footers
21
+ - Ads, promotional content
22
+ - Generic introductions ("In this article we will...")
23
+ - Redundant content already covered
24
+ - Author bios (unless relevant)
25
+
26
+ ## OUTPUT FORMAT
27
+
28
+ ```markdown
29
+ ## Source: {{TITLE}}
30
+ URL: {{URL}}
31
+ Relevance: HIGH|MEDIUM|LOW
32
+
33
+ ### Key Findings
34
+ - {Finding 1 with specific data}
35
+ - {Finding 2 with specific data}
36
+
37
+ ### Code/Examples
38
+ ```{language}
39
+ {actual code from the page}
40
+ ```
41
+
42
+ ### Expert Quote
43
+ > "{direct quote}" — {author if known}
44
+
45
+ ### Actionable Insights
46
+ 1. {What to do based on this source}
47
+ 2. {What to avoid}
48
+
49
+ ### Cross-Reference Notes
50
+ - Confirms: {what other sources said}
51
+ - Contradicts: {what differs from other sources}
52
+ - Adds: {new information not found elsewhere}
53
+ ```
54
+
55
+ ## QUALITY GATES
56
+
57
+ Before returning, verify:
58
+ - [ ] At least 3 key findings extracted
59
+ - [ ] Specific data (numbers, versions, dates) included when available
60
+ - [ ] Code examples preserved exactly (not paraphrased)
61
+ - [ ] Relevance score is honest (LOW if page didn't help)
62
+
63
+ ## EXAMPLES
64
+
65
+ ### Good Extraction
66
+
67
+ ```markdown
68
+ ## Source: Redis Caching Best Practices for Node.js
69
+ URL: https://example.com/redis-node-best-practices
70
+ Relevance: HIGH
71
+
72
+ ### Key Findings
73
+ - Redis connection pooling reduces latency by 40% in high-traffic apps
74
+ - Default TTL of 3600s is recommended for session data
75
+ - Use `SCAN` instead of `KEYS` in production (KEYS blocks)
76
+
77
+ ### Code/Examples
78
+ ```javascript
79
+ const redis = require('redis');
80
+ const client = redis.createClient({
81
+ socket: { connectTimeout: 5000 },
82
+ retry_strategy: (options) => Math.min(options.attempt * 100, 3000)
83
+ });
84
+ ```
85
+
86
+ ### Expert Quote
87
+ > "Always set memory limits with maxmemory-policy allkeys-lru to prevent OOM kills" — Redis Labs documentation
88
+
89
+ ### Actionable Insights
90
+ 1. Implement connection pooling with 10-20 connections per instance
91
+ 2. Never use KEYS command in production loops
92
+
93
+ ### Cross-Reference Notes
94
+ - Confirms: TTL importance (also mentioned in Stack Overflow thread)
95
+ - Adds: Specific memory policy recommendation (new info)
96
+ ```
97
+
98
+ ### Honest LOW Relevance
99
+
100
+ ```markdown
101
+ ## Source: Introduction to Caching Concepts
102
+ URL: https://example.com/caching-101
103
+ Relevance: LOW
104
+
105
+ ### Key Findings
106
+ - Basic explanation of what caching is (generic)
107
+ - No Node.js specific content
108
+ - No code examples
109
+
110
+ ### Actionable Insights
111
+ 1. Skip this source for implementation details
112
+
113
+ ### Cross-Reference Notes
114
+ - Adds: Nothing new, basic tutorial level
115
+ ```
116
+
117
+ ## EXECUTION
118
+
119
+ When using WebFetch, pass this as the prompt:
120
+
121
+ ```
122
+ Extract technical information relevant to: {original query}
123
+
124
+ Focus on:
125
+ 1. Specific facts, numbers, benchmarks
126
+ 2. Code examples (preserve exactly)
127
+ 3. Best practices and warnings
128
+ 4. Expert recommendations
129
+
130
+ Skip: navigation, ads, generic intros.
131
+
132
+ Format as structured markdown with Key Findings, Code Examples, Expert Quotes, and Actionable Insights sections.
133
+ ```
@@ -0,0 +1,83 @@
1
+ ---
2
+ name: to-issues
3
+ description: Break a plan, spec, or PRD into independently-grabbable issues on the project issue tracker using tracer-bullet vertical slices. Use when user wants to convert a plan into issues, create implementation tickets, or break down work into issues.
4
+ ---
5
+
6
+ # To Issues
7
+
8
+ Break a plan into independently-grabbable issues using vertical slices (tracer bullets).
9
+
10
+ The issue tracker and triage label vocabulary should have been provided to you — run `/setup-matt-pocock-skills` if not.
11
+
12
+ ## Process
13
+
14
+ ### 1. Gather context
15
+
16
+ Work from whatever is already in the conversation context. If the user passes an issue reference (issue number, URL, or path) as an argument, fetch it from the issue tracker and read its full body and comments.
17
+
18
+ ### 2. Explore the codebase (optional)
19
+
20
+ If you have not already explored the codebase, do so to understand the current state of the code. Issue titles and descriptions should use the project's domain glossary vocabulary, and respect ADRs in the area you're touching.
21
+
22
+ ### 3. Draft vertical slices
23
+
24
+ Break the plan into **tracer bullet** issues. Each issue is a thin vertical slice that cuts through ALL integration layers end-to-end, NOT a horizontal slice of one layer.
25
+
26
+ Slices may be 'HITL' or 'AFK'. HITL slices require human interaction, such as an architectural decision or a design review. AFK slices can be implemented and merged without human interaction. Prefer AFK over HITL where possible.
27
+
28
+ <vertical-slice-rules>
29
+ - Each slice delivers a narrow but COMPLETE path through every layer (schema, API, UI, tests)
30
+ - A completed slice is demoable or verifiable on its own
31
+ - Prefer many thin slices over few thick ones
32
+ </vertical-slice-rules>
33
+
34
+ ### 4. Quiz the user
35
+
36
+ Present the proposed breakdown as a numbered list. For each slice, show:
37
+
38
+ - **Title**: short descriptive name
39
+ - **Type**: HITL / AFK
40
+ - **Blocked by**: which other slices (if any) must complete first
41
+ - **User stories covered**: which user stories this addresses (if the source material has them)
42
+
43
+ Ask the user:
44
+
45
+ - Does the granularity feel right? (too coarse / too fine)
46
+ - Are the dependency relationships correct?
47
+ - Should any slices be merged or split further?
48
+ - Are the correct slices marked as HITL and AFK?
49
+
50
+ Iterate until the user approves the breakdown.
51
+
52
+ ### 5. Publish the issues to the issue tracker
53
+
54
+ For each approved slice, publish a new issue to the issue tracker. Use the issue body template below. These issues are considered ready for AFK agents, so publish them with the correct triage label unless instructed otherwise.
55
+
56
+ Publish issues in dependency order (blockers first) so you can reference real issue identifiers in the "Blocked by" field.
57
+
58
+ <issue-template>
59
+ ## Parent
60
+
61
+ A reference to the parent issue on the issue tracker (if the source was an existing issue, otherwise omit this section).
62
+
63
+ ## What to build
64
+
65
+ A concise description of this vertical slice. Describe the end-to-end behavior, not layer-by-layer implementation.
66
+
67
+ Avoid specific file paths or code snippets — they go stale fast. Exception: if a prototype produced a snippet that encodes a decision more precisely than prose can (state machine, reducer, schema, type shape), inline it here and note briefly that it came from a prototype. Trim to the decision-rich parts — not a working demo, just the important bits.
68
+
69
+ ## Acceptance criteria
70
+
71
+ - [ ] Criterion 1
72
+ - [ ] Criterion 2
73
+ - [ ] Criterion 3
74
+
75
+ ## Blocked by
76
+
77
+ - A reference to the blocking ticket (if any)
78
+
79
+ Or "None - can start immediately" if no blockers.
80
+
81
+ </issue-template>
82
+
83
+ Do NOT close or modify any parent issue.