harness-everything 0.2.0 → 0.2.1
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/CHANGELOG.md +7 -0
- package/build-multi-agent-system/SKILL.md +68 -68
- package/create-agent-launcher/SKILL.md +48 -48
- package/docs/workflows/build-multi-agent-system.md +62 -62
- package/docs/workflows/create-agent-launcher.md +62 -62
- package/docs/workflows/environment-detection.md +63 -63
- package/docs/workflows/eval-harness.md +57 -57
- package/docs/workflows/fable-discipline.md +59 -59
- package/docs/workflows/fable-mode.md +32 -32
- package/docs/workflows/git-commit.md +62 -62
- package/docs/workflows/grill-me.md +62 -62
- package/docs/workflows/grill-with-docs.md +62 -62
- package/docs/workflows/improve-codebase-architecture.md +60 -60
- package/docs/workflows/repo-docs.md +59 -59
- package/docs/workflows/rewrite-commits.md +60 -60
- package/docs/workflows/security-review.md +58 -58
- package/docs/workflows/self-evolve.md +59 -59
- package/docs/workflows/tdd.md +39 -39
- package/docs/workflows/todo-driven-workflow.md +36 -36
- package/docs/workflows/using-git-worktrees.md +63 -63
- package/docs/workflows/verification-loop.md +69 -69
- package/docs/workflows/verify-before-claim.md +60 -60
- package/docs/workflows/zoom-out.md +62 -62
- package/environment-detection/SKILL.md +77 -77
- package/eval-framework/behavioral-test.js +105 -105
- package/eval-framework/mechanism-test.js +251 -251
- package/eval-harness/SKILL.md +59 -59
- package/fable-discipline/SKILL.md +38 -38
- package/fable-mode/SKILL.md +51 -51
- package/git-commit/SKILL.md +55 -55
- package/grill-me/SKILL.md +36 -36
- package/grill-with-docs/SKILL.md +99 -99
- package/harness-everything/SKILL.md +141 -141
- package/harness-everything/examples/README.md +9 -9
- package/harness-everything/examples/todo-workflow.md +22 -22
- package/harness-everything/scripts/todo-cli.js +157 -157
- package/harness-everything/scripts/verify-gate.js +31 -31
- package/hooks/scripts/atomic-commit-check.js +68 -68
- package/hooks/scripts/context-compact.js +114 -114
- package/hooks/scripts/lib/harness-state.js +29 -3
- package/hooks/scripts/lib/platforms/claude.js +42 -42
- package/hooks/scripts/lib/platforms/codex.js +46 -46
- package/hooks/scripts/lib/platforms/continue.js +41 -41
- package/hooks/scripts/lib/platforms/copilot.js +41 -41
- package/hooks/scripts/lib/platforms/cursor.js +41 -41
- package/hooks/scripts/rule-of-3.js +176 -176
- package/improve-codebase-architecture/SKILL.md +44 -44
- package/install-cognitive-os/SKILL.md +95 -95
- package/package.json +1 -1
- package/repo-docs/SKILL.md +45 -45
- package/rewrite-commits/SKILL.md +32 -32
- package/scripts/installer.js +649 -649
- package/scripts/lib/advisory-text.js +163 -163
- package/scripts/lib/claude-hooks.js +71 -71
- package/scripts/lib/gitignore.js +80 -58
- package/scripts/lib/manifest.js +82 -82
- package/scripts/lib/prompts.js +241 -241
- package/scripts/lib/skills.js +172 -172
- package/scripts/lib/workspace.js +28 -28
- package/security-review/SKILL.md +510 -510
- package/self-evolve/SKILL.md +54 -54
- package/skill-creator/SKILL.md +91 -91
- package/skill-creator/references/testing-workflow.md +32 -32
- package/skill-style/SKILL.md +48 -48
- package/tdd/SKILL.md +53 -53
- package/todo-driven-workflow/SKILL.md +54 -54
- package/using-git-worktrees/SKILL.md +161 -161
- package/verification-loop/SKILL.md +138 -138
- package/verify-before-claim/SKILL.md +86 -86
- package/zoom-out/SKILL.md +90 -90
|
@@ -1,38 +1,38 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: fable-discipline
|
|
3
|
-
description: Shadow guard for fable-mode to prevent context bloat and maintain physical boundaries.
|
|
4
|
-
author: Miya Daniel | Harness Core Team
|
|
5
|
-
version: 0.2.0
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Fable Discipline (Macro Task Discipline & Safety Net)
|
|
9
|
-
|
|
10
|
-
## 📋 Skill Contract
|
|
11
|
-
|
|
12
|
-
| Component | Specification |
|
|
13
|
-
| :--- | :--- |
|
|
14
|
-
| **Trigger / Input** | Runs continuously in the background for the entire duration `fable-mode` is active — not a standalone, one-shot trigger. |
|
|
15
|
-
| **Expected Output** | Periodic state compaction after each milestone; one Git commit per independently functioning logic block; a state manifest handed off between sub-agents at every handoff point. |
|
|
16
|
-
| **State Mutations** | None of its own — it constrains how `fable-mode` and `create-agent-launcher` mutate state (commit cadence, handoff manifests, read-size limits). |
|
|
17
|
-
| **Enforcement Gate** | **HALTS execution immediately** (not a retry) if build errors show a divergent trend (more fixes → more breakage), and forces `zoom-out` instead of continued patching. |
|
|
18
|
-
|
|
19
|
-
This skill acts as the shadow guard for `fable-mode`. As long as `fable-mode` is active, this skill MUST run in the background to prevent large tasks from spiraling out of control.
|
|
20
|
-
|
|
21
|
-
## 1. Anti-Context Bloat Defense
|
|
22
|
-
When executing large architectural tasks, conversation logs expand rapidly, leading to model attention loss (hallucinations or forgetting the original intent).
|
|
23
|
-
- **Strategic Compact**: After completing each core milestone, forcefully summarize the current state and decisions, discarding unnecessary past conversation details.
|
|
24
|
-
- **Avoid Broad Reads**: Prohibited from using broad Regex searches without precise conditions or reading irrelevant files over 1000 lines.
|
|
25
|
-
|
|
26
|
-
## 2. Strict Physical Boundaries
|
|
27
|
-
- **Environment Isolation**: Before modifying any core architecture, ensure you are clearly aware of the Current Working Directory (CWD).
|
|
28
|
-
- **Atomic Commits**: You are NOT allowed to modify dozens of files at once before testing. For every independently functioning logic block completed, advise the human to create a Git Commit as a safe save point.
|
|
29
|
-
|
|
30
|
-
## 3. Agent Handoff Protocol
|
|
31
|
-
When `fable-mode` spawns and switches between different sub-agents via `create-agent-launcher`, strict handoff discipline must be observed:
|
|
32
|
-
- **State Manifest**: The previous agent MUST leave a clear state record (e.g., what APIs were completed, expected inputs/outputs).
|
|
33
|
-
- **Contract Testing**: The very first step for the succeeding agent is to verify if the state manifest left by the previous agent is correct.
|
|
34
|
-
|
|
35
|
-
## 4. Ultimate Circuit Breaker: Indefinite Halt
|
|
36
|
-
- Large tasks easily generate the sunk cost fallacy of "I think it's almost fixed, let me try one more time."
|
|
37
|
-
- If the system's Build Errors exhibit a divergent trend (the more you fix, the more it breaks), **HALT EXECUTION IMMEDIATELY**.
|
|
38
|
-
- Call `zoom-out`, organize the error dependency graph for the human, and seek architectural-level refactoring advice.
|
|
1
|
+
---
|
|
2
|
+
name: fable-discipline
|
|
3
|
+
description: Shadow guard for fable-mode to prevent context bloat and maintain physical boundaries.
|
|
4
|
+
author: Miya Daniel | Harness Core Team
|
|
5
|
+
version: 0.2.0
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Fable Discipline (Macro Task Discipline & Safety Net)
|
|
9
|
+
|
|
10
|
+
## 📋 Skill Contract
|
|
11
|
+
|
|
12
|
+
| Component | Specification |
|
|
13
|
+
| :--- | :--- |
|
|
14
|
+
| **Trigger / Input** | Runs continuously in the background for the entire duration `fable-mode` is active — not a standalone, one-shot trigger. |
|
|
15
|
+
| **Expected Output** | Periodic state compaction after each milestone; one Git commit per independently functioning logic block; a state manifest handed off between sub-agents at every handoff point. |
|
|
16
|
+
| **State Mutations** | None of its own — it constrains how `fable-mode` and `create-agent-launcher` mutate state (commit cadence, handoff manifests, read-size limits). |
|
|
17
|
+
| **Enforcement Gate** | **HALTS execution immediately** (not a retry) if build errors show a divergent trend (more fixes → more breakage), and forces `zoom-out` instead of continued patching. |
|
|
18
|
+
|
|
19
|
+
This skill acts as the shadow guard for `fable-mode`. As long as `fable-mode` is active, this skill MUST run in the background to prevent large tasks from spiraling out of control.
|
|
20
|
+
|
|
21
|
+
## 1. Anti-Context Bloat Defense
|
|
22
|
+
When executing large architectural tasks, conversation logs expand rapidly, leading to model attention loss (hallucinations or forgetting the original intent).
|
|
23
|
+
- **Strategic Compact**: After completing each core milestone, forcefully summarize the current state and decisions, discarding unnecessary past conversation details.
|
|
24
|
+
- **Avoid Broad Reads**: Prohibited from using broad Regex searches without precise conditions or reading irrelevant files over 1000 lines.
|
|
25
|
+
|
|
26
|
+
## 2. Strict Physical Boundaries
|
|
27
|
+
- **Environment Isolation**: Before modifying any core architecture, ensure you are clearly aware of the Current Working Directory (CWD).
|
|
28
|
+
- **Atomic Commits**: You are NOT allowed to modify dozens of files at once before testing. For every independently functioning logic block completed, advise the human to create a Git Commit as a safe save point.
|
|
29
|
+
|
|
30
|
+
## 3. Agent Handoff Protocol
|
|
31
|
+
When `fable-mode` spawns and switches between different sub-agents via `create-agent-launcher`, strict handoff discipline must be observed:
|
|
32
|
+
- **State Manifest**: The previous agent MUST leave a clear state record (e.g., what APIs were completed, expected inputs/outputs).
|
|
33
|
+
- **Contract Testing**: The very first step for the succeeding agent is to verify if the state manifest left by the previous agent is correct.
|
|
34
|
+
|
|
35
|
+
## 4. Ultimate Circuit Breaker: Indefinite Halt
|
|
36
|
+
- Large tasks easily generate the sunk cost fallacy of "I think it's almost fixed, let me try one more time."
|
|
37
|
+
- If the system's Build Errors exhibit a divergent trend (the more you fix, the more it breaks), **HALT EXECUTION IMMEDIATELY**.
|
|
38
|
+
- Call `zoom-out`, organize the error dependency graph for the human, and seek architectural-level refactoring advice.
|
package/fable-mode/SKILL.md
CHANGED
|
@@ -1,51 +1,51 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: fable-mode
|
|
3
|
-
description: Macro task planning and execution engine for complex requirements and low-level architecture changes.
|
|
4
|
-
author: Miya Daniel | Harness Core Team
|
|
5
|
-
version: 0.2.0
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Fable Mode (Macro Task Planning & Execution Engine)
|
|
9
|
-
|
|
10
|
-
## 📋 Skill Contract
|
|
11
|
-
|
|
12
|
-
| Component | Specification |
|
|
13
|
-
| :--- | :--- |
|
|
14
|
-
| **Trigger / Input** | Tier 3 Task classification. Input: Massive architectural requirement or module creation. |
|
|
15
|
-
| **Expected Output** | 1. Documented architectural plan. 2. A sequence of subagent handoffs (`create-agent-launcher`). 3. System integration verified by terminal scripts. |
|
|
16
|
-
| **State Mutations** | 1. Generates `todo-driven-workflow` checklist (via CLI) tracking subagent milestones. 2. `subagent-scope-state.json` updates during handoffs. |
|
|
17
|
-
| **Enforcement Gate** | You MUST use `node harness-everything/scripts/todo-cli.js` to track milestones. You MUST run system tests (`verify-gate.js` or equivalent) after EACH subagent returns before moving to the next. |
|
|
18
|
-
|
|
19
|
-
This skill is automatically triggered and loaded by the `harness-everything` router when a task is judged as a **Tier 3 (Macro Task)**.
|
|
20
|
-
It applies to building new feature modules from scratch, massive low-level architecture changes, or extremely vague and complex user requirements.
|
|
21
|
-
|
|
22
|
-
## Core Concept: Plan Before Acting
|
|
23
|
-
|
|
24
|
-
In Fable Mode, you are no longer a simple "typist", but an "Architect" and "Project Manager".
|
|
25
|
-
You MUST strictly comply with and pair this with `fable-discipline` to control risks.
|
|
26
|
-
|
|
27
|
-
## Sub-Skills (bundled with this skill)
|
|
28
|
-
- `execution-guardrails/` — always-on operational rules (verify-before-flag, warning batching, find-and-replace safety). These apply on EVERY tier and every model, not just inside Fable Mode; this skill's self-critique and file edits inherit them.
|
|
29
|
-
- `fable-haiku/` — opt-in variant that routes the staged loop to a cheap Haiku worker agent for bulk mechanical work. Only use when the user explicitly asks for it.
|
|
30
|
-
|
|
31
|
-
## Execution Phases:
|
|
32
|
-
|
|
33
|
-
### 1. Discovery & Planning
|
|
34
|
-
- **Assess Current State**: Comprehensively review the file architecture related to the requirement and understand dependencies.
|
|
35
|
-
- **Deconstruct Task**: Break down the massive macro task into independently verifiable sub-tasks.
|
|
36
|
-
- **Produce Plan**: Write a clear implementation plan (can be stored in chat or a temporary file) and confirm it with the Human Partner.
|
|
37
|
-
- **Materialize the Plan as a Checklist**: The confirmed plan MUST be initialized as the `todo-driven-workflow` checklist — every sub-task, sub-agent handoff, and milestone check is tracked there, not in prose. This is the harness's base execution loop.
|
|
38
|
-
|
|
39
|
-
### 2. Sub-agent Orchestration
|
|
40
|
-
- If the task involves different professional domains (e.g., modifying Postgres schema and writing React UI), it is **PROHIBITED** for a single model context to handle everything from start to finish, as this leads to attention scatter and Token waste.
|
|
41
|
-
- **Mandatory Call**: Invoke the `create-agent-launcher` skill.
|
|
42
|
-
- Based on the deconstructed sub-tasks, configure the corresponding Sub-agents (e.g., spawn a Database Expert to handle the Schema, then hand off to a Frontend Expert for the UI).
|
|
43
|
-
|
|
44
|
-
### 3. Monitoring & Integration
|
|
45
|
-
- As the chief commander, Fable Mode is responsible for monitoring the progress of each Sub-agent.
|
|
46
|
-
- Ensure the outputs of various sub-agents can integrate perfectly.
|
|
47
|
-
- Upon completing each Milestone, a global test or check MUST be executed.
|
|
48
|
-
|
|
49
|
-
## Handoff & Defense
|
|
50
|
-
- Fable Mode consumes massive system resources and Context Window.
|
|
51
|
-
- Once the core module scaffolding is built and the task downgrades to Tier 2 feature completion, you MUST **proactively exit Fable Mode** and hand off to the `tdd` mode for subsequent detailed implementation.
|
|
1
|
+
---
|
|
2
|
+
name: fable-mode
|
|
3
|
+
description: Macro task planning and execution engine for complex requirements and low-level architecture changes.
|
|
4
|
+
author: Miya Daniel | Harness Core Team
|
|
5
|
+
version: 0.2.0
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Fable Mode (Macro Task Planning & Execution Engine)
|
|
9
|
+
|
|
10
|
+
## 📋 Skill Contract
|
|
11
|
+
|
|
12
|
+
| Component | Specification |
|
|
13
|
+
| :--- | :--- |
|
|
14
|
+
| **Trigger / Input** | Tier 3 Task classification. Input: Massive architectural requirement or module creation. |
|
|
15
|
+
| **Expected Output** | 1. Documented architectural plan. 2. A sequence of subagent handoffs (`create-agent-launcher`). 3. System integration verified by terminal scripts. |
|
|
16
|
+
| **State Mutations** | 1. Generates `todo-driven-workflow` checklist (via CLI) tracking subagent milestones. 2. `subagent-scope-state.json` updates during handoffs. |
|
|
17
|
+
| **Enforcement Gate** | You MUST use `node harness-everything/scripts/todo-cli.js` to track milestones. You MUST run system tests (`verify-gate.js` or equivalent) after EACH subagent returns before moving to the next. |
|
|
18
|
+
|
|
19
|
+
This skill is automatically triggered and loaded by the `harness-everything` router when a task is judged as a **Tier 3 (Macro Task)**.
|
|
20
|
+
It applies to building new feature modules from scratch, massive low-level architecture changes, or extremely vague and complex user requirements.
|
|
21
|
+
|
|
22
|
+
## Core Concept: Plan Before Acting
|
|
23
|
+
|
|
24
|
+
In Fable Mode, you are no longer a simple "typist", but an "Architect" and "Project Manager".
|
|
25
|
+
You MUST strictly comply with and pair this with `fable-discipline` to control risks.
|
|
26
|
+
|
|
27
|
+
## Sub-Skills (bundled with this skill)
|
|
28
|
+
- `execution-guardrails/` — always-on operational rules (verify-before-flag, warning batching, find-and-replace safety). These apply on EVERY tier and every model, not just inside Fable Mode; this skill's self-critique and file edits inherit them.
|
|
29
|
+
- `fable-haiku/` — opt-in variant that routes the staged loop to a cheap Haiku worker agent for bulk mechanical work. Only use when the user explicitly asks for it.
|
|
30
|
+
|
|
31
|
+
## Execution Phases:
|
|
32
|
+
|
|
33
|
+
### 1. Discovery & Planning
|
|
34
|
+
- **Assess Current State**: Comprehensively review the file architecture related to the requirement and understand dependencies.
|
|
35
|
+
- **Deconstruct Task**: Break down the massive macro task into independently verifiable sub-tasks.
|
|
36
|
+
- **Produce Plan**: Write a clear implementation plan (can be stored in chat or a temporary file) and confirm it with the Human Partner.
|
|
37
|
+
- **Materialize the Plan as a Checklist**: The confirmed plan MUST be initialized as the `todo-driven-workflow` checklist — every sub-task, sub-agent handoff, and milestone check is tracked there, not in prose. This is the harness's base execution loop.
|
|
38
|
+
|
|
39
|
+
### 2. Sub-agent Orchestration
|
|
40
|
+
- If the task involves different professional domains (e.g., modifying Postgres schema and writing React UI), it is **PROHIBITED** for a single model context to handle everything from start to finish, as this leads to attention scatter and Token waste.
|
|
41
|
+
- **Mandatory Call**: Invoke the `create-agent-launcher` skill.
|
|
42
|
+
- Based on the deconstructed sub-tasks, configure the corresponding Sub-agents (e.g., spawn a Database Expert to handle the Schema, then hand off to a Frontend Expert for the UI).
|
|
43
|
+
|
|
44
|
+
### 3. Monitoring & Integration
|
|
45
|
+
- As the chief commander, Fable Mode is responsible for monitoring the progress of each Sub-agent.
|
|
46
|
+
- Ensure the outputs of various sub-agents can integrate perfectly.
|
|
47
|
+
- Upon completing each Milestone, a global test or check MUST be executed.
|
|
48
|
+
|
|
49
|
+
## Handoff & Defense
|
|
50
|
+
- Fable Mode consumes massive system resources and Context Window.
|
|
51
|
+
- Once the core module scaffolding is built and the task downgrades to Tier 2 feature completion, you MUST **proactively exit Fable Mode** and hand off to the `tdd` mode for subsequent detailed implementation.
|
package/git-commit/SKILL.md
CHANGED
|
@@ -1,55 +1,55 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: git-commit
|
|
3
|
-
description: Generates Angular-style commit messages after verifying the environment and staged files.
|
|
4
|
-
author: Miya Daniel | Harness Core Team
|
|
5
|
-
version: 0.2.0
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Git Commit (Angular Style)
|
|
9
|
-
|
|
10
|
-
## 📋 Skill Contract
|
|
11
|
-
|
|
12
|
-
| Component | Specification |
|
|
13
|
-
| :--- | :--- |
|
|
14
|
-
| **Trigger / Input** | User explicitly requests a commit, or a task phase concludes. Input: Staged git diff. |
|
|
15
|
-
| **Expected Output** | Execution of `git commit -m "..."`. |
|
|
16
|
-
| **State Mutations** | Git tree is updated. Workspace becomes clean. |
|
|
17
|
-
| **Enforcement Gate** | You MUST run `git status`. If there are no staged files, the terminal will exit 1 when you try to commit, or you MUST ask the user before staging. |
|
|
18
|
-
|
|
19
|
-
This skill is automatically triggered by the `harness-everything` router upon task completion or when the user explicitly requests "commit" or "save changes".
|
|
20
|
-
|
|
21
|
-
## 1. Triggers
|
|
22
|
-
- The final step of the TDD cycle (after Refactor is completed).
|
|
23
|
-
- Sub-task milestones within `fable-mode`.
|
|
24
|
-
- The user explicitly issues commands like "commit", "save changes", "git commit".
|
|
25
|
-
|
|
26
|
-
## 2. Environment Discovery & Prerequisite Defense `[Discover]`
|
|
27
|
-
Before generating a commit message, you **MUST** execute the following discovery:
|
|
28
|
-
- Run `git status` to check which files are staged or modified.
|
|
29
|
-
- **Circuit Breaker**: If no files are staged, ask the user if they want to stage the currently modified files; fabricating commit messages out of thin air is PROHIBITED.
|
|
30
|
-
- Check if working within a Submodule. If so, you MUST handle commits for the Main Repo and Sub Repo separately.
|
|
31
|
-
|
|
32
|
-
## 3. Master Routing Workflow (Order of Operations)
|
|
33
|
-
When both the Main Repo and any Submodules have changes, you **MUST** prioritize and process Submodule changes first. Strictly follow this execution order:
|
|
34
|
-
1. **Detect Submodule Changes First**: Before processing the Main Repo, you MUST check if any submodules have changes (staged or unstaged).
|
|
35
|
-
2. **Prioritize Submodule Commits**: If any submodules have changes, you MUST halt Main Repo commit generation immediately. Run `git-commit/guides/SUBMODULES.md` first to commit all submodule changes and update their pointers in the Main Repo.
|
|
36
|
-
3. **Stage Submodule Pointers in Main Repo**: Ensure that updated submodule pointers are added (`git add <submodule_path>`) to the Main Repo staging area before generating the Main Repo commit.
|
|
37
|
-
4. **Execute Main Repo Commit Last**: Once all submodules are fully clean and their new pointers are staged in the Main Repo, you may then proceed with `git-commit/guides/MAIN_REPO.md` to commit the Main Repo changes.
|
|
38
|
-
|
|
39
|
-
## 4. Commit Generation Discipline (Angular Style)
|
|
40
|
-
- Strictly follow the format: `<type>(<scope>): <subject>`.
|
|
41
|
-
- **Type**: `feat`, `fix`, `refactor`, `docs`, `test`, `chore`, `perf`, `ci`.
|
|
42
|
-
- **Subject**: Short and concise, use the imperative, present tense (e.g., "add user auth", not "added user auth"), no capitalized first letter, no dot (.) at the end.
|
|
43
|
-
- **Body (if necessary)**: Explain "why" this change was made and the "root cause of the problem", and MUST include a clear, structured bulleted list detailing the exact modified parts (such as files, functions, or logical adjustments) extracted from the `git diff --cached` analysis.
|
|
44
|
-
|
|
45
|
-
## 5. Execution and Handoff `[Try] & [Summarize]`
|
|
46
|
-
- After confirming the commit message, call the terminal tool to execute `git commit -m "..." -m "..."`.
|
|
47
|
-
- Upon success, if still within the `fable-mode` workflow, hand control back to `fable-mode` to continue to the next milestone.
|
|
48
|
-
|
|
49
|
-
## Deep Reference Guides
|
|
50
|
-
For comprehensive details on commit rules and submodule configurations, refer to:
|
|
51
|
-
- `git-commit/guides/ANGULAR_STYLE.md` — Complete specification for commit messages
|
|
52
|
-
- `git-commit/guides/COMMIT_GENERATION.md` — Generation patterns and strategies
|
|
53
|
-
- `git-commit/guides/LANGUAGE_DETECTION.md` — Language-specific commit guidelines
|
|
54
|
-
- `git-commit/guides/MAIN_REPO.md` — Committing within monorepos/main repo contexts
|
|
55
|
-
- `git-commit/guides/SUBMODULES.md` — Advanced handling of submodules and nested repos
|
|
1
|
+
---
|
|
2
|
+
name: git-commit
|
|
3
|
+
description: Generates Angular-style commit messages after verifying the environment and staged files.
|
|
4
|
+
author: Miya Daniel | Harness Core Team
|
|
5
|
+
version: 0.2.0
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Git Commit (Angular Style)
|
|
9
|
+
|
|
10
|
+
## 📋 Skill Contract
|
|
11
|
+
|
|
12
|
+
| Component | Specification |
|
|
13
|
+
| :--- | :--- |
|
|
14
|
+
| **Trigger / Input** | User explicitly requests a commit, or a task phase concludes. Input: Staged git diff. |
|
|
15
|
+
| **Expected Output** | Execution of `git commit -m "..."`. |
|
|
16
|
+
| **State Mutations** | Git tree is updated. Workspace becomes clean. |
|
|
17
|
+
| **Enforcement Gate** | You MUST run `git status`. If there are no staged files, the terminal will exit 1 when you try to commit, or you MUST ask the user before staging. |
|
|
18
|
+
|
|
19
|
+
This skill is automatically triggered by the `harness-everything` router upon task completion or when the user explicitly requests "commit" or "save changes".
|
|
20
|
+
|
|
21
|
+
## 1. Triggers
|
|
22
|
+
- The final step of the TDD cycle (after Refactor is completed).
|
|
23
|
+
- Sub-task milestones within `fable-mode`.
|
|
24
|
+
- The user explicitly issues commands like "commit", "save changes", "git commit".
|
|
25
|
+
|
|
26
|
+
## 2. Environment Discovery & Prerequisite Defense `[Discover]`
|
|
27
|
+
Before generating a commit message, you **MUST** execute the following discovery:
|
|
28
|
+
- Run `git status` to check which files are staged or modified.
|
|
29
|
+
- **Circuit Breaker**: If no files are staged, ask the user if they want to stage the currently modified files; fabricating commit messages out of thin air is PROHIBITED.
|
|
30
|
+
- Check if working within a Submodule. If so, you MUST handle commits for the Main Repo and Sub Repo separately.
|
|
31
|
+
|
|
32
|
+
## 3. Master Routing Workflow (Order of Operations)
|
|
33
|
+
When both the Main Repo and any Submodules have changes, you **MUST** prioritize and process Submodule changes first. Strictly follow this execution order:
|
|
34
|
+
1. **Detect Submodule Changes First**: Before processing the Main Repo, you MUST check if any submodules have changes (staged or unstaged).
|
|
35
|
+
2. **Prioritize Submodule Commits**: If any submodules have changes, you MUST halt Main Repo commit generation immediately. Run `git-commit/guides/SUBMODULES.md` first to commit all submodule changes and update their pointers in the Main Repo.
|
|
36
|
+
3. **Stage Submodule Pointers in Main Repo**: Ensure that updated submodule pointers are added (`git add <submodule_path>`) to the Main Repo staging area before generating the Main Repo commit.
|
|
37
|
+
4. **Execute Main Repo Commit Last**: Once all submodules are fully clean and their new pointers are staged in the Main Repo, you may then proceed with `git-commit/guides/MAIN_REPO.md` to commit the Main Repo changes.
|
|
38
|
+
|
|
39
|
+
## 4. Commit Generation Discipline (Angular Style)
|
|
40
|
+
- Strictly follow the format: `<type>(<scope>): <subject>`.
|
|
41
|
+
- **Type**: `feat`, `fix`, `refactor`, `docs`, `test`, `chore`, `perf`, `ci`.
|
|
42
|
+
- **Subject**: Short and concise, use the imperative, present tense (e.g., "add user auth", not "added user auth"), no capitalized first letter, no dot (.) at the end.
|
|
43
|
+
- **Body (if necessary)**: Explain "why" this change was made and the "root cause of the problem", and MUST include a clear, structured bulleted list detailing the exact modified parts (such as files, functions, or logical adjustments) extracted from the `git diff --cached` analysis.
|
|
44
|
+
|
|
45
|
+
## 5. Execution and Handoff `[Try] & [Summarize]`
|
|
46
|
+
- After confirming the commit message, call the terminal tool to execute `git commit -m "..." -m "..."`.
|
|
47
|
+
- Upon success, if still within the `fable-mode` workflow, hand control back to `fable-mode` to continue to the next milestone.
|
|
48
|
+
|
|
49
|
+
## Deep Reference Guides
|
|
50
|
+
For comprehensive details on commit rules and submodule configurations, refer to:
|
|
51
|
+
- `git-commit/guides/ANGULAR_STYLE.md` — Complete specification for commit messages
|
|
52
|
+
- `git-commit/guides/COMMIT_GENERATION.md` — Generation patterns and strategies
|
|
53
|
+
- `git-commit/guides/LANGUAGE_DETECTION.md` — Language-specific commit guidelines
|
|
54
|
+
- `git-commit/guides/MAIN_REPO.md` — Committing within monorepos/main repo contexts
|
|
55
|
+
- `git-commit/guides/SUBMODULES.md` — Advanced handling of submodules and nested repos
|
package/grill-me/SKILL.md
CHANGED
|
@@ -1,36 +1,36 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: grill-me
|
|
3
|
-
description: Acts as a relentless challenger to stress-test plans, find loopholes, combat AI sycophancy, and ensure real-time documentation updates.
|
|
4
|
-
author: Miya Daniel | Harness Core Team
|
|
5
|
-
version: 0.2.0
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Grill Me (Interrogation & Stress Testing)
|
|
9
|
-
|
|
10
|
-
## 📋 Skill Contract
|
|
11
|
-
|
|
12
|
-
| Component | Specification |
|
|
13
|
-
| :--- | :--- |
|
|
14
|
-
| **Trigger / Input** | User proposes a vague plan, asks to "evaluate architecture", or explicitly says "grill me" / "grill with docs". |
|
|
15
|
-
| **Expected Output** | A single-question-at-a-time interrogation loop that resolves every branch of the plan's decision tree, ending in a documented shared understanding. |
|
|
16
|
-
| **State Mutations** | Updates or generates ADR / `CONTEXT.md`-style docs inline as each blind spot is resolved. |
|
|
17
|
-
| **Enforcement Gate** | **MUST** ask exactly one question at a time (listing multiple questions at once is prohibited); **MUST NOT** exit until all decision-tree branches are resolved and documented, then **MUST** hand off to `fable-mode` or `tdd` via `harness-everything`. |
|
|
18
|
-
|
|
19
|
-
This skill is designed to combat the AI's "Sycophantic" personality and ensure Documentation as Code.
|
|
20
|
-
Triggered when the user proposes a vague plan, asks to "evaluate architecture", or explicitly inputs "grill me" or "grill with docs".
|
|
21
|
-
|
|
22
|
-
## 1. Persona: The Relentless Challenger
|
|
23
|
-
When this skill is activated, you are no longer an obedient assistant, but a **strict Senior Architect**.
|
|
24
|
-
Your goal is to find loopholes, undefined boundary conditions, and potential performance bottlenecks in the human's plan, while maintaining strict adherence to existing domain models.
|
|
25
|
-
|
|
26
|
-
## 2. The Grilling Loop
|
|
27
|
-
- **Environment Discovery `[Discover]`**: First, use `read_file` to scan the core code related to the plan. Also read `CONTEXT.md`, `README.md`, or any ADRs under `docs/adr/`.
|
|
28
|
-
- **Domain Language**: Your grilling MUST be based on the domain model and terminology of the project. If the user uses inconsistent terminology, correct them.
|
|
29
|
-
- **Rule of Single Question**: **You MUST only ask one question at a time**. Listing a long questionnaire with 5 questions is STRICTLY PROHIBITED.
|
|
30
|
-
- **Tree Parsing**: Go deep down every branch of the decision tree. Only move to the next blind spot after resolving the current one.
|
|
31
|
-
- **Provide Your Insight**: When asking a question, attach your professional insight.
|
|
32
|
-
- **Real-time Documentation**: Whenever consensus is reached on an architectural blind spot, you MUST immediately update or generate the corresponding Markdown document (e.g., ADR or CONTEXT.md).
|
|
33
|
-
|
|
34
|
-
## 3. Exit Conditions and Handoff
|
|
35
|
-
- Continue until you and the user reach a **"Shared Understanding with no suspense"**, and all branches of the decision tree are parsed and documented.
|
|
36
|
-
- After finishing, automatically call `harness-everything` to route to subsequent implementation in `fable-mode` (for large plans) or `tdd` (for small features).
|
|
1
|
+
---
|
|
2
|
+
name: grill-me
|
|
3
|
+
description: Acts as a relentless challenger to stress-test plans, find loopholes, combat AI sycophancy, and ensure real-time documentation updates.
|
|
4
|
+
author: Miya Daniel | Harness Core Team
|
|
5
|
+
version: 0.2.0
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Grill Me (Interrogation & Stress Testing)
|
|
9
|
+
|
|
10
|
+
## 📋 Skill Contract
|
|
11
|
+
|
|
12
|
+
| Component | Specification |
|
|
13
|
+
| :--- | :--- |
|
|
14
|
+
| **Trigger / Input** | User proposes a vague plan, asks to "evaluate architecture", or explicitly says "grill me" / "grill with docs". |
|
|
15
|
+
| **Expected Output** | A single-question-at-a-time interrogation loop that resolves every branch of the plan's decision tree, ending in a documented shared understanding. |
|
|
16
|
+
| **State Mutations** | Updates or generates ADR / `CONTEXT.md`-style docs inline as each blind spot is resolved. |
|
|
17
|
+
| **Enforcement Gate** | **MUST** ask exactly one question at a time (listing multiple questions at once is prohibited); **MUST NOT** exit until all decision-tree branches are resolved and documented, then **MUST** hand off to `fable-mode` or `tdd` via `harness-everything`. |
|
|
18
|
+
|
|
19
|
+
This skill is designed to combat the AI's "Sycophantic" personality and ensure Documentation as Code.
|
|
20
|
+
Triggered when the user proposes a vague plan, asks to "evaluate architecture", or explicitly inputs "grill me" or "grill with docs".
|
|
21
|
+
|
|
22
|
+
## 1. Persona: The Relentless Challenger
|
|
23
|
+
When this skill is activated, you are no longer an obedient assistant, but a **strict Senior Architect**.
|
|
24
|
+
Your goal is to find loopholes, undefined boundary conditions, and potential performance bottlenecks in the human's plan, while maintaining strict adherence to existing domain models.
|
|
25
|
+
|
|
26
|
+
## 2. The Grilling Loop
|
|
27
|
+
- **Environment Discovery `[Discover]`**: First, use `read_file` to scan the core code related to the plan. Also read `CONTEXT.md`, `README.md`, or any ADRs under `docs/adr/`.
|
|
28
|
+
- **Domain Language**: Your grilling MUST be based on the domain model and terminology of the project. If the user uses inconsistent terminology, correct them.
|
|
29
|
+
- **Rule of Single Question**: **You MUST only ask one question at a time**. Listing a long questionnaire with 5 questions is STRICTLY PROHIBITED.
|
|
30
|
+
- **Tree Parsing**: Go deep down every branch of the decision tree. Only move to the next blind spot after resolving the current one.
|
|
31
|
+
- **Provide Your Insight**: When asking a question, attach your professional insight.
|
|
32
|
+
- **Real-time Documentation**: Whenever consensus is reached on an architectural blind spot, you MUST immediately update or generate the corresponding Markdown document (e.g., ADR or CONTEXT.md).
|
|
33
|
+
|
|
34
|
+
## 3. Exit Conditions and Handoff
|
|
35
|
+
- Continue until you and the user reach a **"Shared Understanding with no suspense"**, and all branches of the decision tree are parsed and documented.
|
|
36
|
+
- After finishing, automatically call `harness-everything` to route to subsequent implementation in `fable-mode` (for large plans) or `tdd` (for small features).
|
package/grill-with-docs/SKILL.md
CHANGED
|
@@ -1,99 +1,99 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: grill-with-docs
|
|
3
|
-
description: Grilling session that challenges your plan against the existing domain model, sharpens terminology, and updates documentation (CONTEXT.md, ADRs) inline as decisions crystallise. Use when user wants to stress-test a plan against their project's language and documented decisions.
|
|
4
|
-
author: Miya Daniel | Harness Core Team
|
|
5
|
-
version: 0.2.0
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## 📋 Skill Contract
|
|
9
|
-
|
|
10
|
-
| Component | Specification |
|
|
11
|
-
| :--- | :--- |
|
|
12
|
-
| **Trigger / Input** | User wants to stress-test a plan against the project's existing domain language and documented decisions (`CONTEXT.md`, ADRs). |
|
|
13
|
-
| **Expected Output** | A one-question-at-a-time interview walking the design tree to resolution; `CONTEXT.md` updated inline as terms resolve; new ADRs created only when a decision is hard-to-reverse, surprising, and a genuine trade-off. |
|
|
14
|
-
| **State Mutations** | Creates/edits `CONTEXT.md` and `docs/adr/*.md` (or the per-context equivalents under a `CONTEXT-MAP.md` layout). |
|
|
15
|
-
| **Enforcement Gate** | `CONTEXT.md` **MUST** stay a pure glossary — no implementation details. An ADR **MUST NOT** be offered unless all three criteria (hard to reverse, surprising without context, real trade-off) hold. |
|
|
16
|
-
|
|
17
|
-
<what-to-do>
|
|
18
|
-
|
|
19
|
-
Interview me relentlessly about every aspect of this plan until we reach a shared understanding. Walk down each branch of the design tree, resolving dependencies between decisions one-by-one. For each question, provide your recommended answer.
|
|
20
|
-
|
|
21
|
-
Ask the questions one at a time, waiting for feedback on each question before continuing.
|
|
22
|
-
|
|
23
|
-
If a question can be answered by exploring the codebase, explore the codebase instead.
|
|
24
|
-
|
|
25
|
-
</what-to-do>
|
|
26
|
-
|
|
27
|
-
<supporting-info>
|
|
28
|
-
|
|
29
|
-
## Domain awareness
|
|
30
|
-
|
|
31
|
-
During codebase exploration, also look for existing documentation:
|
|
32
|
-
|
|
33
|
-
### File structure
|
|
34
|
-
|
|
35
|
-
Most repos have a single context:
|
|
36
|
-
|
|
37
|
-
```
|
|
38
|
-
/
|
|
39
|
-
├── CONTEXT.md
|
|
40
|
-
├── docs/
|
|
41
|
-
│ └── adr/
|
|
42
|
-
│ ├── 0001-event-sourced-orders.md
|
|
43
|
-
│ └── 0002-postgres-for-write-model.md
|
|
44
|
-
└── src/
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
If a `CONTEXT-MAP.md` exists at the root, the repo has multiple contexts. The map points to where each one lives:
|
|
48
|
-
|
|
49
|
-
```
|
|
50
|
-
/
|
|
51
|
-
├── CONTEXT-MAP.md
|
|
52
|
-
├── docs/
|
|
53
|
-
│ └── adr/ ← system-wide decisions
|
|
54
|
-
├── src/
|
|
55
|
-
│ ├── ordering/
|
|
56
|
-
│ │ ├── CONTEXT.md
|
|
57
|
-
│ │ └── docs/adr/ ← context-specific decisions
|
|
58
|
-
│ └── billing/
|
|
59
|
-
│ ├── CONTEXT.md
|
|
60
|
-
│ └── docs/adr/
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
Create files lazily — only when you have something to write. If no `CONTEXT.md` exists, create one when the first term is resolved. If no `docs/adr/` exists, create it when the first ADR is needed.
|
|
64
|
-
|
|
65
|
-
## During the session
|
|
66
|
-
|
|
67
|
-
### Challenge against the glossary
|
|
68
|
-
|
|
69
|
-
When the user uses a term that conflicts with the existing language in `CONTEXT.md`, call it out immediately. "Your glossary defines 'cancellation' as X, but you seem to mean Y — which is it?"
|
|
70
|
-
|
|
71
|
-
### Sharpen fuzzy language
|
|
72
|
-
|
|
73
|
-
When the user uses vague or overloaded terms, propose a precise canonical term. "You're saying 'account' — do you mean the Customer or the User? Those are different things."
|
|
74
|
-
|
|
75
|
-
### Discuss concrete scenarios
|
|
76
|
-
|
|
77
|
-
When domain relationships are being discussed, stress-test them with specific scenarios. Invent scenarios that probe edge cases and force the user to be precise about the boundaries between concepts.
|
|
78
|
-
|
|
79
|
-
### Cross-reference with code
|
|
80
|
-
|
|
81
|
-
When the user states how something works, check whether the code agrees. If you find a contradiction, surface it: "Your code cancels entire Orders, but you just said partial cancellation is possible — which is right?"
|
|
82
|
-
|
|
83
|
-
### Update CONTEXT.md inline
|
|
84
|
-
|
|
85
|
-
When a term is resolved, update `CONTEXT.md` right there. Don't batch these up — capture them as they happen. Use the format in [CONTEXT-FORMAT.md](./CONTEXT-FORMAT.md).
|
|
86
|
-
|
|
87
|
-
`CONTEXT.md` should be totally devoid of implementation details. Do not treat `CONTEXT.md` as a spec, a scratch pad, or a repository for implementation decisions. It is a glossary and nothing else.
|
|
88
|
-
|
|
89
|
-
### Offer ADRs sparingly
|
|
90
|
-
|
|
91
|
-
Only offer to create an ADR when all three are true:
|
|
92
|
-
|
|
93
|
-
1. **Hard to reverse** — the cost of changing your mind later is meaningful
|
|
94
|
-
2. **Surprising without context** — a future reader will wonder "why did they do it this way?"
|
|
95
|
-
3. **The result of a real trade-off** — there were genuine alternatives and you picked one for specific reasons
|
|
96
|
-
|
|
97
|
-
If any of the three is missing, skip the ADR. Use the format in [ADR-FORMAT.md](./ADR-FORMAT.md).
|
|
98
|
-
|
|
99
|
-
</supporting-info>
|
|
1
|
+
---
|
|
2
|
+
name: grill-with-docs
|
|
3
|
+
description: Grilling session that challenges your plan against the existing domain model, sharpens terminology, and updates documentation (CONTEXT.md, ADRs) inline as decisions crystallise. Use when user wants to stress-test a plan against their project's language and documented decisions.
|
|
4
|
+
author: Miya Daniel | Harness Core Team
|
|
5
|
+
version: 0.2.0
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 📋 Skill Contract
|
|
9
|
+
|
|
10
|
+
| Component | Specification |
|
|
11
|
+
| :--- | :--- |
|
|
12
|
+
| **Trigger / Input** | User wants to stress-test a plan against the project's existing domain language and documented decisions (`CONTEXT.md`, ADRs). |
|
|
13
|
+
| **Expected Output** | A one-question-at-a-time interview walking the design tree to resolution; `CONTEXT.md` updated inline as terms resolve; new ADRs created only when a decision is hard-to-reverse, surprising, and a genuine trade-off. |
|
|
14
|
+
| **State Mutations** | Creates/edits `CONTEXT.md` and `docs/adr/*.md` (or the per-context equivalents under a `CONTEXT-MAP.md` layout). |
|
|
15
|
+
| **Enforcement Gate** | `CONTEXT.md` **MUST** stay a pure glossary — no implementation details. An ADR **MUST NOT** be offered unless all three criteria (hard to reverse, surprising without context, real trade-off) hold. |
|
|
16
|
+
|
|
17
|
+
<what-to-do>
|
|
18
|
+
|
|
19
|
+
Interview me relentlessly about every aspect of this plan until we reach a shared understanding. Walk down each branch of the design tree, resolving dependencies between decisions one-by-one. For each question, provide your recommended answer.
|
|
20
|
+
|
|
21
|
+
Ask the questions one at a time, waiting for feedback on each question before continuing.
|
|
22
|
+
|
|
23
|
+
If a question can be answered by exploring the codebase, explore the codebase instead.
|
|
24
|
+
|
|
25
|
+
</what-to-do>
|
|
26
|
+
|
|
27
|
+
<supporting-info>
|
|
28
|
+
|
|
29
|
+
## Domain awareness
|
|
30
|
+
|
|
31
|
+
During codebase exploration, also look for existing documentation:
|
|
32
|
+
|
|
33
|
+
### File structure
|
|
34
|
+
|
|
35
|
+
Most repos have a single context:
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
/
|
|
39
|
+
├── CONTEXT.md
|
|
40
|
+
├── docs/
|
|
41
|
+
│ └── adr/
|
|
42
|
+
│ ├── 0001-event-sourced-orders.md
|
|
43
|
+
│ └── 0002-postgres-for-write-model.md
|
|
44
|
+
└── src/
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
If a `CONTEXT-MAP.md` exists at the root, the repo has multiple contexts. The map points to where each one lives:
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
/
|
|
51
|
+
├── CONTEXT-MAP.md
|
|
52
|
+
├── docs/
|
|
53
|
+
│ └── adr/ ← system-wide decisions
|
|
54
|
+
├── src/
|
|
55
|
+
│ ├── ordering/
|
|
56
|
+
│ │ ├── CONTEXT.md
|
|
57
|
+
│ │ └── docs/adr/ ← context-specific decisions
|
|
58
|
+
│ └── billing/
|
|
59
|
+
│ ├── CONTEXT.md
|
|
60
|
+
│ └── docs/adr/
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Create files lazily — only when you have something to write. If no `CONTEXT.md` exists, create one when the first term is resolved. If no `docs/adr/` exists, create it when the first ADR is needed.
|
|
64
|
+
|
|
65
|
+
## During the session
|
|
66
|
+
|
|
67
|
+
### Challenge against the glossary
|
|
68
|
+
|
|
69
|
+
When the user uses a term that conflicts with the existing language in `CONTEXT.md`, call it out immediately. "Your glossary defines 'cancellation' as X, but you seem to mean Y — which is it?"
|
|
70
|
+
|
|
71
|
+
### Sharpen fuzzy language
|
|
72
|
+
|
|
73
|
+
When the user uses vague or overloaded terms, propose a precise canonical term. "You're saying 'account' — do you mean the Customer or the User? Those are different things."
|
|
74
|
+
|
|
75
|
+
### Discuss concrete scenarios
|
|
76
|
+
|
|
77
|
+
When domain relationships are being discussed, stress-test them with specific scenarios. Invent scenarios that probe edge cases and force the user to be precise about the boundaries between concepts.
|
|
78
|
+
|
|
79
|
+
### Cross-reference with code
|
|
80
|
+
|
|
81
|
+
When the user states how something works, check whether the code agrees. If you find a contradiction, surface it: "Your code cancels entire Orders, but you just said partial cancellation is possible — which is right?"
|
|
82
|
+
|
|
83
|
+
### Update CONTEXT.md inline
|
|
84
|
+
|
|
85
|
+
When a term is resolved, update `CONTEXT.md` right there. Don't batch these up — capture them as they happen. Use the format in [CONTEXT-FORMAT.md](./CONTEXT-FORMAT.md).
|
|
86
|
+
|
|
87
|
+
`CONTEXT.md` should be totally devoid of implementation details. Do not treat `CONTEXT.md` as a spec, a scratch pad, or a repository for implementation decisions. It is a glossary and nothing else.
|
|
88
|
+
|
|
89
|
+
### Offer ADRs sparingly
|
|
90
|
+
|
|
91
|
+
Only offer to create an ADR when all three are true:
|
|
92
|
+
|
|
93
|
+
1. **Hard to reverse** — the cost of changing your mind later is meaningful
|
|
94
|
+
2. **Surprising without context** — a future reader will wonder "why did they do it this way?"
|
|
95
|
+
3. **The result of a real trade-off** — there were genuine alternatives and you picked one for specific reasons
|
|
96
|
+
|
|
97
|
+
If any of the three is missing, skip the ADR. Use the format in [ADR-FORMAT.md](./ADR-FORMAT.md).
|
|
98
|
+
|
|
99
|
+
</supporting-info>
|