raise-cli 2.2.1__py3-none-any.whl
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.
- raise_cli/__init__.py +38 -0
- raise_cli/__main__.py +30 -0
- raise_cli/adapters/__init__.py +91 -0
- raise_cli/adapters/declarative/__init__.py +26 -0
- raise_cli/adapters/declarative/adapter.py +267 -0
- raise_cli/adapters/declarative/discovery.py +94 -0
- raise_cli/adapters/declarative/expressions.py +150 -0
- raise_cli/adapters/declarative/reference/__init__.py +1 -0
- raise_cli/adapters/declarative/reference/github.yaml +143 -0
- raise_cli/adapters/declarative/schema.py +98 -0
- raise_cli/adapters/filesystem.py +299 -0
- raise_cli/adapters/mcp_bridge.py +10 -0
- raise_cli/adapters/mcp_confluence.py +246 -0
- raise_cli/adapters/mcp_jira.py +405 -0
- raise_cli/adapters/models.py +205 -0
- raise_cli/adapters/protocols.py +180 -0
- raise_cli/adapters/registry.py +90 -0
- raise_cli/adapters/sync.py +149 -0
- raise_cli/agents/__init__.py +14 -0
- raise_cli/agents/antigravity.yaml +8 -0
- raise_cli/agents/claude.yaml +8 -0
- raise_cli/agents/copilot.yaml +8 -0
- raise_cli/agents/copilot_plugin.py +124 -0
- raise_cli/agents/cursor.yaml +7 -0
- raise_cli/agents/roo.yaml +8 -0
- raise_cli/agents/windsurf.yaml +8 -0
- raise_cli/artifacts/__init__.py +30 -0
- raise_cli/artifacts/models.py +43 -0
- raise_cli/artifacts/reader.py +55 -0
- raise_cli/artifacts/renderer.py +104 -0
- raise_cli/artifacts/story_design.py +69 -0
- raise_cli/artifacts/writer.py +45 -0
- raise_cli/backlog/__init__.py +1 -0
- raise_cli/backlog/sync.py +115 -0
- raise_cli/cli/__init__.py +3 -0
- raise_cli/cli/commands/__init__.py +3 -0
- raise_cli/cli/commands/_resolve.py +153 -0
- raise_cli/cli/commands/adapters.py +362 -0
- raise_cli/cli/commands/artifact.py +137 -0
- raise_cli/cli/commands/backlog.py +333 -0
- raise_cli/cli/commands/base.py +31 -0
- raise_cli/cli/commands/discover.py +551 -0
- raise_cli/cli/commands/docs.py +130 -0
- raise_cli/cli/commands/doctor.py +177 -0
- raise_cli/cli/commands/gate.py +223 -0
- raise_cli/cli/commands/graph.py +1086 -0
- raise_cli/cli/commands/info.py +81 -0
- raise_cli/cli/commands/init.py +746 -0
- raise_cli/cli/commands/journal.py +167 -0
- raise_cli/cli/commands/mcp.py +524 -0
- raise_cli/cli/commands/memory.py +467 -0
- raise_cli/cli/commands/pattern.py +348 -0
- raise_cli/cli/commands/profile.py +59 -0
- raise_cli/cli/commands/publish.py +80 -0
- raise_cli/cli/commands/release.py +338 -0
- raise_cli/cli/commands/session.py +528 -0
- raise_cli/cli/commands/signal.py +410 -0
- raise_cli/cli/commands/skill.py +350 -0
- raise_cli/cli/commands/skill_set.py +145 -0
- raise_cli/cli/error_handler.py +158 -0
- raise_cli/cli/main.py +163 -0
- raise_cli/compat.py +66 -0
- raise_cli/config/__init__.py +41 -0
- raise_cli/config/agent_plugin.py +105 -0
- raise_cli/config/agent_registry.py +233 -0
- raise_cli/config/agents.py +120 -0
- raise_cli/config/ide.py +32 -0
- raise_cli/config/paths.py +379 -0
- raise_cli/config/settings.py +180 -0
- raise_cli/context/__init__.py +42 -0
- raise_cli/context/analyzers/__init__.py +16 -0
- raise_cli/context/analyzers/models.py +36 -0
- raise_cli/context/analyzers/protocol.py +43 -0
- raise_cli/context/analyzers/python.py +292 -0
- raise_cli/context/builder.py +1569 -0
- raise_cli/context/diff.py +213 -0
- raise_cli/context/extractors/__init__.py +13 -0
- raise_cli/context/extractors/skills.py +121 -0
- raise_cli/core/__init__.py +37 -0
- raise_cli/core/files.py +66 -0
- raise_cli/core/text.py +174 -0
- raise_cli/core/tools.py +441 -0
- raise_cli/discovery/__init__.py +50 -0
- raise_cli/discovery/analyzer.py +691 -0
- raise_cli/discovery/drift.py +355 -0
- raise_cli/discovery/scanner.py +1687 -0
- raise_cli/doctor/__init__.py +4 -0
- raise_cli/doctor/checks/__init__.py +1 -0
- raise_cli/doctor/checks/environment.py +110 -0
- raise_cli/doctor/checks/project.py +238 -0
- raise_cli/doctor/fix.py +80 -0
- raise_cli/doctor/models.py +56 -0
- raise_cli/doctor/protocol.py +43 -0
- raise_cli/doctor/registry.py +100 -0
- raise_cli/doctor/report.py +141 -0
- raise_cli/doctor/runner.py +95 -0
- raise_cli/engines/__init__.py +3 -0
- raise_cli/exceptions.py +215 -0
- raise_cli/gates/__init__.py +19 -0
- raise_cli/gates/builtin/__init__.py +1 -0
- raise_cli/gates/builtin/coverage.py +52 -0
- raise_cli/gates/builtin/lint.py +48 -0
- raise_cli/gates/builtin/tests.py +48 -0
- raise_cli/gates/builtin/types.py +48 -0
- raise_cli/gates/models.py +40 -0
- raise_cli/gates/protocol.py +41 -0
- raise_cli/gates/registry.py +141 -0
- raise_cli/governance/__init__.py +11 -0
- raise_cli/governance/extractor.py +412 -0
- raise_cli/governance/models.py +134 -0
- raise_cli/governance/parsers/__init__.py +35 -0
- raise_cli/governance/parsers/_convert.py +38 -0
- raise_cli/governance/parsers/adr.py +274 -0
- raise_cli/governance/parsers/backlog.py +356 -0
- raise_cli/governance/parsers/constitution.py +119 -0
- raise_cli/governance/parsers/epic.py +323 -0
- raise_cli/governance/parsers/glossary.py +316 -0
- raise_cli/governance/parsers/guardrails.py +345 -0
- raise_cli/governance/parsers/prd.py +112 -0
- raise_cli/governance/parsers/roadmap.py +118 -0
- raise_cli/governance/parsers/vision.py +116 -0
- raise_cli/graph/__init__.py +1 -0
- raise_cli/graph/backends/__init__.py +57 -0
- raise_cli/graph/backends/api.py +137 -0
- raise_cli/graph/backends/dual.py +139 -0
- raise_cli/graph/backends/pending.py +84 -0
- raise_cli/handlers/__init__.py +3 -0
- raise_cli/hooks/__init__.py +54 -0
- raise_cli/hooks/builtin/__init__.py +1 -0
- raise_cli/hooks/builtin/backlog.py +216 -0
- raise_cli/hooks/builtin/gate_bridge.py +83 -0
- raise_cli/hooks/builtin/jira_sync.py +127 -0
- raise_cli/hooks/builtin/memory.py +117 -0
- raise_cli/hooks/builtin/telemetry.py +72 -0
- raise_cli/hooks/emitter.py +184 -0
- raise_cli/hooks/events.py +262 -0
- raise_cli/hooks/protocol.py +38 -0
- raise_cli/hooks/registry.py +117 -0
- raise_cli/mcp/__init__.py +33 -0
- raise_cli/mcp/bridge.py +218 -0
- raise_cli/mcp/models.py +43 -0
- raise_cli/mcp/registry.py +77 -0
- raise_cli/mcp/schema.py +41 -0
- raise_cli/memory/__init__.py +58 -0
- raise_cli/memory/loader.py +247 -0
- raise_cli/memory/migration.py +241 -0
- raise_cli/memory/models.py +169 -0
- raise_cli/memory/writer.py +598 -0
- raise_cli/onboarding/__init__.py +103 -0
- raise_cli/onboarding/bootstrap.py +324 -0
- raise_cli/onboarding/claudemd.py +17 -0
- raise_cli/onboarding/conventions.py +742 -0
- raise_cli/onboarding/detection.py +374 -0
- raise_cli/onboarding/governance.py +443 -0
- raise_cli/onboarding/instructions.py +672 -0
- raise_cli/onboarding/manifest.py +201 -0
- raise_cli/onboarding/memory_md.py +399 -0
- raise_cli/onboarding/migration.py +207 -0
- raise_cli/onboarding/profile.py +624 -0
- raise_cli/onboarding/skill_conflict.py +100 -0
- raise_cli/onboarding/skill_manifest.py +176 -0
- raise_cli/onboarding/skills.py +437 -0
- raise_cli/onboarding/workflows.py +101 -0
- raise_cli/output/__init__.py +28 -0
- raise_cli/output/console.py +394 -0
- raise_cli/output/formatters/__init__.py +9 -0
- raise_cli/output/formatters/adapters.py +135 -0
- raise_cli/output/formatters/discover.py +439 -0
- raise_cli/output/formatters/skill.py +298 -0
- raise_cli/publish/__init__.py +3 -0
- raise_cli/publish/changelog.py +80 -0
- raise_cli/publish/check.py +179 -0
- raise_cli/publish/version.py +172 -0
- raise_cli/rai_base/__init__.py +22 -0
- raise_cli/rai_base/framework/__init__.py +7 -0
- raise_cli/rai_base/framework/methodology.yaml +233 -0
- raise_cli/rai_base/governance/__init__.py +1 -0
- raise_cli/rai_base/governance/architecture/__init__.py +1 -0
- raise_cli/rai_base/governance/architecture/domain-model.md +20 -0
- raise_cli/rai_base/governance/architecture/system-context.md +34 -0
- raise_cli/rai_base/governance/architecture/system-design.md +24 -0
- raise_cli/rai_base/governance/backlog.md +8 -0
- raise_cli/rai_base/governance/guardrails.md +17 -0
- raise_cli/rai_base/governance/prd.md +25 -0
- raise_cli/rai_base/governance/vision.md +16 -0
- raise_cli/rai_base/identity/__init__.py +8 -0
- raise_cli/rai_base/identity/core.md +119 -0
- raise_cli/rai_base/identity/perspective.md +119 -0
- raise_cli/rai_base/memory/__init__.py +7 -0
- raise_cli/rai_base/memory/patterns-base.jsonl +55 -0
- raise_cli/schemas/__init__.py +3 -0
- raise_cli/schemas/journal.py +49 -0
- raise_cli/schemas/session_state.py +117 -0
- raise_cli/session/__init__.py +5 -0
- raise_cli/session/bundle.py +820 -0
- raise_cli/session/close.py +268 -0
- raise_cli/session/journal.py +119 -0
- raise_cli/session/resolver.py +126 -0
- raise_cli/session/state.py +187 -0
- raise_cli/skills/__init__.py +44 -0
- raise_cli/skills/locator.py +141 -0
- raise_cli/skills/name_checker.py +199 -0
- raise_cli/skills/parser.py +145 -0
- raise_cli/skills/scaffold.py +212 -0
- raise_cli/skills/schema.py +132 -0
- raise_cli/skills/skillsets.py +195 -0
- raise_cli/skills/validator.py +197 -0
- raise_cli/skills_base/__init__.py +80 -0
- raise_cli/skills_base/contract-template.md +60 -0
- raise_cli/skills_base/preamble.md +37 -0
- raise_cli/skills_base/rai-architecture-review/SKILL.md +137 -0
- raise_cli/skills_base/rai-debug/SKILL.md +171 -0
- raise_cli/skills_base/rai-discover/SKILL.md +167 -0
- raise_cli/skills_base/rai-discover-document/SKILL.md +128 -0
- raise_cli/skills_base/rai-discover-scan/SKILL.md +147 -0
- raise_cli/skills_base/rai-discover-start/SKILL.md +145 -0
- raise_cli/skills_base/rai-discover-validate/SKILL.md +142 -0
- raise_cli/skills_base/rai-docs-update/SKILL.md +142 -0
- raise_cli/skills_base/rai-doctor/SKILL.md +120 -0
- raise_cli/skills_base/rai-epic-close/SKILL.md +165 -0
- raise_cli/skills_base/rai-epic-close/templates/retrospective.md +68 -0
- raise_cli/skills_base/rai-epic-design/SKILL.md +146 -0
- raise_cli/skills_base/rai-epic-design/templates/design.md +24 -0
- raise_cli/skills_base/rai-epic-design/templates/scope.md +76 -0
- raise_cli/skills_base/rai-epic-plan/SKILL.md +153 -0
- raise_cli/skills_base/rai-epic-plan/_references/sequencing-strategies.md +67 -0
- raise_cli/skills_base/rai-epic-plan/templates/plan-section.md +49 -0
- raise_cli/skills_base/rai-epic-run/SKILL.md +208 -0
- raise_cli/skills_base/rai-epic-start/SKILL.md +136 -0
- raise_cli/skills_base/rai-epic-start/templates/brief.md +34 -0
- raise_cli/skills_base/rai-mcp-add/SKILL.md +176 -0
- raise_cli/skills_base/rai-mcp-remove/SKILL.md +120 -0
- raise_cli/skills_base/rai-mcp-status/SKILL.md +147 -0
- raise_cli/skills_base/rai-problem-shape/SKILL.md +138 -0
- raise_cli/skills_base/rai-project-create/SKILL.md +144 -0
- raise_cli/skills_base/rai-project-onboard/SKILL.md +162 -0
- raise_cli/skills_base/rai-quality-review/SKILL.md +189 -0
- raise_cli/skills_base/rai-research/SKILL.md +143 -0
- raise_cli/skills_base/rai-research/references/research-prompt-template.md +317 -0
- raise_cli/skills_base/rai-session-close/SKILL.md +176 -0
- raise_cli/skills_base/rai-session-start/SKILL.md +110 -0
- raise_cli/skills_base/rai-story-close/SKILL.md +198 -0
- raise_cli/skills_base/rai-story-design/SKILL.md +203 -0
- raise_cli/skills_base/rai-story-design/references/tech-design-story-v2.md +293 -0
- raise_cli/skills_base/rai-story-implement/SKILL.md +115 -0
- raise_cli/skills_base/rai-story-plan/SKILL.md +135 -0
- raise_cli/skills_base/rai-story-review/SKILL.md +178 -0
- raise_cli/skills_base/rai-story-run/SKILL.md +282 -0
- raise_cli/skills_base/rai-story-start/SKILL.md +166 -0
- raise_cli/skills_base/rai-story-start/templates/story.md +38 -0
- raise_cli/skills_base/rai-welcome/SKILL.md +134 -0
- raise_cli/telemetry/__init__.py +42 -0
- raise_cli/telemetry/schemas.py +285 -0
- raise_cli/telemetry/writer.py +217 -0
- raise_cli/tier/__init__.py +0 -0
- raise_cli/tier/context.py +134 -0
- raise_cli/viz/__init__.py +7 -0
- raise_cli/viz/generator.py +406 -0
- raise_cli-2.2.1.dist-info/METADATA +433 -0
- raise_cli-2.2.1.dist-info/RECORD +264 -0
- raise_cli-2.2.1.dist-info/WHEEL +4 -0
- raise_cli-2.2.1.dist-info/entry_points.txt +40 -0
- raise_cli-2.2.1.dist-info/licenses/LICENSE +190 -0
- raise_cli-2.2.1.dist-info/licenses/NOTICE +4 -0
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rai-quality-review
|
|
3
|
+
description: >
|
|
4
|
+
Critical code review with external auditor perspective. Catches what linters,
|
|
5
|
+
type checkers, and coverage gates miss: semantic bugs, type lies, test muda,
|
|
6
|
+
API design issues, and security concerns.
|
|
7
|
+
|
|
8
|
+
license: MIT
|
|
9
|
+
|
|
10
|
+
metadata:
|
|
11
|
+
raise.work_cycle: story
|
|
12
|
+
raise.frequency: on-demand
|
|
13
|
+
raise.prerequisites: story-implement
|
|
14
|
+
raise.version: "1.0.0"
|
|
15
|
+
raise.visibility: internal
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# Quality Review
|
|
19
|
+
|
|
20
|
+
## Purpose
|
|
21
|
+
|
|
22
|
+
Act as an external auditor reviewing code that passed all automated gates. Find what the machines missed — semantic bugs account for 51% of all missed bugs in code review (ICSE, arxiv 2205.09428).
|
|
23
|
+
|
|
24
|
+
## Mastery Levels (ShuHaRi)
|
|
25
|
+
|
|
26
|
+
- **Shu**: Apply all audit categories systematically, explain each finding
|
|
27
|
+
- **Ha**: Focus on highest-risk areas (type honesty, test muda), skip low-risk
|
|
28
|
+
- **Ri**: Pattern-match to known vulnerability classes, minimal ceremony
|
|
29
|
+
|
|
30
|
+
## Context
|
|
31
|
+
|
|
32
|
+
| Condition | Action |
|
|
33
|
+
|-----------|--------|
|
|
34
|
+
| After `/rai-story-implement`, all gates pass | Run quality review |
|
|
35
|
+
| Before `/rai-story-review` | Catch issues before retrospective |
|
|
36
|
+
| Code feels "too clean" | Assumptions may be hiding — review |
|
|
37
|
+
|
|
38
|
+
**Inputs:** Story ID (to find changed files), passing gates (language-appropriate linters, type checkers, test runners).
|
|
39
|
+
|
|
40
|
+
## Steps
|
|
41
|
+
|
|
42
|
+
### Step 0: Detect Project Language
|
|
43
|
+
|
|
44
|
+
Determine the primary language and toolchain using this priority chain:
|
|
45
|
+
|
|
46
|
+
1. **Check `.raise/manifest.yaml`** for explicit overrides (`project.test_command`, `project.lint_command`, `project.type_check_command`) — configuration over convention
|
|
47
|
+
2. **Detect language** from `project.project_type` in manifest, or scan extensions of changed files (`git diff --name-only`)
|
|
48
|
+
3. **Map language to defaults** using the table below
|
|
49
|
+
|
|
50
|
+
```yaml
|
|
51
|
+
# .raise/manifest.yaml — example overrides
|
|
52
|
+
project:
|
|
53
|
+
test_command: "npm run test:ci" # overrides Test Runner column
|
|
54
|
+
lint_command: "biome check" # overrides Linter column
|
|
55
|
+
type_check_command: "tsc --noEmit" # overrides Type Checker column
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Manifest commands always win when present. The table is a **fallback**:
|
|
59
|
+
|
|
60
|
+
| Language | Extensions | Type Checker | Linter | Test Runner |
|
|
61
|
+
|----------|-----------|--------------|--------|-------------|
|
|
62
|
+
| Python | `.py`, `.pyi` | pyright/mypy | ruff | pytest |
|
|
63
|
+
| TypeScript | `.ts`, `.tsx` | tsc --noEmit | eslint | jest/vitest |
|
|
64
|
+
| JavaScript | `.js`, `.jsx` | — | eslint | jest/vitest |
|
|
65
|
+
| C# | `.cs` | dotnet build | dotnet format | xunit/nunit |
|
|
66
|
+
| Java | `.java` | javac | checkstyle | JUnit |
|
|
67
|
+
| Go | `.go` | go vet | golangci-lint | go test |
|
|
68
|
+
| PHP | `.php` | phpstan | php-cs-fixer | phpunit |
|
|
69
|
+
| Dart | `.dart` | dart analyze | dart fix | flutter test |
|
|
70
|
+
|
|
71
|
+
If mixed languages, review each language group separately using its section below.
|
|
72
|
+
|
|
73
|
+
### Step 1: Identify Changed Files
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
# Use the parent branch (epic or dev) as merge base — not a hardcoded branch name
|
|
77
|
+
git diff --name-only $(git merge-base HEAD <parent-branch>)..HEAD -- '<extensions>'
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Replace `<extensions>` with language-appropriate patterns from Step 0 (e.g., `'*.py' '*.pyi'` for Python, `'*.ts' '*.tsx'` for TypeScript).
|
|
81
|
+
|
|
82
|
+
Read every changed file. You cannot review code you haven't read.
|
|
83
|
+
|
|
84
|
+
### Step 2: Semantic Correctness Audit
|
|
85
|
+
|
|
86
|
+
#### Universal Checks (all languages)
|
|
87
|
+
|
|
88
|
+
**Logic correctness:** Inverted conditionals (#1 semantic bug), off-by-one errors, wrong variable in expressions (copy-paste), unhandled edge cases (empty, null/None, zero-length).
|
|
89
|
+
|
|
90
|
+
#### Language-Specific Checks
|
|
91
|
+
|
|
92
|
+
**Python:**
|
|
93
|
+
- **Type honesty:** `type: ignore` comments (each is a potential lie), `cast()` honesty, annotations claiming more specific types than runtime provides
|
|
94
|
+
- **Error handling:** Overly broad `except Exception`, swallowed exceptions, missing `raise X from exc`
|
|
95
|
+
- **Idioms:** Mutable default arguments, late binding closures in loops
|
|
96
|
+
|
|
97
|
+
**TypeScript/JavaScript:**
|
|
98
|
+
- **Type honesty:** `as` type assertions (bypasses type checking), `any` types (defeats type safety), `@ts-ignore`/`@ts-expect-error` comments
|
|
99
|
+
- **Error handling:** Unhandled promise rejections, missing `.catch()`, overly broad `catch(e)` without type narrowing
|
|
100
|
+
- **Idioms:** `==` vs `===`, truthiness traps (`0`, `""`, `[]` are falsy), implicit `any` from untyped imports
|
|
101
|
+
|
|
102
|
+
**C#/.NET:**
|
|
103
|
+
- **Type honesty:** Null-forgiving operator `!` (suppresses null warnings), unchecked casts vs pattern matching, `dynamic` type usage
|
|
104
|
+
- **Error handling:** Empty `catch` blocks, catching `System.Exception` broadly, missing `using`/`await using` for `IDisposable`
|
|
105
|
+
- **Idioms:** `async void` methods (fire-and-forget), missing `ConfigureAwait`, LINQ deferred execution surprises
|
|
106
|
+
|
|
107
|
+
**PHP:**
|
|
108
|
+
- **Type honesty:** Missing type declarations, `@` error suppression operator, loose comparison (`==` vs `===`)
|
|
109
|
+
- **Error handling:** Silenced errors, missing null checks on database results
|
|
110
|
+
- **Idioms:** Uninitialized properties, reference parameter side effects
|
|
111
|
+
|
|
112
|
+
**Go:**
|
|
113
|
+
- **Type honesty:** Unchecked type assertions (use comma-ok pattern), interface satisfaction without tests
|
|
114
|
+
- **Error handling:** Ignored error returns (`_`), error wrapping without `%w`
|
|
115
|
+
- **Idioms:** Goroutine leaks, unbuffered channel deadlocks, deferred close on writable resources
|
|
116
|
+
|
|
117
|
+
**Dart/Flutter:**
|
|
118
|
+
- **Type honesty:** `as` casts without `is` checks, `dynamic` type usage, `!` null assertion operator
|
|
119
|
+
- **Error handling:** Uncaught `Future` errors, missing error handling in `StreamBuilder`
|
|
120
|
+
- **Idioms:** `setState` after dispose, missing `const` constructors, build method side effects
|
|
121
|
+
|
|
122
|
+
### Step 3: Test Quality Audit
|
|
123
|
+
|
|
124
|
+
Apply these heuristics to every test file:
|
|
125
|
+
|
|
126
|
+
| # | Heuristic | Red Flag |
|
|
127
|
+
|---|-----------|----------|
|
|
128
|
+
| 1 | Mutation Survival | Test passes regardless of code behavior change |
|
|
129
|
+
| 2 | Refactoring Resilience | Test asserts on internals, not behavior |
|
|
130
|
+
| 3 | Behavior Specification | Name mirrors code structure, not behavior |
|
|
131
|
+
| 4 | Magic Literal | Assertion against hardcoded value from implementation |
|
|
132
|
+
| 5 | Mock Depth | Mock returns mock returns mock |
|
|
133
|
+
| 6 | Deletion | No unique bug coverage if test deleted |
|
|
134
|
+
| 7 | Spec Independence | Assertion requires reading source to understand |
|
|
135
|
+
|
|
136
|
+
Classify: **Muda** (waste, recommend deletion) / **Fragile** (breaks on refactor) / **Valuable** (leave as-is).
|
|
137
|
+
|
|
138
|
+
### Step 4: API Surface & Security Audit
|
|
139
|
+
|
|
140
|
+
**API (language-adaptive):**
|
|
141
|
+
|
|
142
|
+
| Language | Visibility Mechanism | Leak Detection |
|
|
143
|
+
|----------|---------------------|----------------|
|
|
144
|
+
| Python | Lean `__all__`, `_`-prefixed internals | Internal symbols in public API |
|
|
145
|
+
| TypeScript | `export` discipline, barrel files | Re-exporting internals, `export *` |
|
|
146
|
+
| C# | `internal` vs `public`, `[assembly: InternalsVisibleTo]` | Public types that should be internal |
|
|
147
|
+
| Go | Capitalization (exported vs unexported) | Exported helpers that should be internal |
|
|
148
|
+
| PHP | `private`/`protected` vs `public` | Public methods that should be protected |
|
|
149
|
+
| Dart | `_`-prefixed private, `export` directives | Part-of files leaking implementation |
|
|
150
|
+
|
|
151
|
+
**Security (universal):** Entry point trust model, input validation at boundaries, dependency justification, no secret exposure in logs/errors.
|
|
152
|
+
|
|
153
|
+
### Step 5: Present Findings
|
|
154
|
+
|
|
155
|
+
```markdown
|
|
156
|
+
## Quality Review: {story_id}
|
|
157
|
+
|
|
158
|
+
### Critical (fix before merge)
|
|
159
|
+
### Recommended (improve code quality)
|
|
160
|
+
### Observations (no action needed)
|
|
161
|
+
### Verdict
|
|
162
|
+
- [ ] PASS / PASS WITH RECOMMENDATIONS / FAIL
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
Every finding: specific file:line, WHY it matters, concrete fix suggestion.
|
|
166
|
+
|
|
167
|
+
## Output
|
|
168
|
+
|
|
169
|
+
| Item | Destination |
|
|
170
|
+
|------|-------------|
|
|
171
|
+
| Review findings | Presented inline, saved if requested |
|
|
172
|
+
| Verdict | PASS, PASS WITH RECOMMENDATIONS, or FAIL |
|
|
173
|
+
| Next | `/rai-story-review` |
|
|
174
|
+
|
|
175
|
+
## Quality Checklist
|
|
176
|
+
|
|
177
|
+
- [ ] Project language detected (Step 0) before reviewing
|
|
178
|
+
- [ ] All changed files for detected language read before reviewing
|
|
179
|
+
- [ ] Every finding cites specific file:line
|
|
180
|
+
- [ ] Every finding explains WHY (not just WHAT)
|
|
181
|
+
- [ ] Style issues already caught by language-appropriate linters are excluded
|
|
182
|
+
- [ ] Language-specific checks applied from correct section
|
|
183
|
+
- [ ] "No issues found" is a valid outcome — do not invent findings
|
|
184
|
+
|
|
185
|
+
## References
|
|
186
|
+
|
|
187
|
+
- Evidence: `work/research/quality-review/evidence-catalog.md`
|
|
188
|
+
- Complements: `/rai-architecture-review` (proportionality), `/rai-story-review` (retrospective)
|
|
189
|
+
- Research: ICSE semantic bugs (arxiv 2205.09428), Google Testing Blog, OWASP
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rai-research
|
|
3
|
+
description: >
|
|
4
|
+
Conduct epistemologically rigorous research to inform decisions.
|
|
5
|
+
Use before ADRs, when evaluating competing approaches, entering
|
|
6
|
+
unfamiliar domains, or resolving parking lot items. Produces
|
|
7
|
+
evidence catalogs with triangulated claims and actionable recommendations.
|
|
8
|
+
|
|
9
|
+
license: MIT
|
|
10
|
+
|
|
11
|
+
metadata:
|
|
12
|
+
raise.work_cycle: utility
|
|
13
|
+
raise.frequency: as-needed
|
|
14
|
+
raise.fase: "0"
|
|
15
|
+
raise.prerequisites: ""
|
|
16
|
+
raise.next: ""
|
|
17
|
+
raise.gate: ""
|
|
18
|
+
raise.adaptable: "true"
|
|
19
|
+
raise.version: "2.0.0"
|
|
20
|
+
raise.visibility: public
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
# Research
|
|
25
|
+
|
|
26
|
+
## Purpose
|
|
27
|
+
|
|
28
|
+
Conduct epistemologically rigorous research to inform decisions. Standing on the shoulders of giants, not reinventing wheels.
|
|
29
|
+
|
|
30
|
+
## Mastery Levels (ShuHaRi)
|
|
31
|
+
|
|
32
|
+
- **Shu**: Follow all steps with full evidence catalog and research prompt template
|
|
33
|
+
- **Ha**: Scale depth to decision importance; adapt prompt template
|
|
34
|
+
- **Ri**: Create domain-specific research protocols and custom prompts
|
|
35
|
+
|
|
36
|
+
## Context
|
|
37
|
+
|
|
38
|
+
**When to use:** Before ADRs, when evaluating competing approaches, entering unfamiliar domains, or resolving parking lot items.
|
|
39
|
+
|
|
40
|
+
**When to skip:** Decision is low-stakes and reversible, or prior research exists in `work/research/`.
|
|
41
|
+
|
|
42
|
+
**Inputs:** Clear research question(s), decision context, depth constraint (quick/standard/deep).
|
|
43
|
+
|
|
44
|
+
| Depth | Time | Sources | Use when |
|
|
45
|
+
|-------|------|---------|----------|
|
|
46
|
+
| Quick scan | 1-2h | 5-10 | Low-stakes, familiar domains |
|
|
47
|
+
| Standard | 4-8h | 15-30 | Most ADRs, technology evaluation |
|
|
48
|
+
| Deep dive | 2-5d | 50-100+ | Strategic decisions, unfamiliar domains |
|
|
49
|
+
|
|
50
|
+
## Steps
|
|
51
|
+
|
|
52
|
+
### Step 1: Frame the Question
|
|
53
|
+
|
|
54
|
+
Define: primary question, secondary questions, decision this informs, depth constraint.
|
|
55
|
+
|
|
56
|
+
**Epistemological principles:** Seek disconfirming evidence (falsifiability), require 3+ sources per claim (triangulation), primary > secondary > tertiary sources.
|
|
57
|
+
|
|
58
|
+
<verification>
|
|
59
|
+
Question is specific and falsifiable.
|
|
60
|
+
</verification>
|
|
61
|
+
|
|
62
|
+
<if-blocked>
|
|
63
|
+
Question too vague → decompose into sub-questions.
|
|
64
|
+
</if-blocked>
|
|
65
|
+
|
|
66
|
+
### Step 2: Select Tool & Survey
|
|
67
|
+
|
|
68
|
+
**Tool selection:**
|
|
69
|
+
|
|
70
|
+
| Tool | Best for |
|
|
71
|
+
|------|----------|
|
|
72
|
+
| `ddgr "query"` | Quick scans, no API key needed |
|
|
73
|
+
| `llm -m perplexity "query"` | Deep research with citations |
|
|
74
|
+
| WebSearch | Reliable fallback |
|
|
75
|
+
|
|
76
|
+
Gather sources: academic papers, official docs, GitHub repos (stars/activity), engineering blogs, community discussions.
|
|
77
|
+
|
|
78
|
+
<verification>
|
|
79
|
+
10+ sources collected (scaled to depth).
|
|
80
|
+
</verification>
|
|
81
|
+
|
|
82
|
+
### Step 3: Build Evidence Catalog
|
|
83
|
+
|
|
84
|
+
Per source: type (primary/secondary/tertiary), evidence level, key finding, relevance.
|
|
85
|
+
|
|
86
|
+
| Evidence level | Criteria |
|
|
87
|
+
|---------------|----------|
|
|
88
|
+
| Very High | Peer-reviewed, production-proven at scale, >10k stars |
|
|
89
|
+
| High | Expert practitioners at established companies, >1k stars |
|
|
90
|
+
| Medium | Community-validated, emerging consensus, >100 stars |
|
|
91
|
+
| Low | Single source, unvalidated, <100 stars |
|
|
92
|
+
|
|
93
|
+
Save to `work/research/{topic}/sources/evidence-catalog.md`.
|
|
94
|
+
|
|
95
|
+
<verification>
|
|
96
|
+
Evidence catalog created with levels rated.
|
|
97
|
+
</verification>
|
|
98
|
+
|
|
99
|
+
### Step 4: Triangulate & Synthesize
|
|
100
|
+
|
|
101
|
+
Per major claim: find 3+ independent confirmations, note consensus vs disagreement, assign confidence (HIGH/MEDIUM/LOW), acknowledge contrary evidence explicitly.
|
|
102
|
+
|
|
103
|
+
Extract patterns: convergence points, gaps, RaiSE-specific vs general findings.
|
|
104
|
+
|
|
105
|
+
<verification>
|
|
106
|
+
Major claims have 3+ sources. Contrary evidence documented.
|
|
107
|
+
</verification>
|
|
108
|
+
|
|
109
|
+
### Step 5: Recommend & Link
|
|
110
|
+
|
|
111
|
+
Produce: recommendation with confidence level, trade-offs, implementation implications, risks.
|
|
112
|
+
|
|
113
|
+
Connect to governance: create/reference ADR if architectural, update backlog if actionable, update parking lot if deferred.
|
|
114
|
+
|
|
115
|
+
<verification>
|
|
116
|
+
Recommendation is actionable and traces to evidence.
|
|
117
|
+
</verification>
|
|
118
|
+
|
|
119
|
+
## Output
|
|
120
|
+
|
|
121
|
+
| Item | Destination |
|
|
122
|
+
|------|-------------|
|
|
123
|
+
| Report | `work/research/{topic}/{topic}-report.md` |
|
|
124
|
+
| Evidence catalog | `work/research/{topic}/sources/evidence-catalog.md` |
|
|
125
|
+
| Navigation | `work/research/{topic}/README.md` |
|
|
126
|
+
| Next | ADR, backlog item, or parking lot update |
|
|
127
|
+
|
|
128
|
+
## Quality Checklist
|
|
129
|
+
|
|
130
|
+
- [ ] Research question is specific and falsifiable
|
|
131
|
+
- [ ] 10+ sources consulted (scaled to depth)
|
|
132
|
+
- [ ] Evidence catalog created with levels rated
|
|
133
|
+
- [ ] Major claims triangulated (3+ independent sources)
|
|
134
|
+
- [ ] Confidence level explicitly stated on recommendation
|
|
135
|
+
- [ ] Contrary evidence acknowledged (not hidden)
|
|
136
|
+
- [ ] Governance linkage established (ADR, backlog, or parking lot)
|
|
137
|
+
- [ ] NEVER present single-source findings as consensus
|
|
138
|
+
|
|
139
|
+
## References
|
|
140
|
+
|
|
141
|
+
- Research prompt template: `references/research-prompt-template.md`
|
|
142
|
+
- Existing research: `work/research/`
|
|
143
|
+
- Epistemology: falsifiability, triangulation, source hierarchy
|
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
---
|
|
2
|
+
research_id: "[TOPIC]-[YYYYMMDD]"
|
|
3
|
+
primary_question: "[Specific, falsifiable question]"
|
|
4
|
+
decision_context: "[What this informs: ADR, feature, backlog]"
|
|
5
|
+
depth: "[quick-scan|standard|deep-dive]"
|
|
6
|
+
created: "[YYYY-MM-DD]"
|
|
7
|
+
version: "1.0"
|
|
8
|
+
template: "research-prompt-v1"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Research Prompt: [Topic]
|
|
12
|
+
|
|
13
|
+
> Template for structured AI research with epistemological rigor
|
|
14
|
+
> Based on evidence from 20 sources (meta-research 2026-01-31)
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Role Definition
|
|
19
|
+
|
|
20
|
+
You are a **Research Specialist** with expertise in **[domain]**. Your task is to conduct epistemologically rigorous research following scientific standards for evidence evaluation.
|
|
21
|
+
|
|
22
|
+
**Your responsibilities:**
|
|
23
|
+
- Search systematically across academic, official, and practitioner sources
|
|
24
|
+
- Evaluate evidence quality using RaiSE criteria
|
|
25
|
+
- Triangulate findings from 3+ independent sources per major claim
|
|
26
|
+
- Document contrary evidence and uncertainty explicitly
|
|
27
|
+
- Produce reproducible, auditable research outputs
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Research Question
|
|
32
|
+
|
|
33
|
+
**Primary**: [Main question to answer - must be specific and falsifiable]
|
|
34
|
+
|
|
35
|
+
**Secondary** (supporting questions):
|
|
36
|
+
1. [Supporting question 1]
|
|
37
|
+
2. [Supporting question 2]
|
|
38
|
+
3. [Supporting question 3]
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Decision Context
|
|
43
|
+
|
|
44
|
+
**This research will inform**: [Specific decision, ADR, story design, architecture choice, etc.]
|
|
45
|
+
|
|
46
|
+
**Stakeholder**: [Who needs this information]
|
|
47
|
+
|
|
48
|
+
**Timeline**: [When decision will be made]
|
|
49
|
+
|
|
50
|
+
**Impact**: [Consequences of getting this wrong - why rigor matters]
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Instructions
|
|
55
|
+
|
|
56
|
+
### Search Strategy
|
|
57
|
+
|
|
58
|
+
Execute searches across these source types:
|
|
59
|
+
|
|
60
|
+
1. **Academic sources**
|
|
61
|
+
- Google Scholar: `[specific search terms]`
|
|
62
|
+
- arXiv: `[topic keywords]`
|
|
63
|
+
- Purpose: Peer-reviewed research, theoretical foundations
|
|
64
|
+
|
|
65
|
+
2. **Official documentation**
|
|
66
|
+
- [Technology/framework] official docs
|
|
67
|
+
- Standards bodies (W3C, IETF, etc.)
|
|
68
|
+
- Purpose: Authoritative technical specifications
|
|
69
|
+
|
|
70
|
+
3. **Production evidence**
|
|
71
|
+
- GitHub repositories (filter: >100 stars, active maintenance)
|
|
72
|
+
- Engineering blogs: FAANG, GitLab, Atlassian, established companies
|
|
73
|
+
- Purpose: Real-world validation, battle-tested patterns
|
|
74
|
+
|
|
75
|
+
4. **Community validation**
|
|
76
|
+
- Reddit (r/[relevant]), Hacker News, Discord/Slack communities
|
|
77
|
+
- Conference talks, podcasts
|
|
78
|
+
- Purpose: Emerging consensus, practitioner wisdom
|
|
79
|
+
|
|
80
|
+
**Keywords to search**: [List 5-10 specific search terms]
|
|
81
|
+
|
|
82
|
+
**Sources to avoid**: [If any - e.g., outdated frameworks, deprecated APIs]
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
### Evidence Evaluation
|
|
87
|
+
|
|
88
|
+
For each source you find, assess and record:
|
|
89
|
+
|
|
90
|
+
- **Type**:
|
|
91
|
+
- Primary (original research, official docs, first-hand experience)
|
|
92
|
+
- Secondary (practitioner synthesis, curated guides, tutorials)
|
|
93
|
+
- Tertiary (aggregations, summaries, listicles)
|
|
94
|
+
|
|
95
|
+
- **Evidence Level** (use RaiSE engineering criteria):
|
|
96
|
+
- **Very High**: Peer-reviewed papers, official docs, OSS >10k stars with proven production use
|
|
97
|
+
- **High**: Expert practitioners at established companies, well-maintained projects >1k stars
|
|
98
|
+
- **Medium**: Community-validated resources, emerging projects >100 stars, engaged articles
|
|
99
|
+
- **Low**: Single sources, <100 stars, unvalidated claims, personal blogs without corroboration
|
|
100
|
+
|
|
101
|
+
- **Key Finding**: One-line takeaway from this source
|
|
102
|
+
|
|
103
|
+
- **Relevance**: How does this answer our research question?
|
|
104
|
+
|
|
105
|
+
- **Date**: Publication or last update date (recency matters for tech)
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
### Triangulation Requirements
|
|
110
|
+
|
|
111
|
+
**Minimum source counts** (scale to depth):
|
|
112
|
+
- Quick scan (1-2h): 5-10 sources
|
|
113
|
+
- Standard (4-8h): 15-30 sources
|
|
114
|
+
- Deep dive (2-5d): 50-100+ sources
|
|
115
|
+
|
|
116
|
+
**For major claims**:
|
|
117
|
+
- Require **3+ independent confirmations** from different sources
|
|
118
|
+
- If <3 sources: Lower confidence level or mark as "emerging/unconfirmed"
|
|
119
|
+
|
|
120
|
+
**Handling disagreement**:
|
|
121
|
+
- Document contrary evidence explicitly
|
|
122
|
+
- Describe the nature of disagreement (methodological, contextual, temporal)
|
|
123
|
+
- Don't ignore conflicts - they're valuable information
|
|
124
|
+
|
|
125
|
+
**Confidence calibration**:
|
|
126
|
+
- HIGH: 3+ Very High or High sources, convergent evidence, no significant contrary findings
|
|
127
|
+
- MEDIUM: 2-3 sources, some convergence, minor conflicts or gaps
|
|
128
|
+
- LOW: <2 sources, significant disagreement, or mostly Low evidence level
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Output Format
|
|
133
|
+
|
|
134
|
+
Produce the following artifacts in `work/research/[topic]/`:
|
|
135
|
+
|
|
136
|
+
### 1. Evidence Catalog (`sources/evidence-catalog.md`)
|
|
137
|
+
|
|
138
|
+
For each source:
|
|
139
|
+
|
|
140
|
+
```markdown
|
|
141
|
+
**Source**: [Title + Link]
|
|
142
|
+
- **Type**: Primary/Secondary/Tertiary
|
|
143
|
+
- **Evidence Level**: Very High/High/Medium/Low
|
|
144
|
+
- **Date**: [YYYY-MM-DD or YYYY]
|
|
145
|
+
- **Key Finding**: [One-line takeaway]
|
|
146
|
+
- **Relevance**: [How it answers the question]
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Include summary statistics:
|
|
150
|
+
- Total sources: [N]
|
|
151
|
+
- Evidence distribution: Very High (X%), High (Y%), Medium (Z%), Low (W%)
|
|
152
|
+
- Temporal coverage: [Date range]
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
### 2. Synthesis Document (`synthesis.md`)
|
|
157
|
+
|
|
158
|
+
#### Major Claims (Triangulated)
|
|
159
|
+
|
|
160
|
+
For each significant finding:
|
|
161
|
+
|
|
162
|
+
```markdown
|
|
163
|
+
**Claim [N]**: [Statement of finding]
|
|
164
|
+
|
|
165
|
+
**Confidence**: HIGH/MEDIUM/LOW
|
|
166
|
+
|
|
167
|
+
**Evidence**:
|
|
168
|
+
1. [Source A Title](URL) - [Specific finding]
|
|
169
|
+
2. [Source B Title](URL) - [Specific finding]
|
|
170
|
+
3. [Source C Title](URL) - [Specific finding]
|
|
171
|
+
|
|
172
|
+
**Disagreement**: [Any contrary evidence or "None found"]
|
|
173
|
+
|
|
174
|
+
**Implication**: [What this means for our decision]
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
#### Patterns & Paradigm Shifts
|
|
178
|
+
|
|
179
|
+
Identify recurring themes across sources:
|
|
180
|
+
- What architectural patterns emerge?
|
|
181
|
+
- What trade-offs are commonly discussed?
|
|
182
|
+
- Any paradigm shifts in recent years?
|
|
183
|
+
|
|
184
|
+
#### Gaps & Unknowns
|
|
185
|
+
|
|
186
|
+
Document what you **couldn't** find:
|
|
187
|
+
- Unanswered sub-questions
|
|
188
|
+
- Areas with insufficient evidence
|
|
189
|
+
- Topics requiring deeper investigation
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
### 3. Recommendation (`recommendation.md`)
|
|
194
|
+
|
|
195
|
+
```markdown
|
|
196
|
+
## Recommendation
|
|
197
|
+
|
|
198
|
+
**Decision**: [What we should do - specific and actionable]
|
|
199
|
+
|
|
200
|
+
**Confidence**: HIGH/MEDIUM/LOW
|
|
201
|
+
|
|
202
|
+
**Rationale**: [Why, based on triangulated evidence - reference specific sources]
|
|
203
|
+
|
|
204
|
+
**Trade-offs**: [What we're accepting/sacrificing with this choice]
|
|
205
|
+
|
|
206
|
+
**Risks**: [What could go wrong]
|
|
207
|
+
|
|
208
|
+
**Mitigations**: [How to address the risks]
|
|
209
|
+
|
|
210
|
+
**Alternatives Considered**: [Other options and why not chosen]
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
## Quality Criteria
|
|
216
|
+
|
|
217
|
+
Your research output will be validated against this checklist:
|
|
218
|
+
|
|
219
|
+
**Question & Scope**
|
|
220
|
+
- [ ] Research question is specific and falsifiable
|
|
221
|
+
- [ ] Decision context clearly stated
|
|
222
|
+
- [ ] Scope boundaries defined (what NOT to research)
|
|
223
|
+
|
|
224
|
+
**Evidence Gathering**
|
|
225
|
+
- [ ] Minimum source count met (scaled to depth)
|
|
226
|
+
- [ ] Mix of academic, official, and practitioner sources
|
|
227
|
+
- [ ] Sources include publication/update dates
|
|
228
|
+
- [ ] Evidence catalog complete with all required fields
|
|
229
|
+
|
|
230
|
+
**Rigor & Validation**
|
|
231
|
+
- [ ] Major claims triangulated (3+ sources)
|
|
232
|
+
- [ ] Confidence levels explicitly stated for each claim
|
|
233
|
+
- [ ] Contrary evidence acknowledged (if present)
|
|
234
|
+
- [ ] Gaps and unknowns documented
|
|
235
|
+
|
|
236
|
+
**Actionability**
|
|
237
|
+
- [ ] Recommendation is specific and actionable
|
|
238
|
+
- [ ] Trade-offs explicitly acknowledged
|
|
239
|
+
- [ ] Risks identified with mitigations
|
|
240
|
+
- [ ] Clear link to decision context
|
|
241
|
+
|
|
242
|
+
**Reproducibility**
|
|
243
|
+
- [ ] All sources cited with URLs
|
|
244
|
+
- [ ] Search keywords documented
|
|
245
|
+
- [ ] Tool/model used recorded
|
|
246
|
+
- [ ] Research date recorded
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
## Constraints
|
|
251
|
+
|
|
252
|
+
**Time**: [Specific timebox if applicable - e.g., "4 hours max"]
|
|
253
|
+
|
|
254
|
+
**Focus priorities**: [What to prioritize if time-constrained]
|
|
255
|
+
|
|
256
|
+
**Out of scope**: [What explicitly NOT to research]
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
## Reproducibility Metadata
|
|
261
|
+
|
|
262
|
+
Include in final output (typically in README.md):
|
|
263
|
+
|
|
264
|
+
```markdown
|
|
265
|
+
**Research Metadata**:
|
|
266
|
+
- Tool/model used: [e.g., "perplexity-sonar", "WebSearch", "ddgr + manual synthesis"]
|
|
267
|
+
- Search date: [YYYY-MM-DD]
|
|
268
|
+
- Prompt version: [From frontmatter - currently 1.0]
|
|
269
|
+
- Researcher: [Agent or human name]
|
|
270
|
+
- Total time: [Hours spent]
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
---
|
|
274
|
+
|
|
275
|
+
## Tool Selection Guide
|
|
276
|
+
|
|
277
|
+
Choose research tool based on depth and availability:
|
|
278
|
+
|
|
279
|
+
| Depth | First Choice | Fallback | Always Available |
|
|
280
|
+
|-------|--------------|----------|------------------|
|
|
281
|
+
| Quick scan | `ddgr` | WebSearch | WebSearch |
|
|
282
|
+
| Standard | `llm -m perplexity` | ddgr + synthesis | WebSearch |
|
|
283
|
+
| Deep dive | `llm -m perplexity` | Manual + Task agent | WebSearch + synthesis |
|
|
284
|
+
|
|
285
|
+
**Check availability**:
|
|
286
|
+
```bash
|
|
287
|
+
# ddgr (free, no API key)
|
|
288
|
+
which ddgr
|
|
289
|
+
|
|
290
|
+
# perplexity (requires llm + API key)
|
|
291
|
+
llm models list | grep perplexity
|
|
292
|
+
|
|
293
|
+
# WebSearch (always available)
|
|
294
|
+
# Built-in capability, no check needed
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
---
|
|
298
|
+
|
|
299
|
+
## Example Usage
|
|
300
|
+
|
|
301
|
+
See `examples/tech-stack-evaluation-prompt.md` for a complete example of this template in use.
|
|
302
|
+
|
|
303
|
+
---
|
|
304
|
+
|
|
305
|
+
## References
|
|
306
|
+
|
|
307
|
+
- Research kata: `.raise/katas/tools/rai-research.md`
|
|
308
|
+
- Evidence catalog template: `.raise/templates/tools/evidence-catalog.md`
|
|
309
|
+
- Meta-research on this template: `work/research/ai-research-prompts/`
|
|
310
|
+
|
|
311
|
+
---
|
|
312
|
+
|
|
313
|
+
**Template Version**: 1.0
|
|
314
|
+
**Created**: 2026-01-31
|
|
315
|
+
**Based on**: Meta-research with 20 sources (7 Very High, 8 High, 5 Medium evidence)
|
|
316
|
+
**Last Reviewed**: 2026-01-31
|
|
317
|
+
**Next Review**: 2026-04-30 (quarterly)
|