@hassangameryt/freeflow 0.6.0 → 0.7.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/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +3 -2
- package/.codex-plugin/plugin.json +5 -6
- package/.cursor-plugin/plugin.json +25 -0
- package/README.md +66 -56
- package/capabilities/cognitive-routing/SKILL.md +288 -130
- package/com.github.copilot/hooks/hooks.json +11 -0
- package/command-surface.json +0 -24
- package/gemini-extension.json +5 -0
- package/hooks/adapters/claude-session-start.mjs +16 -0
- package/hooks/adapters/codex-session-start.mjs +16 -0
- package/hooks/adapters/copilot-session-start.mjs +13 -0
- package/hooks/adapters/cursor-session-start.mjs +13 -0
- package/hooks/adapters/gemini-session-start.mjs +15 -0
- package/hooks/claude/hooks.json +18 -0
- package/hooks/codex/hooks.json +18 -0
- package/hooks/cursor/hooks.json +9 -0
- package/hooks/freeflow-runtime-context.mjs +3 -650
- package/hooks/hooks.json +4 -30
- package/hooks/shared/runtime-context.mjs +210 -0
- package/hooks/tests/check-host-adapters.test.mjs +82 -0
- package/hooks/tests/check-runtime-context-hook.sh +140 -320
- package/package.json +20 -4
- package/pi-extension/dist/cognitive-routing/commands.js +3 -3
- package/pi-extension/dist/cognitive-routing/config.js +16 -20
- package/pi-extension/dist/cognitive-routing/controller.js +478 -48
- package/pi-extension/dist/cognitive-routing/history.js +12 -0
- package/pi-extension/dist/cognitive-routing/host.js +74 -12
- package/pi-extension/dist/cognitive-routing/pi-routing-session.js +414 -0
- package/pi-extension/dist/cognitive-routing/pi-session-control.js +320 -0
- package/pi-extension/dist/cognitive-routing/tool.js +1 -0
- package/pi-extension/dist/cognitive-routing/types.js +1 -1
- package/pi-extension/dist/index.js +236 -219
- package/pi-extension/dist/runtime/runtime-context.js +126 -286
- package/pi-extension/dist/settings/settings-ui.js +52 -336
- package/pi-extension/src/cognitive-routing/commands.ts +15 -5
- package/pi-extension/src/cognitive-routing/config.ts +16 -20
- package/pi-extension/src/cognitive-routing/controller.ts +561 -51
- package/pi-extension/src/cognitive-routing/history.ts +12 -0
- package/pi-extension/src/cognitive-routing/host.ts +110 -16
- package/pi-extension/src/cognitive-routing/pi-routing-session.ts +538 -0
- package/pi-extension/src/cognitive-routing/pi-session-control.ts +444 -0
- package/pi-extension/src/cognitive-routing/tool.ts +1 -0
- package/pi-extension/src/cognitive-routing/types.ts +1 -1
- package/pi-extension/src/index.ts +249 -239
- package/pi-extension/src/runtime/runtime-context.ts +129 -305
- package/pi-extension/src/settings/settings-ui.ts +53 -371
- package/pi-extension/tests/cognitive-routing/commands.test.js +1 -1
- package/pi-extension/tests/cognitive-routing/controller.test.js +69 -40
- package/pi-extension/tests/cognitive-routing/extension-lifecycle.test.js +128 -57
- package/pi-extension/tests/cognitive-routing/pi-normal-lifecycle.test.js +434 -0
- package/pi-extension/tests/cognitive-routing/pi-session-control.test.js +174 -0
- package/pi-extension/tests/cognitive-routing/pi-session-history.test.js +91 -0
- package/pi-extension/tests/cognitive-routing/profile-resolution.test.js +47 -4
- package/pi-extension/tests/integration/mode-free-core.test.js +218 -0
- package/pi-extension/tests/integration/pi-extension.test.js +430 -2478
- package/pi-extension/tests/integration/prompt-architecture.test.js +124 -79
- package/pi-extension/tests/integration/unaffected-regressions.test.js +411 -0
- package/plugin.json +33 -0
- package/runtime/prompts/cognitive-routing.md +5 -4
- package/runtime/prompts/conversation-history.md +1 -1
- package/runtime/prompts/core.md +77 -6
- package/runtime/prompts/interaction-contract.md +6 -2
- package/skills/action-selection/SKILL.md +93 -44
- package/skills/action-selection/references/trajectory-stalls.md +71 -0
- package/skills/bypass/SKILL.md +109 -39
- package/skills/commit-work/SKILL.md +94 -55
- package/skills/commit-work/references/git-state-edges.md +94 -0
- package/skills/commit-work/references/simple-push.md +92 -0
- package/skills/commit-work/references/staging-decisions.md +79 -46
- package/skills/decision-gate/SKILL.md +80 -22
- package/skills/design-for-depth/SKILL.md +208 -43
- package/skills/design-for-depth/references/design-pressure-signals.md +108 -240
- package/skills/design-for-depth/references/interface-design-loop.md +77 -97
- package/skills/design-for-depth/references/module-and-dependency-design.md +147 -0
- package/skills/design-for-depth/references/software-design-philosophy.md +127 -173
- package/skills/design-for-depth/references/state-and-failure-boundaries.md +136 -0
- package/skills/diagnose-failure/SKILL.md +198 -52
- package/skills/diagnose-failure/references/diagnostic-loop-catalog.md +19 -5
- package/skills/diagnose-failure/references/flaky-and-performance-diagnosis.md +13 -5
- package/skills/discuss/SKILL.md +118 -76
- package/skills/discuss/references/discussion-continuity.md +84 -32
- package/skills/evaluate-skill/SKILL.md +166 -52
- package/skills/evaluate-skill/references/evaluation-definition-schema.md +2 -2
- package/skills/evaluate-skill/references/evaluation-design.md +56 -30
- package/skills/evaluate-skill/references/execution-and-evidence.md +1 -1
- package/skills/evaluate-skill/references/review-and-revision.md +62 -21
- package/skills/execute-work/SKILL.md +98 -59
- package/skills/execute-work/references/code-practices.md +4 -4
- package/skills/execute-work/references/execute-work-edges.md +42 -22
- package/skills/review-artifact/SKILL.md +132 -71
- package/skills/review-artifact/references/adjudicate-artifact-review.md +101 -0
- package/skills/review-artifact/references/independent-artifact-reviewer-contract.md +52 -41
- package/skills/review-work/SKILL.md +115 -72
- package/skills/review-work/references/adjudicate-work-review.md +97 -0
- package/skills/review-work/references/independent-work-reviewer-contract.md +40 -35
- package/skills/review-work/references/security-risk-lens.md +17 -15
- package/skills/setup-freeflow/SKILL.md +14 -17
- package/skills/setup-freeflow/references/activation-contract.md +24 -30
- package/skills/setup-freeflow/references/host-setup.md +6 -7
- package/skills/simplify-code/SKILL.md +97 -39
- package/skills/simplify-code/references/simplification-patterns.md +1 -1
- package/skills/tdd/SKILL.md +108 -41
- package/skills/tdd/references/test-design.md +1 -1
- package/skills/track-work/SKILL.md +133 -300
- package/skills/track-work/references/working-record-format.md +515 -0
- package/skills/track-work/scripts/lib/document.mjs +713 -0
- package/skills/track-work/scripts/lib/format.mjs +166 -0
- package/skills/track-work/scripts/lib/store.mjs +233 -0
- package/skills/track-work/scripts/lib/transitions.mjs +790 -0
- package/skills/track-work/scripts/lib/views.mjs +27 -430
- package/skills/track-work/scripts/working-record.mjs +292 -98
- package/skills/verify-work/SKILL.md +46 -20
- package/skills/verify-work/references/browser-runtime-evidence.md +1 -1
- package/skills/verify-work/references/integration-evidence.md +1 -7
- package/skills/verify-work/references/performance-evidence.md +1 -1
- package/skills/workflow/SKILL.md +110 -80
- package/skills/workflow/references/domain-skill-composition.md +24 -18
- package/skills/write-skill/SKILL.md +218 -62
- package/skills/write-skill/references/activation-boundaries.md +63 -21
- package/skills/write-skill/references/agent-first-instructions.md +61 -27
- package/skills/write-skill/references/progressive-disclosure.md +91 -41
- package/skills/write-skill/references/skill-dependency-graphs.md +190 -0
- package/runtime/prompts/skills.md +0 -65
- package/skills/mode-contract/SKILL.md +0 -104
- package/skills/track-work/scripts/lib/codec.mjs +0 -570
- package/skills/track-work/scripts/lib/commands.mjs +0 -568
- package/skills/track-work/scripts/lib/contract.mjs +0 -303
- package/skills/track-work/scripts/lib/model.mjs +0 -506
- package/skills/track-work/scripts/lib/operations.mjs +0 -965
- package/skills/track-work/scripts/lib/record-store.mjs +0 -264
- package/skills/track-work/scripts/lib/result.mjs +0 -37
- package/skills/track-work/scripts/lib/rewrites.mjs +0 -740
- package/skills/track-work/scripts/lib/schema.mjs +0 -277
- package/skills/track-work/scripts/lib/source-inventory.mjs +0 -162
- package/skills/track-work/scripts/lib/workspace.mjs +0 -134
|
@@ -19,9 +19,9 @@ Read [the activation contract](references/activation-contract.md) before changin
|
|
|
19
19
|
|
|
20
20
|
Classify the current state before editing:
|
|
21
21
|
|
|
22
|
-
- **Unconfigured:** repository config is missing or invalid, so
|
|
23
|
-
- **Configured but ineffective:** valid repository activation exists, but Freeflow is disabled
|
|
24
|
-
- **Effective:** Freeflow
|
|
22
|
+
- **Unconfigured:** repository config is missing or invalid, so Freeflow is not effective. An explicit setup request may create minimal config when it is missing. Replacing or reinterpreting invalid config still requires the specific authority described below.
|
|
23
|
+
- **Configured but ineffective:** valid repository activation exists, but Freeflow is disabled or an invalid local config blocks runtime. No Freeflow guidance is effective. An explicit request governs the selected enablement, configuration, or repair.
|
|
24
|
+
- **Effective:** Freeflow core guidance, the Interaction Contract, and base skills are effective. An explicit setup or repair request may be carried out within its authority; optional capability behavior remains independently gated.
|
|
25
25
|
|
|
26
26
|
User-operated host settings are direct user actions, not agent-performed config edits. Prefer them when available and do not claim their state changed until the host reports it.
|
|
27
27
|
|
|
@@ -34,21 +34,19 @@ Before editing:
|
|
|
34
34
|
3. inspect repo instructions only when a conflict would change setup behavior;
|
|
35
35
|
4. identify the host and available delivery evidence when runtime status matters.
|
|
36
36
|
|
|
37
|
-
A valid repository config establishes activation. A missing local config inherits
|
|
37
|
+
A valid repository config establishes activation. A missing local config inherits repository settings. An invalid existing local config blocks effective Freeflow instead of falling back silently.
|
|
38
38
|
|
|
39
39
|
If setup is already valid and no change was requested, preserve it and report the effective sources. Do not rewrite config merely to normalize formatting or materialize defaults.
|
|
40
40
|
|
|
41
41
|
## Configure Shared Activation
|
|
42
42
|
|
|
43
|
-
For a new
|
|
43
|
+
For a new setup, write the minimal activation boundary:
|
|
44
44
|
|
|
45
45
|
```json
|
|
46
|
-
{
|
|
47
|
-
"defaultMode": "workflow"
|
|
48
|
-
}
|
|
46
|
+
{}
|
|
49
47
|
```
|
|
50
48
|
|
|
51
|
-
|
|
49
|
+
Add `enabled: false` only when the user explicitly requests Freeflow to be disabled. Add optional capability configuration only when the user explicitly requests it.
|
|
52
50
|
|
|
53
51
|
If repository config is invalid or conflicts with accepted source truth, use [Decision Gate](../decision-gate/SKILL.md) before replacing or reinterpreting it.
|
|
54
52
|
|
|
@@ -56,7 +54,7 @@ Do not create or append Freeflow instructions in `AGENTS.md`, `CLAUDE.md`, `.cla
|
|
|
56
54
|
|
|
57
55
|
## Add Personal Overrides Only When Requested
|
|
58
56
|
|
|
59
|
-
Use `.freeflow/local.json` for an explicitly selected per-checkout override of `enabled`, `
|
|
57
|
+
Use `.freeflow/local.json` for an explicitly selected per-checkout override of `enabled`, `contextVirtualization`, or `conversationHistory`. Omitted values inherit from repository config and built-in defaults. Configure optional Cognitive Routing values only through its explicit settings surface.
|
|
60
58
|
|
|
61
59
|
In Pi, `/freeflow settings` edits personal overrides and `/freeflow settings repo` edits shared settings. Prefer those controls when available.
|
|
62
60
|
|
|
@@ -68,19 +66,18 @@ If local config is invalid, report that it blocks effective runtime. Repair or r
|
|
|
68
66
|
|
|
69
67
|
After successful verification, apply newly effective context directly for the remainder of the setup turn:
|
|
70
68
|
|
|
71
|
-
- read the [Interaction Contract](../../runtime/prompts/interaction-contract.md)
|
|
72
|
-
- read [Workflow](../workflow/SKILL.md)
|
|
69
|
+
- read the [Interaction Contract](../../runtime/prompts/interaction-contract.md);
|
|
70
|
+
- read [Workflow](../workflow/SKILL.md) when Freeflow is effective.
|
|
73
71
|
|
|
74
|
-
|
|
72
|
+
These direct reads establish same-turn guidance; they do not prove that a lifecycle adapter ran. After first activation, use [host setup](references/host-setup.md) to name the exact host-native lifecycle action for automatic delivery and resource refresh, state what applies before that boundary, and keep delivery confirmed, unavailable, or unconfirmed from evidence.
|
|
75
73
|
|
|
76
74
|
## Verify And Report
|
|
77
75
|
|
|
78
76
|
Verify:
|
|
79
77
|
|
|
80
|
-
- repository config parses and
|
|
78
|
+
- repository config parses and is the required activation boundary;
|
|
81
79
|
- local config is missing or valid, personal, untracked, and ignored when applicable;
|
|
82
|
-
- effective `enabled`,
|
|
83
|
-
- Skills-disabled mode remains resolved but dormant;
|
|
80
|
+
- effective `enabled`, core guidance, and optional capability values have the expected sources;
|
|
84
81
|
- no repo-owned host instructions or unrelated files changed.
|
|
85
82
|
|
|
86
83
|
After verification supports a setup result, silently self-review the final observed or changed state before accepting, reusing, or reporting it. Correct clear local issues within the existing setup authority and re-verify the affected boundary; stop on ambiguity, route change, or an out-of-envelope correction.
|
|
@@ -89,6 +86,6 @@ Report separately:
|
|
|
89
86
|
|
|
90
87
|
1. shared repository activation;
|
|
91
88
|
2. personal override state and effective sources;
|
|
92
|
-
3. effective Interaction Contract,
|
|
89
|
+
3. effective Freeflow core guidance, Interaction Contract, base skills, and optional capability state;
|
|
93
90
|
4. same-turn direct context reads;
|
|
94
91
|
5. automatic runtime delivery as **confirmed**, **unavailable**, or **unconfirmed**.
|
|
@@ -7,19 +7,18 @@ Freeflow uses layered checkout configuration. Shared repository activation, pers
|
|
|
7
7
|
`.freeflow/config.json` is the required shared activation boundary. Minimal setup is:
|
|
8
8
|
|
|
9
9
|
```json
|
|
10
|
-
{
|
|
11
|
-
"defaultMode": "workflow"
|
|
12
|
-
}
|
|
10
|
+
{}
|
|
13
11
|
```
|
|
14
12
|
|
|
15
|
-
|
|
13
|
+
Missing core keys use built-in defaults:
|
|
16
14
|
|
|
17
15
|
- `enabled: true`
|
|
18
|
-
- `
|
|
19
|
-
- `
|
|
20
|
-
|
|
16
|
+
- `contextVirtualization: false`
|
|
17
|
+
- `conversationHistory: false`
|
|
18
|
+
|
|
19
|
+
Optional capability configuration is explicit and remains independently gated. The legacy `defaultMode`, `interactionContract`, and `skills` keys are unsupported and make the configuration invalid.
|
|
21
20
|
|
|
22
|
-
Do not add
|
|
21
|
+
Do not add task state, phase, file inventories, plans, version metadata, activation paths, empty optional sections, host instruction copies, or generated workflow text.
|
|
23
22
|
|
|
24
23
|
Missing or invalid repository config means repository activation is absent. A valid config with effective `enabled: false` remains configured but inactive.
|
|
25
24
|
|
|
@@ -31,12 +30,9 @@ It may override these core values:
|
|
|
31
30
|
|
|
32
31
|
```json
|
|
33
32
|
{
|
|
34
|
-
"enabled":
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"enabled": true
|
|
38
|
-
},
|
|
39
|
-
"defaultMode": "strict-workflow"
|
|
33
|
+
"enabled": false,
|
|
34
|
+
"contextVirtualization": true,
|
|
35
|
+
"conversationHistory": true
|
|
40
36
|
}
|
|
41
37
|
```
|
|
42
38
|
|
|
@@ -48,29 +44,28 @@ A missing local file means full inheritance. An invalid existing local file bloc
|
|
|
48
44
|
|
|
49
45
|
## Effective Core State
|
|
50
46
|
|
|
51
|
-
Resolve
|
|
47
|
+
Resolve remaining configurable values in this order:
|
|
52
48
|
|
|
53
49
|
```text
|
|
54
50
|
host session override -> personal override -> repository value -> built-in default
|
|
55
51
|
```
|
|
56
52
|
|
|
57
|
-
Host session overrides are host state, not config, and cannot bypass missing or invalid repository activation. Pi may temporarily override Freeflow
|
|
53
|
+
Host session overrides are host state, not config, and cannot bypass missing or invalid repository activation. Pi may temporarily override Freeflow enablement and the remaining optional context capabilities. Cognitive Routing has its own host-managed session control.
|
|
58
54
|
|
|
59
55
|
Effective Freeflow requires:
|
|
60
56
|
|
|
61
57
|
1. valid repository config;
|
|
62
58
|
2. missing or valid local config;
|
|
63
|
-
3. session-resolved `enabled: true
|
|
59
|
+
3. session-resolved `enabled: true`;
|
|
60
|
+
4. the mandatory `core.md` and `interaction-contract.md` prompt files.
|
|
64
61
|
|
|
65
|
-
The
|
|
62
|
+
The core prompt and Interaction Contract are always delivered together when Freeflow is enabled. Base Freeflow skills are exposed with that core surface. Context Virtualization, Conversation History, and Cognitive Routing remain independently gated capabilities.
|
|
66
63
|
|
|
67
64
|
## Mutation Authority By State
|
|
68
65
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
- **
|
|
72
|
-
- **Configured but ineffective:** top-level disablement, dormant Skills, or invalid local config leaves no effective mode. An explicit request governs the selected enablement, configuration, or repair; any reported resolved mode remains dormant state only.
|
|
73
|
-
- **Effective:** obey the reported mode. Conversation is read-only. Workflow and Strict Workflow allow only separately authorized setup or repair.
|
|
66
|
+
- **Unconfigured:** missing or invalid repository config means Freeflow is not effective. An explicit setup request may create missing minimal activation; replacing invalid config requires specific authorization and source-conflict resolution.
|
|
67
|
+
- **Configured but ineffective:** top-level disablement or invalid local config prevents effective Freeflow. An explicit request governs the selected enablement, configuration, or repair.
|
|
68
|
+
- **Effective:** obey the Interaction Contract and core Workflow guidance. Optional capability behavior remains subject to its own effective state.
|
|
74
69
|
|
|
75
70
|
A user operating native host settings changes host-managed state directly. That action is distinct from an agent editing `.freeflow/config.json` or `.freeflow/local.json`; verify the resulting source and effective state afterward.
|
|
76
71
|
|
|
@@ -78,15 +73,14 @@ A user operating native host settings changes host-managed state directly. That
|
|
|
78
73
|
|
|
79
74
|
Configuration does not prove runtime delivery.
|
|
80
75
|
|
|
81
|
-
When effective, host adapters
|
|
82
|
-
|
|
83
|
-
- `runtime/prompts/interaction-contract.md` when the Interaction Contract switch is enabled;
|
|
84
|
-
- one full `skills/workflow/SKILL.md` bootstrap when Skills are enabled;
|
|
85
|
-
- compact active or dormant mode state.
|
|
76
|
+
When effective, host adapters deliver:
|
|
86
77
|
|
|
87
|
-
|
|
78
|
+
- `runtime/prompts/core.md`;
|
|
79
|
+
- `runtime/prompts/interaction-contract.md`;
|
|
80
|
+
- the base Freeflow skill surface;
|
|
81
|
+
- compact current capability state.
|
|
88
82
|
|
|
89
|
-
|
|
83
|
+
Pi may additionally expose explicitly enabled Pi capability skills and tools. Codex and Claude `SessionStart` hooks compose the mandatory core fragments. Adapters load context only; they do not enforce policy, block tools, grant permissions, or replace repo instructions.
|
|
90
84
|
|
|
91
85
|
A setup report classifies automatic delivery as:
|
|
92
86
|
|
|
@@ -28,26 +28,25 @@ Pi provides these settings scopes:
|
|
|
28
28
|
|
|
29
29
|
```text
|
|
30
30
|
/freeflow settings personal overrides
|
|
31
|
-
/freeflow settings session temporary
|
|
31
|
+
/freeflow settings session temporary enablement and optional-context overrides
|
|
32
32
|
/freeflow settings repo shared repository settings
|
|
33
|
-
/freeflow mode direct temporary session mode
|
|
34
33
|
```
|
|
35
34
|
|
|
36
|
-
Session settings can temporarily inherit, enable, or disable Freeflow,
|
|
35
|
+
Session settings can temporarily inherit, enable, or disable Freeflow, Context Virtualization, and Conversation History. One reset action clears those remaining session overrides. They persist in the active Pi session branch JSONL, never write `.freeflow/config.json` or `.freeflow/local.json`, and cannot bypass missing or invalid repository activation. Master changes reload Pi resources when supported.
|
|
37
36
|
|
|
38
37
|
Personal settings use omission to inherit. The settings path refuses to overwrite invalid or tracked local config and establishes local Git exclusion when needed. These are user-operated host controls; they update state before the next model turn. Agent-performed file edits still follow Setup Freeflow's mutation-authority rules.
|
|
39
38
|
|
|
40
|
-
When effective, Pi's `before_agent_start` path preserves the existing system prompt and composes the
|
|
39
|
+
When effective, Pi's `before_agent_start` path preserves the existing system prompt and composes the mandatory `core.md` and `interaction-contract.md` fragments plus effective optional capability prompts. Runtime State is refreshed at session start, after context reconstruction or loss, and when displayed state changes; unchanged state remains in the provider context. Base skill bodies and capability bodies remain discoverable rather than hidden persistent messages. Cognitive Routing, Context Virtualization, and Conversation History are independently gated.
|
|
41
40
|
|
|
42
|
-
A config written during setup is visible to the available Pi adapter on the next agent turn. After first activation, tell the user to run `/reload` so Pi refreshes skills and resources fully. Without reload, the adapter can load core runtime context on the next agent turn, but resource discovery waits for reload.
|
|
41
|
+
A config written during setup is visible to the available Pi adapter on the next agent turn. After first activation, tell the user to run `/reload` so Pi refreshes skills and resources fully. Without reload, the adapter can load core runtime context on the next agent turn, but resource discovery waits for reload. For the remainder of the setup turn, read newly effective context directly after verification instead of claiming that another `before_agent_start` invocation already occurred.
|
|
43
42
|
|
|
44
43
|
Confirm automatic delivery through current extension status or runtime evidence when available.
|
|
45
44
|
|
|
46
45
|
## Codex And Claude
|
|
47
46
|
|
|
48
|
-
The packaged runtime hook reads the same repository and local layers
|
|
47
|
+
The packaged runtime hook reads the same repository and local layers. At supported `SessionStart` boundaries—startup, resume, clear, and compact—it restores the complete enabled core context. It does not process submitted prompts or persist session controls.
|
|
49
48
|
|
|
50
|
-
When top-level Freeflow is effective, the hook loads
|
|
49
|
+
When top-level Freeflow is effective, the hook loads `runtime/prompts/core.md` and `runtime/prompts/interaction-contract.md` and emits a compact active Runtime State. It does not inject a full Workflow body or inspect Pi-only capabilities.
|
|
51
50
|
|
|
52
51
|
After first-time setup, tell the user to trigger the least disruptive supported host-native lifecycle boundary: resume, clear, compact, or a new session/startup as available. Name the exact control supported by the current host; do not prescribe Pi's `/reload`. Until that boundary runs, use same-turn direct reads without claiming automatic delivery.
|
|
53
52
|
|
|
@@ -1,80 +1,138 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: simplify-code
|
|
3
|
-
description: Use when
|
|
3
|
+
description: Use when working code should become easier to understand or change without altering accepted behavior, including removing duplication, indirection, dead abstractions, or confusing control flow.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Simplify Code
|
|
7
7
|
|
|
8
|
-
Reduce the concepts a reader must hold while preserving accepted behavior.
|
|
8
|
+
Reduce the concepts and coordination a reader must hold while preserving accepted behavior.
|
|
9
9
|
|
|
10
|
-
Fewer lines, files, functions, or abstractions are not automatically simpler. Prefer the shape that makes behavior, ownership, and failure paths easier to understand and change.
|
|
10
|
+
Fewer lines, files, functions, or abstractions are not automatically simpler. Prefer the shape that makes behavior, ownership, and failure paths easier to understand, test, and change.
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
Simplify Code applies one behavior-preserving transformation. It does not define behavior, authorize effects, redesign ownership silently, select or close a Slice, or turn nearby cleanup into accepted work.
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
A **simplification action** removes one named source of complexity and produces one assessable before-and-after result. It may contain several mechanical edits and focused checks.
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
- establish the smallest verification baseline that protects observable behavior and error semantics;
|
|
18
|
-
- understand why the current structure exists, including compatibility, performance, platform, history, and failure constraints;
|
|
19
|
-
- define one narrow simplification outcome.
|
|
16
|
+
## Enter With A Protected Boundary
|
|
20
17
|
|
|
21
|
-
|
|
18
|
+
Before editing, establish:
|
|
22
19
|
|
|
23
|
-
|
|
20
|
+
- the accepted behavior that must remain unchanged;
|
|
21
|
+
- the callers and failure semantics capable of detecting drift;
|
|
22
|
+
- the smallest reliable behavior baseline;
|
|
23
|
+
- the named complexity or coordination to remove;
|
|
24
|
+
- why the current structure exists, including compatibility, performance, platform, migration, and recovery constraints.
|
|
24
25
|
|
|
25
|
-
|
|
26
|
+
If behavior is unclear or should change, return to [Workflow](../workflow/SKILL.md).
|
|
26
27
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
If no reliable behavior check protects the accepted boundary, use [TDD](../tdd/SKILL.md) to establish characterization evidence before simplification. When failure or current behavior remains unexplained, use [Diagnose Failure](../diagnose-failure/SKILL.md).
|
|
29
|
+
|
|
30
|
+
When the intended result requires changing interfaces, ownership, public state, or failure behavior, return the structural pressure to Workflow with [Design for Depth](../design-for-depth/SKILL.md) as a lens. Do not disguise redesign as cleanup.
|
|
31
|
+
|
|
32
|
+
Before selecting or materially changing the transformation, read [Simplification Patterns](references/simplification-patterns.md).
|
|
33
|
+
|
|
34
|
+
Before changing code, read [Code Practices](../execute-work/references/code-practices.md).
|
|
35
|
+
|
|
36
|
+
## Choose One Simplification
|
|
37
|
+
|
|
38
|
+
Classify the named complexity:
|
|
39
|
+
|
|
40
|
+
- **Local expression:** confusing names, guards, branching, duplication, or temporary state.
|
|
41
|
+
- **Pass-through indirection:** a wrapper, helper, adapter, or layer hides no useful decision.
|
|
42
|
+
- **Accidental abstraction:** generalized machinery has no accepted variation or information-hiding value.
|
|
30
43
|
- **Scattered concept:** one behavior or policy can move toward one owner without changing its contract.
|
|
31
44
|
- **Dead path:** evidence shows code is unused, unreachable, superseded, or impossible under current invariants.
|
|
32
|
-
- **Structural pressure:** simplification requires changing interfaces, ownership, state, or architecture; return it
|
|
45
|
+
- **Structural pressure:** simplification requires changing interfaces, ownership, state, or architecture; return it rather than editing.
|
|
46
|
+
|
|
47
|
+
Select the smallest coherent transformation that removes the named complexity while leaving observable and failure behavior intact.
|
|
33
48
|
|
|
34
|
-
|
|
49
|
+
Do not invoke Simplify Code for immediate local cleanup already contained in one TDD behavior loop. Use it when complexity reduction is itself the accepted result.
|
|
35
50
|
|
|
36
|
-
|
|
51
|
+
## Simplify As One Coherent Action
|
|
37
52
|
|
|
38
|
-
|
|
39
|
-
|
|
53
|
+
For the selected transformation:
|
|
54
|
+
|
|
55
|
+
1. name the concepts, branches, indirection, or coordination being removed;
|
|
56
|
+
2. make the complete behavior-preserving change;
|
|
40
57
|
3. run the focused behavior and failure checks;
|
|
41
|
-
4. inspect
|
|
42
|
-
5.
|
|
58
|
+
4. inspect the real caller path;
|
|
59
|
+
5. compare conceptual and coordination cost before and after;
|
|
60
|
+
6. keep or revert the action from evidence.
|
|
61
|
+
|
|
62
|
+
Several edits may belong to one transformation. Do not create a new action merely because the file, tool, or syntax changes.
|
|
43
63
|
|
|
44
|
-
Keep feature work, bug fixes, edge-case
|
|
64
|
+
Keep feature work, bug fixes, edge-case behavior, public contract changes, broad modernization, and unrelated cleanup outside the simplification boundary.
|
|
45
65
|
|
|
46
|
-
|
|
66
|
+
Preserve relevant:
|
|
47
67
|
|
|
48
|
-
|
|
68
|
+
- inputs and outputs;
|
|
69
|
+
- side effects and ordering;
|
|
70
|
+
- errors and recovery;
|
|
71
|
+
- timing and resource behavior;
|
|
72
|
+
- permissions and compatibility;
|
|
73
|
+
- failure units and externally visible state.
|
|
74
|
+
|
|
75
|
+
Follow repository conventions rather than personal style.
|
|
49
76
|
|
|
50
77
|
## Treat Tests As Evidence
|
|
51
78
|
|
|
52
79
|
Do not rewrite valid behavior tests merely to make simplification pass.
|
|
53
80
|
|
|
54
|
-
If an implementation-detail test fails while
|
|
81
|
+
If an implementation-detail test fails while caller-visible behavior appears unchanged, classify the conflict before editing:
|
|
82
|
+
|
|
83
|
+
- the implementation detail may be an accepted contract;
|
|
84
|
+
- the test may be stale or over-coupled;
|
|
85
|
+
- the simplification may have changed relevant behavior;
|
|
86
|
+
- the observing boundary may be insufficient.
|
|
87
|
+
|
|
88
|
+
A green suite is necessary but not sufficient. Inspect the resulting code, real caller path, and relevant failure behavior.
|
|
55
89
|
|
|
56
|
-
|
|
90
|
+
Add characterization coverage only for behavior that must remain stable. Do not fossilize unnecessary machinery merely because it existed before simplification.
|
|
57
91
|
|
|
58
92
|
## Delete Deliberately
|
|
59
93
|
|
|
60
|
-
|
|
94
|
+
Before deletion, establish the code’s purpose and current consumers through source, runtime registration, configuration, generated callers, tests, history, and compatibility obligations as relevant.
|
|
95
|
+
|
|
96
|
+
Removing an unnecessary layer should reduce coordination, not scatter its protocol into callers.
|
|
97
|
+
|
|
98
|
+
Do not delete compatibility, fallback, platform, migration, audit, or recovery behavior because it appears redundant. Use [Migration Work](../migration-work/SKILL.md) when removal carries consumer, state, or compatibility obligations.
|
|
61
99
|
|
|
62
|
-
|
|
100
|
+
## Determine Whether It Became Simpler
|
|
63
101
|
|
|
64
|
-
|
|
102
|
+
Ask:
|
|
103
|
+
|
|
104
|
+
- Are there fewer concepts and branches?
|
|
105
|
+
- Is ownership clearer?
|
|
106
|
+
- Can the behavior be understood through fewer coordinated locations?
|
|
107
|
+
- Did failure semantics remain visible?
|
|
108
|
+
- Is the public interface smaller or unchanged?
|
|
109
|
+
- Did tests become more behavior-focused rather than more coupled?
|
|
110
|
+
- Would the next likely change require fewer coordinated edits?
|
|
111
|
+
|
|
112
|
+
If the answers are mostly no, complexity was relocated rather than reduced.
|
|
65
113
|
|
|
66
114
|
Stop when:
|
|
67
115
|
|
|
68
|
-
-
|
|
69
|
-
-
|
|
70
|
-
- performance or resource tradeoffs
|
|
71
|
-
- each
|
|
72
|
-
- the
|
|
73
|
-
- source truth or user decisions conflict with
|
|
116
|
+
- unchanged behavior cannot be supported;
|
|
117
|
+
- public or failure semantics changed;
|
|
118
|
+
- performance or resource tradeoffs became material and unmeasured;
|
|
119
|
+
- each change exposes another interface, ownership, or edge-case problem;
|
|
120
|
+
- the action broadens beyond its accepted boundary;
|
|
121
|
+
- source truth or user decisions conflict with the transformation;
|
|
74
122
|
- the result is shorter but harder to explain or test.
|
|
75
123
|
|
|
76
|
-
|
|
124
|
+
## Return The Method Result
|
|
125
|
+
|
|
126
|
+
Once evidence supports unchanged behavior and the named complexity has been removed, stop the simplification route and return to the current owner.
|
|
127
|
+
|
|
128
|
+
Return:
|
|
77
129
|
|
|
78
|
-
|
|
130
|
+
- the protected behavior boundary;
|
|
131
|
+
- concepts or coordination removed;
|
|
132
|
+
- before-and-after behavior evidence;
|
|
133
|
+
- resulting caller and failure-path shape;
|
|
134
|
+
- comments preserved, changed, or removed;
|
|
135
|
+
- intentionally retained complexity;
|
|
136
|
+
- what remains unverified.
|
|
79
137
|
|
|
80
|
-
|
|
138
|
+
Do not freeze or close the Slice. Do not continue into further cleanup, modernization, or possible improvements without another accepted bounded action.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Simplification Patterns
|
|
2
2
|
|
|
3
|
-
Read this before
|
|
3
|
+
Read this before selecting or materially changing a simplification transformation. Use these patterns to compare candidates for the named complexity; they do not authorize another result or guarantee that fewer constructs are simpler. Preserve behavior and project conventions.
|
|
4
4
|
|
|
5
5
|
## Control Flow
|
|
6
6
|
|
package/skills/tdd/SKILL.md
CHANGED
|
@@ -1,76 +1,143 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: tdd
|
|
3
|
-
description: Use when implementing or changing behavior test-first,
|
|
3
|
+
description: Use when implementing or changing settled behavior test-first, reproducing a bug through regression evidence, or protecting existing behavior before a refactor.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Test-Driven Development
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
Use one observed failing behavior check to guide the smallest complete implementation for one settled behavior.
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
TDD provides test-first behavior discipline. It does not define intended behavior, authorize test or production effects, select or close a Slice, or prove claims beyond its observing boundary.
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
One behavior loop is one coherent method result. It may contain several reads, edits, commands, and focused checks. Finish and return one behavior before starting another.
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
## Enter With Settled Behavior
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
Before RED, establish:
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
- the accepted behavior and caller-visible result;
|
|
19
|
+
- relevant success and failure semantics;
|
|
20
|
+
- the boundary where the behavior must hold;
|
|
21
|
+
- authority covering both the check and production effects;
|
|
22
|
+
- the expected reason RED should fail.
|
|
19
23
|
|
|
20
|
-
|
|
24
|
+
Return unsettled behavior, source conflicts, or user-owned choices to [Workflow](../workflow/SKILL.md). Do not encode a guess as a test.
|
|
21
25
|
|
|
22
|
-
|
|
26
|
+
Use TDD for:
|
|
23
27
|
|
|
24
|
-
|
|
28
|
+
- accepted behavior changes;
|
|
29
|
+
- bug corrections with a supported cause or reliable regression loop;
|
|
30
|
+
- consequential logic whose contract benefits from executable evidence;
|
|
31
|
+
- characterization needed before a protected refactor.
|
|
32
|
+
|
|
33
|
+
Do not force TDD onto documentation, static content, formatting, generated output, or a disposable prototype that is not selected production behavior.
|
|
34
|
+
|
|
35
|
+
When a bug lacks a supported cause or reliable reproduction, use [Diagnose Failure](../diagnose-failure/SKILL.md) before selecting a production correction.
|
|
36
|
+
|
|
37
|
+
## Design The Behavior Check
|
|
38
|
+
|
|
39
|
+
Before designing or materially changing the check, read [Test Design](references/test-design.md).
|
|
40
|
+
|
|
41
|
+
Name:
|
|
42
|
+
|
|
43
|
+
- the behavior concept;
|
|
44
|
+
- the stable caller-visible seam;
|
|
45
|
+
- an oracle independent from the implementation;
|
|
46
|
+
- the expected missing behavior RED should expose;
|
|
47
|
+
- the focused and affected boundaries that must be rerun after GREEN.
|
|
48
|
+
|
|
49
|
+
Use the smallest test environment that still exercises the real behavior and relevant failure path. Do not choose a smaller boundary that mocks away the claim or a larger one that adds noise without proving more.
|
|
50
|
+
|
|
51
|
+
Keep one behavior concept per loop. Several assertions are appropriate when they jointly describe one outcome.
|
|
25
52
|
|
|
26
53
|
## Follow The Behavior Loop
|
|
27
54
|
|
|
28
55
|
```text
|
|
29
|
-
[
|
|
56
|
+
[Settled accepted behavior]
|
|
30
57
|
-> [Choose stable seam and independent oracle]
|
|
31
58
|
-> [RED: write and run the smallest behavior check]
|
|
32
|
-
-> fails for
|
|
33
|
-
-> passes immediately -> inspect test, boundary,
|
|
34
|
-
-> errors
|
|
35
|
-
-> [GREEN: smallest complete
|
|
36
|
-
-> [
|
|
37
|
-
-> [REFACTOR when useful
|
|
38
|
-
-> [
|
|
39
|
-
-> [
|
|
40
|
-
-> another accepted behavior in this slice -> next TDD loop
|
|
41
|
-
-> coherent extension -> Workflow -> when covered, record if needed -> next TDD loop
|
|
42
|
-
-> unclear cause or structural pressure -> Workflow
|
|
43
|
-
-> supported bounded action -> return to Execute Work
|
|
59
|
+
-> fails for the intended missing behavior -> GREEN
|
|
60
|
+
-> passes immediately -> inspect test, boundary, and existing behavior
|
|
61
|
+
-> errors or fails elsewhere -> correct the harness or diagnose
|
|
62
|
+
-> [GREEN: implement the smallest complete behavior]
|
|
63
|
+
-> [Run the focused behavior check]
|
|
64
|
+
-> [REFACTOR locally when useful]
|
|
65
|
+
-> [Rerun the original path and affected boundary]
|
|
66
|
+
-> [Return the method result and evidence]
|
|
44
67
|
```
|
|
45
68
|
|
|
46
|
-
Do not write all tests first and
|
|
69
|
+
Do not write all tests first and implementation later. Finish one behavior loop before another.
|
|
70
|
+
|
|
71
|
+
## Observe Valid RED
|
|
72
|
+
|
|
73
|
+
Run RED before changing production behavior.
|
|
74
|
+
|
|
75
|
+
RED is valid only when:
|
|
76
|
+
|
|
77
|
+
- the check executes through the intended seam;
|
|
78
|
+
- its assertion represents accepted behavior;
|
|
79
|
+
- it fails because the behavior is missing or incorrect;
|
|
80
|
+
- unrelated syntax, setup, environment, or fixture failures do not explain it.
|
|
47
81
|
|
|
48
|
-
|
|
82
|
+
If the check passes immediately, inspect whether:
|
|
49
83
|
|
|
50
|
-
-
|
|
51
|
-
-
|
|
52
|
-
-
|
|
53
|
-
-
|
|
54
|
-
- Refactor only when it improves the result while the focused behavior check remains green.
|
|
55
|
-
- Re-run the original path and smallest affected boundary before returning the supported action and evidence to Execute Work.
|
|
56
|
-
- Do not claim TDD when the check was written after implementation or RED was never observed for the intended reason.
|
|
84
|
+
- the behavior already exists;
|
|
85
|
+
- the assertion is ineffective;
|
|
86
|
+
- the observing boundary is wrong;
|
|
87
|
+
- the test is reproducing a nearby path rather than the reported behavior.
|
|
57
88
|
|
|
58
|
-
|
|
89
|
+
Do not proceed automatically to GREEN.
|
|
59
90
|
|
|
60
|
-
|
|
91
|
+
Correct a clear local harness defect. When the failure remains unexplained or repeated harness changes do not establish valid RED, return to Diagnose Failure.
|
|
61
92
|
|
|
62
|
-
|
|
93
|
+
## Implement Complete GREEN
|
|
94
|
+
|
|
95
|
+
Before changing production code, read [Code Practices](../execute-work/references/code-practices.md).
|
|
96
|
+
|
|
97
|
+
Implement the smallest complete behavior that satisfies the accepted contract—not merely the visible assertion.
|
|
98
|
+
|
|
99
|
+
Do not:
|
|
100
|
+
|
|
101
|
+
- weaken or rewrite a valid test to obtain GREEN;
|
|
102
|
+
- calculate expected values through production logic;
|
|
103
|
+
- add public hooks, states, flags, or branches used only by tests;
|
|
104
|
+
- silently invent fallback, retry, recovery, or edge-case behavior;
|
|
105
|
+
- broaden implementation into another accepted behavior.
|
|
106
|
+
|
|
107
|
+
If GREEN requires an unsettled behavior, public contract, subsystem, or material scope expansion, return the evidence to Workflow.
|
|
108
|
+
|
|
109
|
+
## Refactor Locally
|
|
110
|
+
|
|
111
|
+
Refactor only when it improves the behavior just implemented while its focused check remains green.
|
|
112
|
+
|
|
113
|
+
TDD refactoring is immediate local cleanup within the behavior loop. It may improve names, remove nearby duplication, simplify control flow, or clarify ownership without changing the accepted result.
|
|
114
|
+
|
|
115
|
+
Do not turn REFACTOR into a general cleanup stream. When reducing existing complexity is itself an accepted result, return the completed behavior loop and use [Simplify Code](../simplify-code/SKILL.md) as a separate execution route.
|
|
116
|
+
|
|
117
|
+
When test pressure exposes caller coordination, public states, test-only seams, or ownership problems, preserve that evidence. Use [Design for Depth](../design-for-depth/SKILL.md) only when structural pressure is supported.
|
|
63
118
|
|
|
64
119
|
## Fix Bugs Through The Reported Boundary
|
|
65
120
|
|
|
66
|
-
First reproduce the reported symptom through the correct seam. A nearby failing path is not the bug.
|
|
121
|
+
First reproduce the reported symptom through the correct seam. A nearby failing path is diagnostic evidence, not the bug.
|
|
122
|
+
|
|
123
|
+
After GREEN, rerun:
|
|
124
|
+
|
|
125
|
+
1. the minimized regression check;
|
|
126
|
+
2. the original unminimized symptom or strongest available observer;
|
|
127
|
+
3. the smallest affected boundary capable of exposing regression.
|
|
67
128
|
|
|
68
|
-
|
|
129
|
+
Do not report a fix when only the minimized check passes and the reported boundary remains unavailable.
|
|
69
130
|
|
|
70
|
-
##
|
|
131
|
+
## Return The Method Result
|
|
71
132
|
|
|
72
|
-
|
|
133
|
+
Return to the current owner with:
|
|
73
134
|
|
|
74
|
-
|
|
135
|
+
- accepted behavior and observing seam;
|
|
136
|
+
- observed RED result and why it was valid;
|
|
137
|
+
- GREEN implementation result;
|
|
138
|
+
- local refactor, when performed;
|
|
139
|
+
- focused, original-path, and affected-boundary evidence;
|
|
140
|
+
- what the evidence supports and does not support;
|
|
141
|
+
- unresolved or unverified behavior.
|
|
75
142
|
|
|
76
|
-
|
|
143
|
+
Do not select another behavior, close the Slice, trigger review, commit, or continue merely because GREEN was reached.
|