@precisionutilityguild/liquid-shadow 1.0.4 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/data/migrations/000_baseline.sql +277 -0
- package/dist/entry/cli/index.js +408 -336
- package/dist/entry/mcp/server.js +260 -242
- package/dist/index.js +265 -247
- package/dist/logic/domain/embeddings/worker.js +1 -1
- package/dist/logic/parser/index.js +14 -13
- package/dist/skills/shadow_audit/SKILL.md +40 -0
- package/dist/skills/shadow_chronicle/SKILL.md +40 -0
- package/dist/skills/shadow_continue/SKILL.md +55 -0
- package/dist/skills/shadow_crystallize/SKILL.md +41 -0
- package/dist/skills/shadow_mission/SKILL.md +50 -0
- package/dist/skills/shadow_onboard/SKILL.md +35 -0
- package/dist/skills/shadow_research/SKILL.md +34 -0
- package/dist/skills/shadow_sync/SKILL.md +18 -0
- package/dist/skills/shadow_synthesize/SKILL.md +47 -0
- package/dist/skills/shadow_trace_impact/SKILL.md +55 -0
- package/dist/skills/shadow_understand/SKILL.md +51 -0
- package/dist/skills/shadow_workspace/SKILL.md +30 -0
- package/dist/web-manifest.json +1 -1
- package/package.json +3 -2
- package/skills/shadow_audit/SKILL.md +40 -0
- package/skills/shadow_chronicle/SKILL.md +40 -0
- package/skills/shadow_continue/SKILL.md +55 -0
- package/skills/shadow_crystallize/SKILL.md +41 -0
- package/skills/shadow_mission/SKILL.md +50 -0
- package/skills/shadow_onboard/SKILL.md +35 -0
- package/skills/shadow_research/SKILL.md +34 -0
- package/skills/shadow_sync/SKILL.md +18 -0
- package/skills/shadow_synthesize/SKILL.md +47 -0
- package/skills/shadow_trace_impact/SKILL.md +55 -0
- package/skills/shadow_understand/SKILL.md +51 -0
- package/skills/shadow_workspace/SKILL.md +30 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: synthesize
|
|
3
|
+
description: Distill mission logs into Architectural Decision Records (ADRs) and persist them to the Shadow Engine and Git Notes. Use when completing missions, creating ADRs, synthesizing architectural decisions, or when the user asks about decision records, mission completion, or architectural documentation.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Architectural Synthesis
|
|
7
|
+
|
|
8
|
+
Distill mission logs into an Architectural Decision Record (ADR) and persist it to the Shadow Engine.
|
|
9
|
+
|
|
10
|
+
> **AUTO-PILOT ACTIVE**: Synthesis is **automatically triggered** when a mission status is set to `completed` via `shadow_ops_track`. The system handles: ADR distillation (recursive for child missions), Git Notes persistence, and **cascade parent completion** (if all siblings are done, the parent auto-completes and synthesizes too).
|
|
11
|
+
|
|
12
|
+
## Workflow
|
|
13
|
+
|
|
14
|
+
1. **Complete Mission**: `shadow_ops_track` (missionId, status: "completed", repoPath).
|
|
15
|
+
- The Shadow Engine will automatically:
|
|
16
|
+
- Distill all intent logs (recursive for child missions).
|
|
17
|
+
- Format the ADR using markdown and **Liquid Anchors**.
|
|
18
|
+
- Persist the record to SQLite and **Git Notes**.
|
|
19
|
+
- **Cascade**: If all sibling missions under the same parent are completed, the parent mission auto-completes with its own ADR synthesis.
|
|
20
|
+
2. **Verify**: Check the synthesized record via `shadow_ops_chronicle` (limit: 5, repoPath).
|
|
21
|
+
3. **Manual Synthesis**: Use `shadow_ops_synthesize` only to **re-generate** an existing record or for specific partial distillations.
|
|
22
|
+
4. **Pre-synthesis Compression** (optional): For missions with many raw logs, `shadow_ops_crystallize` (missionId, repoPath) compresses logs into a crystal summary before synthesis for cleaner ADRs.
|
|
23
|
+
|
|
24
|
+
## Precise Tooling
|
|
25
|
+
|
|
26
|
+
| Action | Atomic Tool | Usage |
|
|
27
|
+
| :-------------------- | :--------------------------------------- | :---------------------------------------------- |
|
|
28
|
+
| **Complete & Seal** | `shadow_ops_track` (status: "completed") | **Primary**. Triggers auto-synthesis + cascade. |
|
|
29
|
+
| **Manual Distill** | `shadow_ops_synthesize` | Re-run synthesis manually (re-gen only). |
|
|
30
|
+
| **Crystallize First** | `shadow_ops_crystallize` | Compress raw logs before synthesis. |
|
|
31
|
+
| **View Chronicle** | `shadow_ops_chronicle` | View the combined narrative feed. |
|
|
32
|
+
|
|
33
|
+
_Note: Synthesis consolidation includes all child missions recursively. Cascade parent completion propagates upward through the entire hierarchy._
|
|
34
|
+
|
|
35
|
+
## Cascade Parent Completion
|
|
36
|
+
|
|
37
|
+
When the last child mission under a parent is completed:
|
|
38
|
+
|
|
39
|
+
1. Parent status is set to `completed`
|
|
40
|
+
2. A system intent log records the cascade event
|
|
41
|
+
3. Parent ADR is synthesized (recursive child distillation)
|
|
42
|
+
4. Parent is synced to Git Notes
|
|
43
|
+
5. If the parent itself has a parent, the cascade continues upward
|
|
44
|
+
|
|
45
|
+
## Tooling Strategy
|
|
46
|
+
|
|
47
|
+
Synthesis is the final commit of the mission's logic into the repository's permanent history. Avoid manual markdown files for ADRs; trust the **Git Notes** architecture to preserve the "Story of the Code."
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: trace-impact
|
|
3
|
+
description: Map the blast radius of a change by analyzing impact, flow traces, cross-repo dependencies, and boundary maps. Use when analyzing change impact, assessing risk, tracing dependencies, or when the user asks about change impact, blast radius, or dependency analysis.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Impact Analysis
|
|
7
|
+
|
|
8
|
+
Map the blast radius of a change using the full Shadow analyze toolkit.
|
|
9
|
+
|
|
10
|
+
## 🚀 Workflow
|
|
11
|
+
|
|
12
|
+
1. **Session Context**: `shadow_ops_context` (repoPath) — **ONE CALL** for hologram + chronicle + briefing. Check if symbol is in gravity zones.
|
|
13
|
+
2. **Impact (Blast Radius)**: `shadow_analyze_impact` (symbolName, filePath, depth: 3, repoPath) — ALL affected files.
|
|
14
|
+
3. **Dependencies**:
|
|
15
|
+
- `shadow_analyze_deps` (filePath, direction: "imported_by", repoPath) — Who imports this?
|
|
16
|
+
- `shadow_analyze_deps` (filePath, direction: "imports", repoPath) — What does it import?
|
|
17
|
+
4. **Flow Trace**: `shadow_analyze_flow` (symbolName, filePath, repoPath) — Execution path.
|
|
18
|
+
5. **Health Check**:
|
|
19
|
+
- `shadow_analyze_debt` (mode: "circular-deps", repoPath) — Any import cycles?
|
|
20
|
+
- `shadow_analyze_debt` (mode: "dead-code", limit: 50, repoPath) — Unused exports?
|
|
21
|
+
6. **Cross-Repo Check** (if multi-repo):
|
|
22
|
+
- `shadow_workspace_fuse` (repoPaths, repoPath).
|
|
23
|
+
- `shadow_search_symbol` (query, limit: 50, repoPath).
|
|
24
|
+
7. **Boundary Map**: `shadow_recon_topography` (repoPath) — Layer crossing check.
|
|
25
|
+
8. **Log Risk**: `shadow_ops_log` (missionId, type: "discovery", content, symbolName, repoPath).
|
|
26
|
+
|
|
27
|
+
## 🛠 Precise Tooling
|
|
28
|
+
|
|
29
|
+
| Impact Layer | Atomic Tool |
|
|
30
|
+
| :------------------- | :------------------------------------------------------------------------- |
|
|
31
|
+
| **Session Start** 🚀 | `shadow_ops_context` (repoPath) — **START HERE** for context |
|
|
32
|
+
| **Hologram** | `shadow_recon_hologram` (repoPath) — if you need standalone |
|
|
33
|
+
| **Blast Radius** | `shadow_analyze_impact` (symbolName, depth: 3) |
|
|
34
|
+
| **Dependents** | `shadow_analyze_deps` (filePath, direction: "imported_by") |
|
|
35
|
+
| **Dependencies** | `shadow_analyze_deps` (filePath, direction: "imports") |
|
|
36
|
+
| **Flow Path** | `shadow_analyze_flow` (symbolName, filePath) |
|
|
37
|
+
| **Circular Deps** | `shadow_analyze_debt` (mode: "circular-deps") |
|
|
38
|
+
| **Dead Code** | `shadow_analyze_debt` (mode: "dead-code", **confidenceThreshold: "high"**) |
|
|
39
|
+
| **File Discovery** | `shadow_search_path` (query, **ranked: true**) — gravity-sorted |
|
|
40
|
+
| **Workspace Fuse** | `shadow_workspace_fuse` (repoPaths, repoPath) |
|
|
41
|
+
| **Topography** | `shadow_recon_topography` |
|
|
42
|
+
|
|
43
|
+
## 💡 Intelligence Options
|
|
44
|
+
|
|
45
|
+
- **`shadow_search_path` with `ranked: true`**: Find related files sorted by gravity (high-import files first) with layer classification. Helps identify which affected files are architecturally critical.
|
|
46
|
+
- **`shadow_analyze_debt` confidence levels**: Use `confidenceThreshold: "high"` to focus on likely dead code, avoiding noise from test fixtures and migrations.
|
|
47
|
+
|
|
48
|
+
_Note: **Start with `shadow_ops_context`** for instant gravity zones + architectural context. Use depth higher than 3 for impact analysis only if the symbol is a fundamental primitive (e.g., RepositoryFactory)._
|
|
49
|
+
|
|
50
|
+
## 🛠 Risk Classification
|
|
51
|
+
|
|
52
|
+
- **Critical Risk**: Symbol in gravity zones (top 10) + >20 dependents + crosses layers
|
|
53
|
+
- **High Risk**: >10 dependents OR crosses layers (e.g., Test -> Logic)
|
|
54
|
+
- **Medium Risk**: 5-10 dependents within same layer
|
|
55
|
+
- **Low Risk**: <5 dependents, same layer, no circular deps
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: understand
|
|
3
|
+
description: Find the high-signal path to understanding complex logic through intent retrieval, topological placement, relational analysis, and mechanics inspection. Use when understanding architecture, analyzing complex code, tracing logic flow, or when the user asks about how something works, architectural patterns, or code comprehension.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Architectural Understanding
|
|
7
|
+
|
|
8
|
+
Find the high-signal path to understanding complex logic.
|
|
9
|
+
|
|
10
|
+
## Workflow
|
|
11
|
+
|
|
12
|
+
1. **Session Context (The Fast Lane)**: `shadow_ops_context` (repoPath) — **ONE CALL** returns hologram + chronicle(5) + briefing (relevance-ranked candidates).
|
|
13
|
+
- Skip to step 3 if you have what you need from context alone.
|
|
14
|
+
2. **Optional Expanded Context** (only if shadow_ops_context wasn't enough):
|
|
15
|
+
- `shadow_recon_topography` (repoPath) — Detailed layer breakdown beyond hologram summary.
|
|
16
|
+
- `shadow_recon_tree` (subPath: "src/services", maxDepth: 2, repoPath) — Visual file hierarchy.
|
|
17
|
+
- `shadow_ops_briefing` (scope: "mission", missionId, altitude: "ground") — Full mission detail with raw logs, working set, collisions.
|
|
18
|
+
3. **Relational Analysis (The Who)**:
|
|
19
|
+
- `shadow_analyze_impact` (symbolName, filePath, depth: 3, repoPath) — Blast radius.
|
|
20
|
+
- `shadow_analyze_deps` (filePath, direction: "imported_by", repoPath) — Who depends on this?
|
|
21
|
+
- `shadow_search_concept` (query, repoPath) — Semantic search.
|
|
22
|
+
4. **Mechanics (The How)**:
|
|
23
|
+
- **For Logic**: `shadow_analyze_flow` (symbolName, filePath, repoPath) — Trace execution.
|
|
24
|
+
- **For Objects**: `shadow_inspect_file` (filePath, detailLevel: "signatures", repoPath) — All exports.
|
|
25
|
+
- **For Symbol Deep Dive**: `shadow_inspect_symbol` (symbolName, filePath, context: "full", repoPath) — With deps.
|
|
26
|
+
5. **Synthesis**: `shadow_ops_log` (missionId, type: "discovery", content, symbolName, repoPath).
|
|
27
|
+
|
|
28
|
+
## Precise Tooling
|
|
29
|
+
|
|
30
|
+
| Discovery Layer | Atomic Tool |
|
|
31
|
+
| :----------------- | :------------------------------------------------------------------------------------------------ |
|
|
32
|
+
| **Session Start** | `shadow_ops_context` (repoPath) — **START HERE** |
|
|
33
|
+
| **Hologram** | `shadow_recon_hologram` (repoPath) — if you need standalone hologram |
|
|
34
|
+
| **History** | `shadow_ops_chronicle` (limit: 5) — if you need more than 5 from context |
|
|
35
|
+
| **Layers** | `shadow_recon_topography` — detailed breakdown |
|
|
36
|
+
| **Mission Detail** | `shadow_ops_briefing` (altitude: "ground") — full logs + working set |
|
|
37
|
+
| **Blast Radius** | `shadow_analyze_impact` (symbolName, depth: 3) |
|
|
38
|
+
| **Dependents** | `shadow_analyze_deps` (filePath, direction: "imported_by") |
|
|
39
|
+
| **Flow Trace** | `shadow_analyze_flow` (symbolName, filePath) |
|
|
40
|
+
| **Structure** | `shadow_inspect_file` (detailLevel: "signatures") |
|
|
41
|
+
| **Deep Dive** | `shadow_inspect_symbol` (context: "full") |
|
|
42
|
+
| **File Discovery** | `shadow_search_path` (query, **ranked: true**) — gravity-sorted results with layer classification |
|
|
43
|
+
|
|
44
|
+
_Note: **ALWAYS start with `shadow_ops_context`** for instant architectural context + history + mission state in ONE call. Use `context: "definition"` for token-efficient single symbol inspection._
|
|
45
|
+
|
|
46
|
+
## Intelligence Options
|
|
47
|
+
|
|
48
|
+
- **`shadow_search_path` with `ranked: true`**: Results sorted by gravity (high-import files first) with layer classification (Entry/Logic/Data). Use when you need to find the most architecturally important files matching a pattern.
|
|
49
|
+
- **`shadow_search_concept` with `compact: true`**: Omits code snippets for ~60% token savings. Use for broad exploration before deep dives.
|
|
50
|
+
- **Briefing altitude levels**: Use `orbit` for quick status, `atmosphere` for strategy + crystals, `ground` for raw logs + collisions.
|
|
51
|
+
- **`shadow_ops_crystallize`**: If a mission has excessive raw logs, crystallize them first for leaner briefings.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: workspace
|
|
3
|
+
description: Manage multi-repository workspaces and cross-repo mission links using the Shadow Engine. Use when working with multiple repositories, federated search across repos, linking missions across repos, or when the user asks about workspace management, multi-repo workflows, or cross-repository dependencies.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Workspace Orchestration
|
|
7
|
+
|
|
8
|
+
Manage multi-repository workspaces and cross-repo mission links using the Shadow Engine.
|
|
9
|
+
|
|
10
|
+
## 🚀 Workflow
|
|
11
|
+
|
|
12
|
+
1. **List Workspaces**: `shadow_workspace_list` (repoPath, repoPaths).
|
|
13
|
+
2. **Federated Search**: `shadow_workspace_fuse` (repoPath, repoPaths).
|
|
14
|
+
3. **Link Missions**: `shadow_workspace_link` (parentRepoPath, parentMissionId, childRepoPath, childMissionId, relationship, repoPath).
|
|
15
|
+
4. **Verify Graph**: `shadow_ops_graph` (missionId, depth, repoPath).
|
|
16
|
+
|
|
17
|
+
## 🛠 Precise Tooling
|
|
18
|
+
|
|
19
|
+
| Action | Atomic Tool | Example |
|
|
20
|
+
| :------------ | :---------------------- | :----------------------------------------------- |
|
|
21
|
+
| **List** | `shadow_workspace_list` | `{ repoPath, repoPaths: [...] }` |
|
|
22
|
+
| **Fuse** | `shadow_workspace_fuse` | `{ repoPath, repoPaths: [...] }` |
|
|
23
|
+
| **Link** | `shadow_workspace_link` | `{ parentMissionId: 1, childMissionId: 2, ... }` |
|
|
24
|
+
| **Visualize** | `shadow_ops_graph` | `{ missionId: 1, depth: 3, repoPath }` |
|
|
25
|
+
|
|
26
|
+
_Note: Use fused search after `shadow_workspace_fuse` to look up concepts across all repositories simultaneously._
|
|
27
|
+
|
|
28
|
+
## 🛠 Tooling Strategy
|
|
29
|
+
|
|
30
|
+
Use **`shadow_workspace_fuse`** early in multi-repo sessions to unlock "X-Ray" vision across boundaries.
|
package/dist/web-manifest.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@precisionutilityguild/liquid-shadow",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.5",
|
|
4
4
|
"description": "Tactical Repository Intelligence Operative - Liquid Shadow Ecosystem",
|
|
5
5
|
"homepage": "https://liquidshadow.pugcorp.online/",
|
|
6
6
|
"repository": {
|
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
"registry": "https://registry.npmjs.org/"
|
|
13
13
|
},
|
|
14
14
|
"files": [
|
|
15
|
-
"dist"
|
|
15
|
+
"dist",
|
|
16
|
+
"skills"
|
|
16
17
|
],
|
|
17
18
|
"type": "module",
|
|
18
19
|
"main": "dist/index.js",
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: audit
|
|
3
|
+
description: Perform codebase health audits to identify dead code, circular dependencies, and technical debt. Use when auditing code quality, finding unused code, detecting circular dependencies, or when the user asks about codebase health, technical debt, or code cleanup.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Codebase Audit
|
|
7
|
+
|
|
8
|
+
Comprehensive health audit using Shadow analyze toolkit.
|
|
9
|
+
|
|
10
|
+
## 🚀 Workflow
|
|
11
|
+
|
|
12
|
+
1. **Session Context**: `shadow_ops_context` (repoPath) — **ONE CALL** for hologram + chronicle + briefing. Get architecture baseline.
|
|
13
|
+
2. **Dead Code Detection**: `shadow_analyze_debt` (mode: "dead-code", limit: 100, includeTests: false, repoPath) — Unused exports.
|
|
14
|
+
3. **Circular Dependencies**: `shadow_analyze_debt` (mode: "circular-deps", limit: 20, repoPath) — Import cycles.
|
|
15
|
+
4. **Layer Integrity** (optional): `shadow_recon_topography` (repoPath) — Detailed layer analysis if hologram summary isn't enough.
|
|
16
|
+
5. **Log Findings**: `shadow_ops_log` (missionId, type: "discovery", content, repoPath).
|
|
17
|
+
6. **Create Cleanup Mission** (optional): `shadow_ops_plan` (name: "Codebase Cleanup", templateId: "refactoring", templateVars, repoPath).
|
|
18
|
+
|
|
19
|
+
## 🛠 Precise Tooling
|
|
20
|
+
|
|
21
|
+
| Audit Target | Atomic Tool |
|
|
22
|
+
| :------------------- | :------------------------------------------------------------------------------------- |
|
|
23
|
+
| **Session Start** 🚀 | `shadow_ops_context` (repoPath) — **START HERE** for baseline |
|
|
24
|
+
| **Architecture** | `shadow_recon_hologram` (repoPath) — if you need standalone |
|
|
25
|
+
| **Dead Code** | `shadow_analyze_debt` (mode: "dead-code", limit: 100, **confidenceThreshold: "high"**) |
|
|
26
|
+
| **Circular Deps** | `shadow_analyze_debt` (mode: "circular-deps") |
|
|
27
|
+
| **Layers** | `shadow_recon_topography` — detailed breakdown if needed |
|
|
28
|
+
| **Config Audit** | `shadow_search_config` (kind: "Env", **showUsage: true**) — find orphaned env vars |
|
|
29
|
+
|
|
30
|
+
## 💡 Intelligence Options
|
|
31
|
+
|
|
32
|
+
- **`shadow_analyze_debt` confidence levels**: Use `confidenceThreshold: "high"` for likely dead code, `"medium"` for possibly intentional (test fixtures, etc.), `"all"` for everything.
|
|
33
|
+
- **`shadow_analyze_debt` exclusion filters**: Use `excludePatterns`, `includeMigrations: false`, `includeFixtures: false` to reduce noise.
|
|
34
|
+
- **`shadow_search_config` with `showUsage: true`**: Cross-references config vars with code to show usage counts and identify orphaned vars (defined but never used).
|
|
35
|
+
|
|
36
|
+
## 🔍 Health Criteria
|
|
37
|
+
|
|
38
|
+
- **Critical Issues**: Circular deps in core logic, >50 dead exports, orphaned env vars with secrets
|
|
39
|
+
- **Warning Signs**: Layer violations (Test → Logic), >20 dead exports, >10 orphaned configs
|
|
40
|
+
- **Good Health**: Clean layers, <10 dead exports, no circular deps, all configs in use
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: chronicle
|
|
3
|
+
description: Retrieve and analyze the repository's narrative archive as recorded in Git-native memory. Use when you need to understand historical decisions, catch up on repository progress, review recently completed missions, or when the user asks for a project history, changelog, or chronological overview of architectural changes.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Repository Chronicle
|
|
7
|
+
|
|
8
|
+
Retrieve narrative archive from Git-native memory.
|
|
9
|
+
|
|
10
|
+
## 🚀 Workflow
|
|
11
|
+
|
|
12
|
+
1. **Recent History**: `shadow_ops_chronicle` (limit: 10, format: "markdown", repoPath) — Last 10 entries.
|
|
13
|
+
2. **Time-Filtered**:
|
|
14
|
+
- `shadow_ops_chronicle` (since: <unix>, limit: 20, repoPath)
|
|
15
|
+
- `shadow_ops_chronicle` (until: <unix>, limit: 20, repoPath)
|
|
16
|
+
3. **Structured Data**: `shadow_ops_chronicle` (format: "json", limit: 50, repoPath) — For processing.
|
|
17
|
+
4. **Paginated**: `shadow_ops_chronicle` (limit: 10, offset: 10, repoPath) — Second page.
|
|
18
|
+
|
|
19
|
+
## 🛠 Precise Tooling
|
|
20
|
+
|
|
21
|
+
| Chronicle Query | Atomic Tool |
|
|
22
|
+
| :-------------------- | :---------------------------------------------------------------- |
|
|
23
|
+
| **Recent (Markdown)** | `shadow_ops_chronicle` (limit: 10, format: "markdown") |
|
|
24
|
+
| **Time Range** | `shadow_ops_chronicle` (since: <unix>, until: <unix>) |
|
|
25
|
+
| **JSON Data** | `shadow_ops_chronicle` (format: "json", limit: 50) |
|
|
26
|
+
| **Pagination** | `shadow_ops_chronicle` (limit: 10, offset: 10) |
|
|
27
|
+
|
|
28
|
+
## Output Formats
|
|
29
|
+
|
|
30
|
+
- **`format: "markdown"`** (default): Human-readable narrative feed with missions grouped as Strategic Initiatives and Standalone Episodes
|
|
31
|
+
- **`format: "json"`**: Structured data for programmatic analysis (includes missionId, steps, timestamps, ADRs)
|
|
32
|
+
|
|
33
|
+
## Use Cases
|
|
34
|
+
|
|
35
|
+
- **Onboarding**: Read last 10 entries to catch up
|
|
36
|
+
- **Release Notes**: Get completed missions since last release
|
|
37
|
+
- **ADR Review**: Extract all architectural decisions
|
|
38
|
+
- **Progress Reports**: Show what's been done this week
|
|
39
|
+
|
|
40
|
+
**Note:** Chronicle reads from Git Notes, so it's persistent across branches and clones.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: continue
|
|
3
|
+
description: Get briefing, pick one mission from next_work_candidates, then work that mission to completion with all remaining steps in one run. Use when continuing work on missions, executing mission steps, or when the user asks to continue work, finish a mission, or proceed with development tasks.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
**In one sentence:** Get briefing (+ optional trace), pick **one mission** from **next_work_candidates** (ranked by relevance), then work that mission to completion — all remaining steps in one run. Update and log as you go. No status reports; when you're done with that mission, it's done.
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 1. Context
|
|
11
|
+
|
|
12
|
+
- **Option A (one shot):** `shadow_ops_context` (repoPath) → returns hologram + chronicle(5) + **briefing** (counts, **next_work_candidates** ranked by relevance). Use when you want architecture + history + backlog in one call at the start of /continue.
|
|
13
|
+
- **Option B:** `shadow_ops_briefing` (scope: "project", repoPath) → **next_work_candidates** (relevance-ranked), hierarchy, analytics.
|
|
14
|
+
- Use **altitude** to control output density: `orbit` (~200 tokens, counts + candidates only), `atmosphere` (default, strategy + crystals), `ground` (raw logs + working set + collisions).
|
|
15
|
+
- `shadow_sync_trace` (repoPath) only if you care about external changes. Otherwise skip.
|
|
16
|
+
|
|
17
|
+
## 2. Pick one mission
|
|
18
|
+
|
|
19
|
+
- **`next_work_candidates`** are ranked by the MissionRelevanceScorer (recency × 0.4 + activity × 0.3 + status × 0.2 + blockers × 0.1). Higher score = more relevant.
|
|
20
|
+
- Choose the top-ranked candidate. Prefer in-progress over planned. Parent-only missions (umbrellas) are already filtered out.
|
|
21
|
+
|
|
22
|
+
## 3. Work the whole mission
|
|
23
|
+
|
|
24
|
+
- For that mission, run through **all remaining steps** (not just one):
|
|
25
|
+
- **Surgical Discovery:** `shadow_analyze_flow` (symbolName, filePath, repoPath).
|
|
26
|
+
- **Execute Step**: Set in-progress → implement → `shadow_ops_track` (missionId, stepId, status: "completed", contextPivot, repoPath).
|
|
27
|
+
- **Atomic Logging:** At least once per step. `shadow_ops_log` (missionId, type: "decision", content, symbolName, repoPath).
|
|
28
|
+
- **Seal the mission**: `shadow_ops_track` (missionId, status: "completed", repoPath).
|
|
29
|
+
- This **auto-triggers**: ADR synthesis, Git Notes persistence, and cascade parent completion (if all sibling missions are also done, the parent auto-completes too).
|
|
30
|
+
- No need to call `shadow_ops_synthesize` separately — it's automatic on completion.
|
|
31
|
+
- **Optional — Crystallize** (for long-running missions with many logs): `shadow_ops_crystallize` (missionId, repoPath) compresses raw intent logs into a single crystal summary. Useful mid-mission to keep briefings lean.
|
|
32
|
+
|
|
33
|
+
## 🛠 Precise Tooling
|
|
34
|
+
|
|
35
|
+
| Action | Atomic Tool | Example |
|
|
36
|
+
| :--------------------- | :----------------------- | :------------------------------------------------------- |
|
|
37
|
+
| **Context (one shot)** | `shadow_ops_context` | repoPath — hologram + chronicle + briefing |
|
|
38
|
+
| **Briefing** | `shadow_ops_briefing` | scope: "project", altitude: "orbit", repoPath |
|
|
39
|
+
| **Flow Trace** | `shadow_analyze_flow` | symbolName: "handleRequest", filePath, repoPath |
|
|
40
|
+
| **Step Update** | `shadow_ops_track` | missionId: 4, stepId: "s2", status: "completed" |
|
|
41
|
+
| **Intent Log** | `shadow_ops_log` | missionId: 4, type: "fix", content: "..." |
|
|
42
|
+
| **Complete Mission** | `shadow_ops_track` | missionId: 4, status: "completed" — auto-synthesizes ADR |
|
|
43
|
+
| **Crystallize** | `shadow_ops_crystallize` | missionId: 4 — compress logs mid-mission |
|
|
44
|
+
|
|
45
|
+
_Note: Always use `symbolName` in `shadow_ops_log` to create Liquid Anchors._
|
|
46
|
+
|
|
47
|
+
## 4. Don't
|
|
48
|
+
|
|
49
|
+
- Don't do one step and stop — /continue is "finish a mission," not "do one step."
|
|
50
|
+
- Don't call `shadow_ops_synthesize` after completing — it's automatic on `status: "completed"`.
|
|
51
|
+
- Don't long status reports. Don't ask "what should I work on?" unless a real tie. Don't auto-commit.
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
**Tools:** `shadow_ops_context` (optional start), `shadow_ops_briefing`, `shadow_ops_track`, `shadow_ops_log`, `shadow_ops_crystallize`, `shadow_sync_trace`. For discovery: `shadow_search_*`, `shadow_recon_*`, `shadow_analyze_*`.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: crystallize
|
|
3
|
+
description: Compress a mission's intent logs into a dense crystal summary for token-efficient briefings. Use when a mission has accumulated many raw logs, when briefings are too verbose, or when the user asks about log compression, crystallization, or context reduction.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Intent Log Crystallization
|
|
7
|
+
|
|
8
|
+
Compress raw intent logs into a single crystal summary node. The crystal replaces verbose raw logs in briefings, reducing token usage while preserving the mission's key decisions, context, and consequences.
|
|
9
|
+
|
|
10
|
+
## When to Crystallize
|
|
11
|
+
|
|
12
|
+
- A mission has **10+ raw intent logs** and briefings are getting verbose.
|
|
13
|
+
- Mid-mission, before requesting a detailed briefing — keeps `atmosphere` altitude lean.
|
|
14
|
+
- Before synthesis (optional) — produces cleaner ADRs from compressed input.
|
|
15
|
+
- The briefing at `atmosphere` altitude already prefers crystals over raw logs (`findByMissionPreferCrystal`), so crystallizing makes those briefings significantly leaner.
|
|
16
|
+
|
|
17
|
+
## Workflow
|
|
18
|
+
|
|
19
|
+
1. **Crystallize**: `shadow_ops_crystallize` (missionId, repoPath) — Compresses all raw logs into one crystal node. Raw logs are marked as `absorbed`.
|
|
20
|
+
2. **Verify**: `shadow_ops_briefing` (scope: "mission", missionId, altitude: "atmosphere", repoPath) — Crystal should appear in `recent_activity` instead of raw logs.
|
|
21
|
+
|
|
22
|
+
## Precise Tooling
|
|
23
|
+
|
|
24
|
+
| Action | Atomic Tool | Usage |
|
|
25
|
+
| :--------------- | :--------------------------------------------- | :-------------------------------------- |
|
|
26
|
+
| **Crystallize** | `shadow_ops_crystallize` | missionId, repoPath — compress raw logs |
|
|
27
|
+
| **Check Status** | `shadow_ops_briefing` (altitude: "atmosphere") | Verify crystal appears in activity |
|
|
28
|
+
| **Full Logs** | `shadow_ops_briefing` (altitude: "ground") | Still shows raw logs if needed |
|
|
29
|
+
|
|
30
|
+
## What the Crystal Contains
|
|
31
|
+
|
|
32
|
+
- Mission name and ID
|
|
33
|
+
- Count of compressed logs and symbols
|
|
34
|
+
- Log types present (decision, fix, discovery, blocker)
|
|
35
|
+
- Structured breakdown: decisions, context, consequences, recommendations
|
|
36
|
+
|
|
37
|
+
## Notes
|
|
38
|
+
|
|
39
|
+
- Crystallization is **idempotent**: if no new raw logs exist, it reports `already_crystallized`.
|
|
40
|
+
- New logs added after crystallization remain as raw until the next crystallize call.
|
|
41
|
+
- Raw logs are **not deleted** — they're marked as absorbed. `ground` altitude still shows them.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mission
|
|
3
|
+
description: Define the objective, strategy, and success criteria for a new development mission. Use when planning strategic initiatives, creating missions, setting up development goals, or when the user asks about mission planning, strategic alignment, or outcome contracts.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Mission Strategy & Setup
|
|
7
|
+
|
|
8
|
+
Define the objective, strategy, and success criteria for a new mission. This workflow is for **Strategic Alignment and Planning**.
|
|
9
|
+
|
|
10
|
+
> **IMPORTANT**: This workflow stops at the "Ready to Execute" state. For implementation and automated execution, use **/continue**.
|
|
11
|
+
|
|
12
|
+
## Workflow
|
|
13
|
+
|
|
14
|
+
1. **Session Context**: `shadow_ops_context` (repoPath) — **ONE CALL** for hologram + chronicle(5) + briefing (with relevance-ranked `next_work_candidates`). Check existing candidates and recent decisions before creating new work.
|
|
15
|
+
2. **Optional Expanded Context** (only if needed):
|
|
16
|
+
- `shadow_recon_topography` (repoPath) — Detailed layer breakdown to align goal with architecture.
|
|
17
|
+
- `shadow_ops_chronicle` (limit: 10, repoPath) — More historical ADRs if 5 isn't enough.
|
|
18
|
+
- `shadow_ops_briefing` (scope: "project", altitude: "ground", repoPath) — Full detail with analytics, collisions, and working sets.
|
|
19
|
+
3. **Strategic Plan**: `shadow_ops_plan` (name, goal, outcomeContract, ...).
|
|
20
|
+
- **Strategy DAG**: Define logical steps and verification rules.
|
|
21
|
+
- **Initiative vs Mission**: Decide if this is a parent (Initiative) or a leaf (Mission). Parent missions auto-complete via cascade when all children finish.
|
|
22
|
+
4. **Alignment**: Present the plan to the user. Do not begin execution until the user approves the strategy.
|
|
23
|
+
|
|
24
|
+
## Precise Tooling
|
|
25
|
+
|
|
26
|
+
| Setup Action | Precise Tool Call | Usage |
|
|
27
|
+
| :-------------------- | :----------------------------------------- | :----------------------------------------------------------- |
|
|
28
|
+
| **Session Start** | `shadow_ops_context` | **START HERE** — hologram + chronicle + briefing in one call |
|
|
29
|
+
| **Establish Plan** | `shadow_ops_plan` | Create the mission and strategy. |
|
|
30
|
+
| **Architectural Map** | `shadow_recon_topography` | Contextualize the target layers (if context wasn't enough). |
|
|
31
|
+
| **Detailed Briefing** | `shadow_ops_briefing` (altitude: "ground") | Full analytics, collisions, working sets. |
|
|
32
|
+
| **Lean Briefing** | `shadow_ops_briefing` (altitude: "orbit") | Counts + candidates only (~200 tokens). |
|
|
33
|
+
| **Graph View** | `shadow_ops_graph` | Visualize the initiative's hierarchy. |
|
|
34
|
+
|
|
35
|
+
_Note: **Always start with `shadow_ops_context`** for instant mission landscape + architectural context. Ensure the `outcomeContract` is binary and verifiable. Parent initiatives auto-cascade on child completion — no manual closing needed._
|
|
36
|
+
|
|
37
|
+
## Briefing Altitude Levels
|
|
38
|
+
|
|
39
|
+
- **`orbit`** (~200 tokens): Counts + relevance-ranked candidates only. Use for quick checks.
|
|
40
|
+
- **`atmosphere`** (default): Strategy graphs, crystal summaries, hierarchy, analytics.
|
|
41
|
+
- **`ground`** (full): Raw logs, working sets, collision analysis, ancestor activity.
|
|
42
|
+
|
|
43
|
+
## Intent Logging (Strategic Quality)
|
|
44
|
+
|
|
45
|
+
Capture the "Why" and "How" during the planning phase to ensure the final ADR has architectural depth.
|
|
46
|
+
|
|
47
|
+
- **Decision Logs**: Capture why a specific strategy or library was chosen.
|
|
48
|
+
- **Discovery Logs**: Record insights found during initial reconnaissance.
|
|
49
|
+
|
|
50
|
+
**Hand-off**: Once the mission is planned and logged, the setup phase is over. Execute via `/continue`.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: onboard
|
|
3
|
+
description: Initialize and analyze a new repository for deep intelligence by building semantic index, syncing state, activating git hooks, and establishing missions. Use when onboarding to a new repository, initializing Shadow Engine, setting up git hooks, or when the user asks about repository setup, initialization, or first-time configuration.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Repository Onboarding
|
|
7
|
+
|
|
8
|
+
Initialize and analyze a new repository for deep intelligence.
|
|
9
|
+
|
|
10
|
+
## Workflow
|
|
11
|
+
|
|
12
|
+
1. **Semantic Init**: `shadow_recon_onboard` (repoPath) — **Only run once** per repo to build the baseline. Auto-populates the hologram.
|
|
13
|
+
2. **Read Hologram**: `shadow_recon_hologram` (repoPath) — Get instant architectural context (~1300 tokens: topography + gravity zones).
|
|
14
|
+
3. **Unified Sync**: `shadow_sync_trace` (repoPath) — **The One-Stop Shop**. Performs indexing + ghost analysis + mission re-hydration.
|
|
15
|
+
4. **Active Briefing**: `shadow_ops_briefing` (scope: "project", altitude: "atmosphere", repoPath) — Resumes the shared backlog with relevance-ranked candidates.
|
|
16
|
+
- Use `altitude: "orbit"` for a lean overview (~200 tokens), or `altitude: "ground"` for full detail.
|
|
17
|
+
5. **Architectural Deep Dive** (optional):
|
|
18
|
+
- `shadow_recon_topography` (repoPath) — View layers (Entry/Logic/Data/Utility/Test).
|
|
19
|
+
- `shadow_ops_chronicle` (limit: 5, repoPath) — Narrative feed.
|
|
20
|
+
6. **Hooks Activation**: `shadow_env_hooks` (action: "install", repoPath).
|
|
21
|
+
7. **Establish Mission**: `shadow_ops_plan` (name, goal, repoPath).
|
|
22
|
+
|
|
23
|
+
## Precise Tooling
|
|
24
|
+
|
|
25
|
+
| Action | Atomic Tool |
|
|
26
|
+
| :---------------- | :--------------------------------------------------------------- |
|
|
27
|
+
| **Index** | `shadow_recon_onboard` |
|
|
28
|
+
| **Hologram** | `shadow_recon_hologram` (repoPath) |
|
|
29
|
+
| **Layers** | `shadow_recon_topography` |
|
|
30
|
+
| **History** | `shadow_ops_chronicle` (limit: 10) |
|
|
31
|
+
| **Resume (lean)** | `shadow_ops_briefing` (scope: "project", altitude: "orbit") |
|
|
32
|
+
| **Resume (full)** | `shadow_ops_briefing` (scope: "project", altitude: "atmosphere") |
|
|
33
|
+
| **Hooks** | `shadow_env_hooks` (action: "install") |
|
|
34
|
+
|
|
35
|
+
_Note: Always use absolute paths for `repoPath`. Call `shadow_recon_hologram` immediately after init for instant architectural context._
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: research
|
|
3
|
+
description: Conduct high-signal research for external dependencies by combining local context, web search, and Context7 documentation. Use when researching libraries, checking integration examples, verifying versions, or when the user asks about external dependencies, library documentation, or integration patterns.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# External Research
|
|
7
|
+
|
|
8
|
+
High-signal research for external dependencies.
|
|
9
|
+
|
|
10
|
+
## 🚀 Workflow
|
|
11
|
+
|
|
12
|
+
1. **Local Context**: `shadow_search_concept` (query: "library name", repoPath). Find existing integration examples.
|
|
13
|
+
2. **Web Search**: Use the `WebSearch` tool for official docs and latest versions.
|
|
14
|
+
3. **Deep Intel (Context7)**: resolve-library-id, query-docs (server: user-context7).
|
|
15
|
+
4. **Integration Check**: `shadow_inspect_file` (filePath, detailLevel: "signatures", repoPath).
|
|
16
|
+
5. **Log Findings**: `shadow_ops_log` (type: "discovery", content, repoPath).
|
|
17
|
+
|
|
18
|
+
## 🛠 Precise Tooling
|
|
19
|
+
|
|
20
|
+
| Discovery Layer | Atomic Tool |
|
|
21
|
+
| :----------------- | :-------------------------------------------------------------------------- |
|
|
22
|
+
| **Local Usage** | `shadow_search_concept` (query, **compact: true** for broad search) |
|
|
23
|
+
| **File Discovery** | `shadow_search_path` (query, **ranked: true**) — gravity-sorted with layers |
|
|
24
|
+
| **Config Check** | `shadow_search_config` (key, **showUsage: true**) — with usage counts |
|
|
25
|
+
| **External Docs** | context7 tools (user-context7) |
|
|
26
|
+
| **Relational** | `shadow_analyze_deps` (filePath, direction) |
|
|
27
|
+
|
|
28
|
+
## 💡 Intelligence Options
|
|
29
|
+
|
|
30
|
+
- **`shadow_search_concept` with `compact: true`**: Returns file paths + scores without snippets (~60% token savings). Use for broad exploration.
|
|
31
|
+
- **`shadow_search_path` with `ranked: true`**: Results sorted by gravity (high-import files first) with layer classification. Reveals architecturally important files.
|
|
32
|
+
- **`shadow_search_config` with `showUsage: true`**: Shows usage counts per config var and identifies orphaned vars (defined but never used in code).
|
|
33
|
+
|
|
34
|
+
_Note: Always check `package.json` for the exact version before querying Context7 to ensure documentation alignment._
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sync
|
|
3
|
+
description: Sync index and mission state after external changes. Day-to-day: index + NanoRepair run automatically when MCP tools (search, inspect, etc.) trigger reindex. Use trace after git pull/checkout/merge (or rely on hooks); use index deep:true for full rebuild.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Repository Synchronization
|
|
7
|
+
|
|
8
|
+
**Day-to-day:** Index and NanoRepair run automatically when you use MCP tools (search, inspect, analyze, etc.) and a reindex occurs. No manual sync needed for edits or renames.
|
|
9
|
+
|
|
10
|
+
## When to run sync manually
|
|
11
|
+
|
|
12
|
+
| Situation | Action |
|
|
13
|
+
| :-------------------------------- | :----------------------------------------------------------------- |
|
|
14
|
+
| **After git pull/checkout/merge** | `shadow_sync_trace` (repoPath) — or rely on Git hooks if installed |
|
|
15
|
+
| **Full rebuild (corruption)** | `shadow_sync_index` (repoPath; use deep: true if supported) |
|
|
16
|
+
| **Repair only (rare)** | `shadow_sync_repair` (repoPath) |
|
|
17
|
+
|
|
18
|
+
**Note:** `trace` does index + ghost analysis + NanoRepair + lifecycle + mission re-hydration. Hooks run it on commit/checkout/merge.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: synthesize
|
|
3
|
+
description: Distill mission logs into Architectural Decision Records (ADRs) and persist them to the Shadow Engine and Git Notes. Use when completing missions, creating ADRs, synthesizing architectural decisions, or when the user asks about decision records, mission completion, or architectural documentation.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Architectural Synthesis
|
|
7
|
+
|
|
8
|
+
Distill mission logs into an Architectural Decision Record (ADR) and persist it to the Shadow Engine.
|
|
9
|
+
|
|
10
|
+
> **AUTO-PILOT ACTIVE**: Synthesis is **automatically triggered** when a mission status is set to `completed` via `shadow_ops_track`. The system handles: ADR distillation (recursive for child missions), Git Notes persistence, and **cascade parent completion** (if all siblings are done, the parent auto-completes and synthesizes too).
|
|
11
|
+
|
|
12
|
+
## Workflow
|
|
13
|
+
|
|
14
|
+
1. **Complete Mission**: `shadow_ops_track` (missionId, status: "completed", repoPath).
|
|
15
|
+
- The Shadow Engine will automatically:
|
|
16
|
+
- Distill all intent logs (recursive for child missions).
|
|
17
|
+
- Format the ADR using markdown and **Liquid Anchors**.
|
|
18
|
+
- Persist the record to SQLite and **Git Notes**.
|
|
19
|
+
- **Cascade**: If all sibling missions under the same parent are completed, the parent mission auto-completes with its own ADR synthesis.
|
|
20
|
+
2. **Verify**: Check the synthesized record via `shadow_ops_chronicle` (limit: 5, repoPath).
|
|
21
|
+
3. **Manual Synthesis**: Use `shadow_ops_synthesize` only to **re-generate** an existing record or for specific partial distillations.
|
|
22
|
+
4. **Pre-synthesis Compression** (optional): For missions with many raw logs, `shadow_ops_crystallize` (missionId, repoPath) compresses logs into a crystal summary before synthesis for cleaner ADRs.
|
|
23
|
+
|
|
24
|
+
## Precise Tooling
|
|
25
|
+
|
|
26
|
+
| Action | Atomic Tool | Usage |
|
|
27
|
+
| :-------------------- | :--------------------------------------- | :---------------------------------------------- |
|
|
28
|
+
| **Complete & Seal** | `shadow_ops_track` (status: "completed") | **Primary**. Triggers auto-synthesis + cascade. |
|
|
29
|
+
| **Manual Distill** | `shadow_ops_synthesize` | Re-run synthesis manually (re-gen only). |
|
|
30
|
+
| **Crystallize First** | `shadow_ops_crystallize` | Compress raw logs before synthesis. |
|
|
31
|
+
| **View Chronicle** | `shadow_ops_chronicle` | View the combined narrative feed. |
|
|
32
|
+
|
|
33
|
+
_Note: Synthesis consolidation includes all child missions recursively. Cascade parent completion propagates upward through the entire hierarchy._
|
|
34
|
+
|
|
35
|
+
## Cascade Parent Completion
|
|
36
|
+
|
|
37
|
+
When the last child mission under a parent is completed:
|
|
38
|
+
|
|
39
|
+
1. Parent status is set to `completed`
|
|
40
|
+
2. A system intent log records the cascade event
|
|
41
|
+
3. Parent ADR is synthesized (recursive child distillation)
|
|
42
|
+
4. Parent is synced to Git Notes
|
|
43
|
+
5. If the parent itself has a parent, the cascade continues upward
|
|
44
|
+
|
|
45
|
+
## Tooling Strategy
|
|
46
|
+
|
|
47
|
+
Synthesis is the final commit of the mission's logic into the repository's permanent history. Avoid manual markdown files for ADRs; trust the **Git Notes** architecture to preserve the "Story of the Code."
|