bigpowers 2.72.1 → 2.73.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/.continue/rules/align-grid.md +0 -0
- package/.continue/rules/assess-impact.md +0 -0
- package/.continue/rules/audit-code.md +0 -0
- package/.continue/rules/audit-plan.md +0 -0
- package/.continue/rules/build-epic.md +0 -0
- package/.continue/rules/change-request.md +0 -0
- package/.continue/rules/commit-message.md +0 -0
- package/.continue/rules/compose-workflow.md +0 -0
- package/.continue/rules/craft-skill.md +0 -0
- package/.continue/rules/deepen-architecture.md +0 -0
- package/.continue/rules/define-language.md +0 -0
- package/.continue/rules/define-success.md +0 -0
- package/.continue/rules/delegate-task.md +0 -0
- package/.continue/rules/deploy.md +0 -0
- package/.continue/rules/design-interface.md +0 -0
- package/.continue/rules/develop-tdd.md +0 -0
- package/.continue/rules/diagnose-root.md +0 -0
- package/.continue/rules/dispatch-agents.md +0 -0
- package/.continue/rules/edit-document.md +0 -0
- package/.continue/rules/elaborate-spec.md +0 -0
- package/.continue/rules/enforce-first.md +0 -0
- package/.continue/rules/evolve-skill.md +0 -0
- package/.continue/rules/execute-plan.md +0 -0
- package/.continue/rules/extract-design.md +0 -0
- package/.continue/rules/fix-bug.md +0 -0
- package/.continue/rules/gate-trace.md +0 -0
- package/.continue/rules/grill-me.md +0 -0
- package/.continue/rules/grill-with-docs.md +0 -0
- package/.continue/rules/guard-git.md +0 -0
- package/.continue/rules/hook-commits.md +0 -0
- package/.continue/rules/inspect-quality.md +0 -0
- package/.continue/rules/investigate-bug.md +0 -0
- package/.continue/rules/kickoff-branch.md +0 -0
- package/.continue/rules/maintain-wiki.md +0 -0
- package/.continue/rules/map-codebase.md +0 -0
- package/.continue/rules/migrate-spec.md +0 -0
- package/.continue/rules/model-domain.md +0 -0
- package/.continue/rules/orchestrate-project.md +0 -0
- package/.continue/rules/organize-workspace.md +0 -0
- package/.continue/rules/plan-refactor.md +0 -0
- package/.continue/rules/plan-release.md +0 -0
- package/.continue/rules/plan-tests.md +0 -0
- package/.continue/rules/plan-work.md +0 -0
- package/.continue/rules/publish-package.md +0 -0
- package/.continue/rules/quick-fix.md +0 -0
- package/.continue/rules/release-branch.md +0 -0
- package/.continue/rules/request-review.md +0 -0
- package/.continue/rules/research-first.md +0 -0
- package/.continue/rules/reset-baseline.md +0 -0
- package/.continue/rules/respond-review.md +0 -0
- package/.continue/rules/run-benchmark.md +0 -0
- package/.continue/rules/run-evals.md +0 -0
- package/.continue/rules/run-planning.md +0 -0
- package/.continue/rules/scope-work.md +0 -0
- package/.continue/rules/search-skills.md +0 -0
- package/.continue/rules/security-review.md +0 -0
- package/.continue/rules/seed-conventions.md +0 -0
- package/.continue/rules/session-state.md +0 -0
- package/.continue/rules/setup-environment.md +0 -0
- package/.continue/rules/simulate-agents.md +0 -0
- package/.continue/rules/slice-tasks.md +0 -0
- package/.continue/rules/smoke-test.md +0 -0
- package/.continue/rules/spike-prototype.md +0 -0
- package/.continue/rules/stocktake-skills.md +0 -0
- package/.continue/rules/survey-context.md +0 -0
- package/.continue/rules/terse-mode.md +0 -0
- package/.continue/rules/trace-requirement.md +0 -0
- package/.continue/rules/using-bigpowers.md +0 -0
- package/.continue/rules/validate-contracts.md +0 -0
- package/.continue/rules/validate-fix.md +0 -0
- package/.continue/rules/verify-work.md +0 -0
- package/.continue/rules/visual-dashboard.md +0 -0
- package/.continue/rules/wire-ci.md +0 -0
- package/.continue/rules/wire-observability.md +0 -0
- package/.continue/rules/write-document.md +0 -0
- package/.kilocode/rules/align-grid.md +0 -0
- package/.kilocode/rules/assess-impact.md +0 -0
- package/.kilocode/rules/audit-code.md +0 -0
- package/.kilocode/rules/audit-plan.md +0 -0
- package/.kilocode/rules/build-epic.md +0 -0
- package/.kilocode/rules/change-request.md +0 -0
- package/.kilocode/rules/commit-message.md +0 -0
- package/.kilocode/rules/compose-workflow.md +0 -0
- package/.kilocode/rules/craft-skill.md +0 -0
- package/.kilocode/rules/deepen-architecture.md +0 -0
- package/.kilocode/rules/define-language.md +0 -0
- package/.kilocode/rules/define-success.md +0 -0
- package/.kilocode/rules/delegate-task.md +0 -0
- package/.kilocode/rules/deploy.md +0 -0
- package/.kilocode/rules/design-interface.md +0 -0
- package/.kilocode/rules/develop-tdd.md +0 -0
- package/.kilocode/rules/diagnose-root.md +0 -0
- package/.kilocode/rules/dispatch-agents.md +0 -0
- package/.kilocode/rules/edit-document.md +0 -0
- package/.kilocode/rules/elaborate-spec.md +0 -0
- package/.kilocode/rules/enforce-first.md +0 -0
- package/.kilocode/rules/evolve-skill.md +0 -0
- package/.kilocode/rules/execute-plan.md +0 -0
- package/.kilocode/rules/extract-design.md +0 -0
- package/.kilocode/rules/fix-bug.md +0 -0
- package/.kilocode/rules/gate-trace.md +0 -0
- package/.kilocode/rules/grill-me.md +0 -0
- package/.kilocode/rules/grill-with-docs.md +0 -0
- package/.kilocode/rules/guard-git.md +0 -0
- package/.kilocode/rules/hook-commits.md +0 -0
- package/.kilocode/rules/inspect-quality.md +0 -0
- package/.kilocode/rules/investigate-bug.md +0 -0
- package/.kilocode/rules/kickoff-branch.md +0 -0
- package/.kilocode/rules/maintain-wiki.md +0 -0
- package/.kilocode/rules/map-codebase.md +0 -0
- package/.kilocode/rules/migrate-spec.md +0 -0
- package/.kilocode/rules/model-domain.md +0 -0
- package/.kilocode/rules/orchestrate-project.md +0 -0
- package/.kilocode/rules/organize-workspace.md +0 -0
- package/.kilocode/rules/plan-refactor.md +0 -0
- package/.kilocode/rules/plan-release.md +0 -0
- package/.kilocode/rules/plan-tests.md +0 -0
- package/.kilocode/rules/plan-work.md +0 -0
- package/.kilocode/rules/publish-package.md +0 -0
- package/.kilocode/rules/quick-fix.md +0 -0
- package/.kilocode/rules/release-branch.md +0 -0
- package/.kilocode/rules/request-review.md +0 -0
- package/.kilocode/rules/research-first.md +0 -0
- package/.kilocode/rules/reset-baseline.md +0 -0
- package/.kilocode/rules/respond-review.md +0 -0
- package/.kilocode/rules/run-benchmark.md +0 -0
- package/.kilocode/rules/run-evals.md +0 -0
- package/.kilocode/rules/run-planning.md +0 -0
- package/.kilocode/rules/scope-work.md +0 -0
- package/.kilocode/rules/search-skills.md +0 -0
- package/.kilocode/rules/security-review.md +0 -0
- package/.kilocode/rules/seed-conventions.md +0 -0
- package/.kilocode/rules/session-state.md +0 -0
- package/.kilocode/rules/setup-environment.md +0 -0
- package/.kilocode/rules/simulate-agents.md +0 -0
- package/.kilocode/rules/slice-tasks.md +0 -0
- package/.kilocode/rules/smoke-test.md +0 -0
- package/.kilocode/rules/spike-prototype.md +0 -0
- package/.kilocode/rules/stocktake-skills.md +0 -0
- package/.kilocode/rules/survey-context.md +0 -0
- package/.kilocode/rules/terse-mode.md +0 -0
- package/.kilocode/rules/trace-requirement.md +0 -0
- package/.kilocode/rules/using-bigpowers.md +0 -0
- package/.kilocode/rules/validate-contracts.md +0 -0
- package/.kilocode/rules/validate-fix.md +0 -0
- package/.kilocode/rules/verify-work.md +0 -0
- package/.kilocode/rules/visual-dashboard.md +0 -0
- package/.kilocode/rules/wire-ci.md +0 -0
- package/.kilocode/rules/wire-observability.md +0 -0
- package/.kilocode/rules/write-document.md +0 -0
- package/.pi/package.json +1 -1
- package/.pi/prompts/seed-conventions.md +46 -8
- package/.pi/prompts/using-bigpowers.md +2 -2
- package/.pi/skills/seed-conventions/SKILL.md +46 -8
- package/.pi/skills/using-bigpowers/SKILL.md +2 -2
- package/CHANGELOG.md +14 -0
- package/audit-independent-unwaived-2026-07-06.md +49 -0
- package/package.json +1 -1
- package/scripts/adapters/agy.sh +6 -0
- package/scripts/adapters/aider.sh +7 -0
- package/scripts/adapters/cline.sh +8 -0
- package/scripts/adapters/continue.sh +11 -0
- package/scripts/adapters/cursor.sh +25 -0
- package/scripts/adapters/gemini.sh +36 -0
- package/scripts/adapters/goose.sh +3 -0
- package/scripts/adapters/hermes.sh +10 -0
- package/scripts/adapters/iflow.sh +6 -0
- package/scripts/adapters/kilocode.sh +11 -0
- package/scripts/adapters/omp.sh +10 -0
- package/scripts/adapters/pi.sh +37 -0
- package/scripts/adapters/qwen.sh +6 -0
- package/scripts/adapters/shai.sh +6 -0
- package/scripts/adapters/vibe.sh +6 -0
- package/scripts/adapters/zed.sh +10 -0
- package/scripts/check-blind-spots.sh +3 -0
- package/scripts/generate-context-bundle.sh +57 -0
- package/scripts/install.sh +21 -0
- package/scripts/lib/context-wire.sh +66 -0
- package/scripts/lib/target-contracts.sh +77 -0
- package/scripts/lib/trace-stories.py +3 -2
- package/scripts/sync-bugs-registry.sh +3 -1
- package/scripts/sync-skills.sh +24 -9
- package/scripts/targets.yaml +202 -0
- package/scripts/test-adapters.sh +80 -0
- package/scripts/test-trace-strict.sh +132 -0
- package/scripts/validate-targets-yaml.sh +69 -0
- package/scripts/verify-install.sh +76 -3
- package/skills/seed-conventions/REFERENCE.md +40 -5
- package/skills/seed-conventions/SKILL.md +6 -3
- package/skills/using-bigpowers/SKILL.md +2 -2
- package/skills-lock.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
## [2.73.1](https://github.com/danielvm-git/bigpowers/compare/v2.73.0...v2.73.1) (2026-07-06)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* **ci:** skip unimplemented P0 stories in trace --strict gate ([e7a56bf](https://github.com/danielvm-git/bigpowers/commit/e7a56bfd94d5dbebf0f7736383e2c381016616b9))
|
|
7
|
+
|
|
8
|
+
# [2.73.0](https://github.com/danielvm-git/bigpowers/compare/v2.72.1...v2.73.0) (2026-07-06)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
* **reach:** AGENTS.md spine and integration registry (e37) ([7d3b856](https://github.com/danielvm-git/bigpowers/commit/7d3b85691384e8df67e71d61fccfd143cc637f56))
|
|
14
|
+
|
|
1
15
|
## [2.72.1](https://github.com/danielvm-git/bigpowers/compare/v2.72.0...v2.72.1) (2026-07-06)
|
|
2
16
|
|
|
3
17
|
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Independent Compliance Audit (Unwaived Mode)
|
|
2
|
+
|
|
3
|
+
**Date**: 2026-07-06
|
|
4
|
+
**Mode**: Strict (All waivers disabled)
|
|
5
|
+
**Target**: `specs/verifications/features/`
|
|
6
|
+
**Result**: GATE: FAIL
|
|
7
|
+
|
|
8
|
+
## Summary of Execution
|
|
9
|
+
I executed the verification gates by temporarily bypassing `waivers.yaml` to run an independent compliance audit against the `bigpowers` principles and conventions without any exceptions. The `audit-compliance.sh` and `validate-doctrine.sh` scripts were successfully executed.
|
|
10
|
+
|
|
11
|
+
## Failed Verification Steps & Offending Scripts
|
|
12
|
+
|
|
13
|
+
By disabling the waivers, I isolated **4 failing verification steps**. Below is the mapping of each failure to its offending files and corresponding `bigpowers` skills:
|
|
14
|
+
|
|
15
|
+
### 1. Unique Public Symbols (`grep` < 5 results)
|
|
16
|
+
**Feature**: `akita.feature` (sourced from `conventions.feature`)
|
|
17
|
+
- **Reason**: Duplicate function names across multiple files (e.g., `agent_dry_run`, `assign_tier`, `cleanup`, `emit_json`, `fail`, `parse_frontmatter`, `pass`, `show_help`, `usage`).
|
|
18
|
+
- **Affected Core/Skills**: Common shared scripts and lifecycle utilities.
|
|
19
|
+
|
|
20
|
+
### 2. Context Window Constraint (< 300 lines)
|
|
21
|
+
**Feature**: `akita.feature`
|
|
22
|
+
- **Reason**: Scripts exceeding the 300-line limit for agent context windows.
|
|
23
|
+
- **Offending Files**:
|
|
24
|
+
- `scripts/sync-skills.sh` (Mapped to: `craft-skill`, `evolve-skill`, `maintain-wiki`)
|
|
25
|
+
- `scripts/migrate-version.sh` (Mapped to: `migrate-spec`)
|
|
26
|
+
- `scripts/run-verification-gates.sh` (Core harness)
|
|
27
|
+
- `scripts/validate-okf.sh` (Core harness)
|
|
28
|
+
- `scripts/audit-compliance.sh` (Core harness / `audit-code`)
|
|
29
|
+
- `scripts/run-golden-suite.sh` (Core harness)
|
|
30
|
+
- `scripts/lib/trace-matrix.py` (Mapped to: `gate-trace`)
|
|
31
|
+
- `scripts/lib/trace-stories.py` (Mapped to: `trace-requirement`)
|
|
32
|
+
|
|
33
|
+
### 3. Newspaper Metaphor (< 500 lines)
|
|
34
|
+
**Feature**: `cleancode.feature`
|
|
35
|
+
- **Reason**: Critical scripts exceeding the absolute 500-line hard cap.
|
|
36
|
+
- **Offending Files**:
|
|
37
|
+
- `scripts/sync-skills.sh` (Mapped to: `craft-skill`, `evolve-skill`)
|
|
38
|
+
- `scripts/migrate-version.sh` (Mapped to: `migrate-spec`)
|
|
39
|
+
- `scripts/lib/trace-matrix.py` (Mapped to: `gate-trace`)
|
|
40
|
+
|
|
41
|
+
### 4. Boolean Encapsulation (G28)
|
|
42
|
+
**Feature**: `cleancode.feature`
|
|
43
|
+
- **Reason**: Complex, multi-clause bash conditional logic not encapsulated in named functions.
|
|
44
|
+
- **Offending Files**:
|
|
45
|
+
- `scripts/migrate-version.sh` (Mapped to: `migrate-spec`)
|
|
46
|
+
- `scripts/check-spec-version-gap.sh` (Mapped to: `plan-release`)
|
|
47
|
+
|
|
48
|
+
## Restoration
|
|
49
|
+
After the test run concluded, the original `waivers.yaml` was restored to preserve environment integrity. No actual code modifications were made.
|
package/package.json
CHANGED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# story: e37s12
|
|
3
|
+
render_skill() {
|
|
4
|
+
local rules_dir="${CONTINUE_RULES:-.continue/rules}"
|
|
5
|
+
mkdir -p "$rules_dir" 2>/dev/null || true
|
|
6
|
+
[[ -n "${IR_NAME:-}" ]] && touch "$rules_dir/$IR_NAME.md" 2>/dev/null || true
|
|
7
|
+
}
|
|
8
|
+
wire_context() {
|
|
9
|
+
source "$(dirname "${BASH_SOURCE[0]}")/../lib/context-wire.sh"
|
|
10
|
+
wire_context_mode copy "${1:-AGENTS.md}"
|
|
11
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# story: e37s05 e37s07
|
|
3
|
+
# scenario: SC-e37s07-P0-02
|
|
4
|
+
# Cursor skill adapter — renders .cursor/rules/*.mdc from IR globals.
|
|
5
|
+
|
|
6
|
+
render_skill() {
|
|
7
|
+
if declare -f render_cursor >/dev/null 2>&1; then
|
|
8
|
+
render_cursor
|
|
9
|
+
return
|
|
10
|
+
fi
|
|
11
|
+
local cursor_file="${CURSOR_RULES:-.cursor/rules}/$IR_NAME.mdc"
|
|
12
|
+
{
|
|
13
|
+
echo "---"
|
|
14
|
+
echo "description: \"$IR_DESC_ESCAPED\""
|
|
15
|
+
echo "alwaysApply: false"
|
|
16
|
+
echo "---"
|
|
17
|
+
echo ""
|
|
18
|
+
echo "$IR_BODY"
|
|
19
|
+
} > "$cursor_file"
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
wire_context() {
|
|
23
|
+
source "$(dirname "${BASH_SOURCE[0]}")/../lib/context-wire.sh"
|
|
24
|
+
wire_context_mode symlink "${1:-CLAUDE.md}"
|
|
25
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# story: e37s05 e37s07
|
|
3
|
+
|
|
4
|
+
render_skill() {
|
|
5
|
+
if declare -f render_gemini_skill >/dev/null 2>&1; then
|
|
6
|
+
render_gemini_skill
|
|
7
|
+
render_gemini_command
|
|
8
|
+
return
|
|
9
|
+
fi
|
|
10
|
+
mkdir -p "${GEMINI_SKILLS:-.gemini/extensions/bigpowers/skills}/$IR_NAME"
|
|
11
|
+
{
|
|
12
|
+
echo "---"
|
|
13
|
+
echo "name: $IR_NAME"
|
|
14
|
+
[[ -n "$IR_MODEL" ]] && echo "model: $IR_MODEL"
|
|
15
|
+
echo "description: \"$IR_DESC_ESCAPED\""
|
|
16
|
+
echo "disable-model-invocation: true"
|
|
17
|
+
echo "---"
|
|
18
|
+
echo ""
|
|
19
|
+
echo "$IR_BODY"
|
|
20
|
+
} > "${GEMINI_SKILLS}/$IR_NAME/SKILL.md"
|
|
21
|
+
|
|
22
|
+
mkdir -p "${GEMINI_COMMANDS:-.gemini/extensions/bigpowers/commands/prompts}"
|
|
23
|
+
{
|
|
24
|
+
echo "---"
|
|
25
|
+
echo "name: $IR_NAME"
|
|
26
|
+
echo "description: \"$IR_DESC_ESCAPED\""
|
|
27
|
+
echo "---"
|
|
28
|
+
echo ""
|
|
29
|
+
echo "$IR_BODY"
|
|
30
|
+
} > "${GEMINI_COMMANDS}/prompts/$IR_NAME.md"
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
wire_context() {
|
|
34
|
+
source "$(dirname "${BASH_SOURCE[0]}")/../lib/context-wire.sh"
|
|
35
|
+
wire_context_mode symlink "${1:-GEMINI.md}"
|
|
36
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# story: e37s10
|
|
3
|
+
render_skill() {
|
|
4
|
+
local out="${HERMES_SKILLS:-.hermes/skills}"
|
|
5
|
+
mkdir -p "$out/${IR_NAME:-_stub}" 2>/dev/null || true
|
|
6
|
+
}
|
|
7
|
+
wire_context() {
|
|
8
|
+
source "$(dirname "${BASH_SOURCE[0]}")/../lib/context-wire.sh"
|
|
9
|
+
wire_context_mode config-bridge ".hermes/config.yaml" "instructions" "AGENTS.md"
|
|
10
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# story: e37s11
|
|
3
|
+
render_skill() {
|
|
4
|
+
local out="${KILOCODE_RULES:-.kilocode/rules}"
|
|
5
|
+
mkdir -p "$out" 2>/dev/null || true
|
|
6
|
+
[[ -n "${IR_NAME:-}" ]] && touch "$out/$IR_NAME.md" 2>/dev/null || true
|
|
7
|
+
}
|
|
8
|
+
wire_context() {
|
|
9
|
+
source "$(dirname "${BASH_SOURCE[0]}")/../lib/context-wire.sh"
|
|
10
|
+
wire_context_mode copy "${1:-AGENTS.md}"
|
|
11
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# story: e37s10
|
|
3
|
+
render_skill() {
|
|
4
|
+
local out="${OMP_SKILLS:-.omp/skills}"
|
|
5
|
+
mkdir -p "$out/${IR_NAME:-_stub}" 2>/dev/null || true
|
|
6
|
+
}
|
|
7
|
+
wire_context() {
|
|
8
|
+
source "$(dirname "${BASH_SOURCE[0]}")/../lib/context-wire.sh"
|
|
9
|
+
wire_context_mode symlink "${1:-CLAUDE.md}"
|
|
10
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# story: e37s05 e37s07
|
|
3
|
+
|
|
4
|
+
render_skill() {
|
|
5
|
+
if declare -f render_pi_skill >/dev/null 2>&1; then
|
|
6
|
+
render_pi_skill
|
|
7
|
+
render_pi_prompt
|
|
8
|
+
return
|
|
9
|
+
fi
|
|
10
|
+
mkdir -p "${PI_SKILLS:-.pi/skills}/$IR_NAME"
|
|
11
|
+
cp "${SKILL_MD_PATH:-}" "${PI_SKILLS}/$IR_NAME/SKILL.md" 2>/dev/null || {
|
|
12
|
+
{
|
|
13
|
+
echo "---"
|
|
14
|
+
echo "name: $IR_NAME"
|
|
15
|
+
[[ -n "$IR_MODEL" ]] && echo "model: $IR_MODEL"
|
|
16
|
+
echo "description: \"$IR_DESC_ESCAPED\""
|
|
17
|
+
echo "---"
|
|
18
|
+
echo ""
|
|
19
|
+
echo "$IR_BODY"
|
|
20
|
+
} > "${PI_SKILLS}/$IR_NAME/SKILL.md"
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
mkdir -p "${PI_PROMPTS:-.pi/prompts}"
|
|
24
|
+
{
|
|
25
|
+
echo "---"
|
|
26
|
+
echo "name: $IR_NAME"
|
|
27
|
+
echo "description: \"$IR_DESC_ESCAPED\""
|
|
28
|
+
echo "---"
|
|
29
|
+
echo ""
|
|
30
|
+
echo "$IR_BODY"
|
|
31
|
+
} > "${PI_PROMPTS}/$IR_NAME.md"
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
wire_context() {
|
|
35
|
+
source "$(dirname "${BASH_SOURCE[0]}")/../lib/context-wire.sh"
|
|
36
|
+
wire_context_mode symlink "${1:-CLAUDE.md}"
|
|
37
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# story: e37s10
|
|
3
|
+
render_skill() {
|
|
4
|
+
local out="${ZED_OUT:-.zed/skills}"
|
|
5
|
+
mkdir -p "$out/${IR_NAME:-_stub}" 2>/dev/null || true
|
|
6
|
+
}
|
|
7
|
+
wire_context() {
|
|
8
|
+
source "$(dirname "${BASH_SOURCE[0]}")/../lib/context-wire.sh"
|
|
9
|
+
wire_context_mode copy "${1:-AGENTS.md}"
|
|
10
|
+
}
|
|
@@ -11,6 +11,9 @@
|
|
|
11
11
|
|
|
12
12
|
set -euo pipefail
|
|
13
13
|
source "$(dirname "${BASH_SOURCE[0]}")/lib/python-env.sh"
|
|
14
|
+
source "$(dirname "${BASH_SOURCE[0]}")/lib/skill-common.sh"
|
|
15
|
+
resolve_repo_root
|
|
16
|
+
|
|
14
17
|
|
|
15
18
|
BLIND_SPOTS_JSON="$REPO_ROOT/specs/blind-spots.json"
|
|
16
19
|
EXEC_STATUS="$REPO_ROOT/specs/execution-status.yaml"
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# story: e37s06
|
|
3
|
+
# scenario: SC-e37s06-P1-01
|
|
4
|
+
set -euo pipefail
|
|
5
|
+
|
|
6
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
7
|
+
source "$SCRIPT_DIR/lib/skill-common.sh"
|
|
8
|
+
resolve_repo_root
|
|
9
|
+
|
|
10
|
+
DRY_RUN=0
|
|
11
|
+
for arg in "$@"; do
|
|
12
|
+
case "$arg" in
|
|
13
|
+
--dry-run) DRY_RUN=1 ;;
|
|
14
|
+
--help|-h)
|
|
15
|
+
echo "Usage: generate-context-bundle.sh [--dry-run]"
|
|
16
|
+
exit 0
|
|
17
|
+
;;
|
|
18
|
+
esac
|
|
19
|
+
done
|
|
20
|
+
|
|
21
|
+
bash "$SCRIPT_DIR/validate-targets-yaml.sh" >/dev/null
|
|
22
|
+
|
|
23
|
+
TARGETS_FILE="$SCRIPT_DIR/targets.yaml"
|
|
24
|
+
command -v yq >/dev/null || { echo "generate-context-bundle: yq required" >&2; exit 1; }
|
|
25
|
+
|
|
26
|
+
cd "$REPO_ROOT"
|
|
27
|
+
agents_src="AGENTS.md"
|
|
28
|
+
[[ -f "$agents_src" ]] || agents_src="docs/templates/AGENTS.md"
|
|
29
|
+
|
|
30
|
+
while IFS= read -r row; do
|
|
31
|
+
id=$(echo "$row" | yq -r '.id')
|
|
32
|
+
mode=$(echo "$row" | yq -r '.context.mode // ""')
|
|
33
|
+
[[ "$mode" == "null" || -z "$mode" || "$mode" == "native" ]] && continue
|
|
34
|
+
|
|
35
|
+
file=$(echo "$row" | yq -r '.context.file // ""')
|
|
36
|
+
bridge_file=$(echo "$row" | yq -r '.context.bridge_file // ""')
|
|
37
|
+
bridge_key=$(echo "$row" | yq -r '.context.bridge_key // "read"')
|
|
38
|
+
adapter=$(echo "$row" | yq -r '.context.adapter')
|
|
39
|
+
|
|
40
|
+
dest="${file:-$bridge_file}"
|
|
41
|
+
if [[ "$DRY_RUN" -eq 1 ]]; then
|
|
42
|
+
echo "would wire $id → $dest (mode=$mode, source=$agents_src)"
|
|
43
|
+
continue
|
|
44
|
+
fi
|
|
45
|
+
|
|
46
|
+
adapter_script="$SCRIPT_DIR/adapters/${adapter}.sh"
|
|
47
|
+
# shellcheck source=/dev/null
|
|
48
|
+
source "$adapter_script"
|
|
49
|
+
case "$mode" in
|
|
50
|
+
symlink) wire_context_mode symlink "$file" ;;
|
|
51
|
+
copy) wire_context_mode copy "$file" ;;
|
|
52
|
+
config-bridge) wire_context_mode config-bridge "$bridge_file" "$bridge_key" "$agents_src" ;;
|
|
53
|
+
esac
|
|
54
|
+
echo "wired $id → $dest"
|
|
55
|
+
done < <(yq -o=json '.targets[] | select(.context != null)' "$TARGETS_FILE" | jq -c '.')
|
|
56
|
+
|
|
57
|
+
echo "generate-context-bundle: done (source=$agents_src)"
|
package/scripts/install.sh
CHANGED
|
@@ -225,6 +225,25 @@ uninstall_pi() {
|
|
|
225
225
|
fi
|
|
226
226
|
}
|
|
227
227
|
|
|
228
|
+
# ── Codex CLI (e37s15) ───────────────────────────────────────────────────────
|
|
229
|
+
|
|
230
|
+
CODEX_DIR="$HOME/.codex"
|
|
231
|
+
CODEX_AGENTS="$CODEX_DIR/AGENTS.md"
|
|
232
|
+
CODEX_TEMPLATE="$REPO_ROOT/docs/templates/codex/AGENTS.md"
|
|
233
|
+
|
|
234
|
+
install_codex() {
|
|
235
|
+
echo ""
|
|
236
|
+
echo "Codex CLI → $CODEX_AGENTS"
|
|
237
|
+
[[ -f "$CODEX_TEMPLATE" ]] || { echo " skip: template missing $CODEX_TEMPLATE" >&2; return 0; }
|
|
238
|
+
link "$CODEX_TEMPLATE" "$CODEX_AGENTS"
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
uninstall_codex() {
|
|
242
|
+
echo ""
|
|
243
|
+
echo "Codex CLI → removing $CODEX_AGENTS"
|
|
244
|
+
unlink_if_managed "$CODEX_AGENTS" "$REPO_ROOT/"
|
|
245
|
+
}
|
|
246
|
+
|
|
228
247
|
# ── main ──────────────────────────────────────────────────────────────────────
|
|
229
248
|
|
|
230
249
|
echo "bigpowers install.sh — REPO: $REPO_ROOT"
|
|
@@ -236,6 +255,7 @@ if $UNINSTALL; then
|
|
|
236
255
|
uninstall_gemini
|
|
237
256
|
uninstall_pi
|
|
238
257
|
uninstall_cursor
|
|
258
|
+
uninstall_codex
|
|
239
259
|
echo ""
|
|
240
260
|
echo "bigpowers uninstalled."
|
|
241
261
|
else
|
|
@@ -243,6 +263,7 @@ else
|
|
|
243
263
|
install_gemini
|
|
244
264
|
install_pi
|
|
245
265
|
install_cursor
|
|
266
|
+
install_codex
|
|
246
267
|
echo ""
|
|
247
268
|
echo "bigpowers installed. Future updates:"
|
|
248
269
|
if [[ -d "$REPO_ROOT/.git" ]]; then
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# story: e37s05 e37s06
|
|
3
|
+
# scenario: SC-e37s06-P1-02
|
|
4
|
+
# Shared Context Derivative wiring — symlink with copy fallback (Windows-safe).
|
|
5
|
+
|
|
6
|
+
wire_symlink_or_copy() {
|
|
7
|
+
local src="$1"
|
|
8
|
+
local dest="$2"
|
|
9
|
+
|
|
10
|
+
[[ -f "$src" ]] || { echo "context-wire: source missing: $src" >&2; return 1; }
|
|
11
|
+
|
|
12
|
+
if [[ -L "$dest" ]] && [[ "$(readlink "$dest" 2>/dev/null)" == "$src" || "$(readlink "$dest" 2>/dev/null)" == "./$src" ]]; then
|
|
13
|
+
return 0
|
|
14
|
+
fi
|
|
15
|
+
if [[ -f "$dest" ]] && cmp -s "$src" "$dest" 2>/dev/null; then
|
|
16
|
+
return 0
|
|
17
|
+
fi
|
|
18
|
+
|
|
19
|
+
rm -f "$dest" 2>/dev/null || true
|
|
20
|
+
if ln -sf "$src" "$dest" 2>/dev/null; then
|
|
21
|
+
return 0
|
|
22
|
+
fi
|
|
23
|
+
|
|
24
|
+
echo "context-wire: symlink failed for $dest — using copy fallback" >&2
|
|
25
|
+
cp "$src" "$dest"
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
wire_config_bridge() {
|
|
29
|
+
local bridge_file="$1"
|
|
30
|
+
local bridge_key="$2"
|
|
31
|
+
local agents_path="${3:-AGENTS.md}"
|
|
32
|
+
|
|
33
|
+
mkdir -p "$(dirname "$bridge_file")"
|
|
34
|
+
if [[ -f "$bridge_file" ]] && grep -q "^${bridge_key}:" "$bridge_file" 2>/dev/null; then
|
|
35
|
+
return 0
|
|
36
|
+
fi
|
|
37
|
+
printf '%s: %s\n' "$bridge_key" "$agents_path" > "$bridge_file"
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
wire_context_mode() {
|
|
41
|
+
local mode="$1"
|
|
42
|
+
local file="${2:-}"
|
|
43
|
+
local bridge_file="${3:-}"
|
|
44
|
+
local bridge_key="${4:-read}"
|
|
45
|
+
local src="${5:-AGENTS.md}"
|
|
46
|
+
|
|
47
|
+
case "$mode" in
|
|
48
|
+
native) return 0 ;;
|
|
49
|
+
symlink|copy)
|
|
50
|
+
[[ -n "$file" ]] || { echo "context-wire: file required for mode=$mode" >&2; return 1; }
|
|
51
|
+
if [[ "$mode" == "copy" ]]; then
|
|
52
|
+
cp "$src" "$file"
|
|
53
|
+
else
|
|
54
|
+
wire_symlink_or_copy "$src" "$file"
|
|
55
|
+
fi
|
|
56
|
+
;;
|
|
57
|
+
config-bridge)
|
|
58
|
+
[[ -n "$bridge_file" ]] || { echo "context-wire: bridge_file required" >&2; return 1; }
|
|
59
|
+
wire_config_bridge "$bridge_file" "$bridge_key" "$src"
|
|
60
|
+
;;
|
|
61
|
+
*)
|
|
62
|
+
echo "context-wire: unknown mode: $mode" >&2
|
|
63
|
+
return 1
|
|
64
|
+
;;
|
|
65
|
+
esac
|
|
66
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# story: e37s08
|
|
3
|
+
# scenario: SC-e37s08-P1-01
|
|
4
|
+
|
|
5
|
+
assert_agents_md() {
|
|
6
|
+
local id="$1"
|
|
7
|
+
if [[ -f AGENTS.md ]] || [[ -f docs/templates/AGENTS.md ]]; then
|
|
8
|
+
echo "PASS $id:agents_md_exists"
|
|
9
|
+
return 0
|
|
10
|
+
fi
|
|
11
|
+
echo "FAIL $id:agents_md_exists — AGENTS.md missing"
|
|
12
|
+
return 1
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
assert_symlink_claude_md() {
|
|
16
|
+
local id="$1"
|
|
17
|
+
if [[ -L CLAUDE.md ]] || [[ -f CLAUDE.md ]]; then
|
|
18
|
+
echo "PASS $id:symlink_claude_md"
|
|
19
|
+
return 0
|
|
20
|
+
fi
|
|
21
|
+
echo "FAIL $id:symlink_claude_md — CLAUDE.md missing"
|
|
22
|
+
return 1
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
assert_cursor_rules_nonempty() {
|
|
26
|
+
local id="$1"
|
|
27
|
+
if [[ -d .cursor/rules ]] && [[ -n "$(ls -A .cursor/rules 2>/dev/null)" ]]; then
|
|
28
|
+
echo "PASS $id:cursor_rules_nonempty"
|
|
29
|
+
return 0
|
|
30
|
+
fi
|
|
31
|
+
echo "FAIL $id:cursor_rules_nonempty — .cursor/rules empty"
|
|
32
|
+
return 1
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
assert_gemini_ext_exists() {
|
|
36
|
+
local id="$1"
|
|
37
|
+
if [[ -d .gemini/extensions/bigpowers ]]; then
|
|
38
|
+
echo "PASS $id:gemini_ext_exists"
|
|
39
|
+
return 0
|
|
40
|
+
fi
|
|
41
|
+
echo "FAIL $id:gemini_ext_exists — gemini extension missing"
|
|
42
|
+
return 1
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
assert_pi_skills_nonempty() {
|
|
46
|
+
local id="$1"
|
|
47
|
+
if [[ -d .pi/skills ]] && [[ -n "$(ls -A .pi/skills 2>/dev/null)" ]]; then
|
|
48
|
+
echo "PASS $id:pi_skills_nonempty"
|
|
49
|
+
return 0
|
|
50
|
+
fi
|
|
51
|
+
echo "FAIL $id:pi_skills_nonempty — .pi/skills empty"
|
|
52
|
+
return 1
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
assert_aider_bridge() {
|
|
56
|
+
local id="$1"
|
|
57
|
+
if [[ -f .aider.conf.yml ]] && grep -q 'AGENTS.md' .aider.conf.yml 2>/dev/null; then
|
|
58
|
+
echo "PASS $id:aider_bridge"
|
|
59
|
+
return 0
|
|
60
|
+
fi
|
|
61
|
+
echo "SKIP $id:aider_bridge — opt_in not wired"
|
|
62
|
+
return 0
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
run_contract() {
|
|
66
|
+
local id="$1"
|
|
67
|
+
local contract="$2"
|
|
68
|
+
case "$contract" in
|
|
69
|
+
agents_md_exists) assert_agents_md "$id" ;;
|
|
70
|
+
symlink_claude_md) assert_symlink_claude_md "$id" ;;
|
|
71
|
+
cursor_rules_nonempty) assert_cursor_rules_nonempty "$id" ;;
|
|
72
|
+
gemini_ext_exists) assert_gemini_ext_exists "$id" ;;
|
|
73
|
+
pi_skills_nonempty) assert_pi_skills_nonempty "$id" ;;
|
|
74
|
+
aider_bridge) assert_aider_bridge "$id" ;;
|
|
75
|
+
*) echo "SKIP $id:$contract — unknown contract"; return 0 ;;
|
|
76
|
+
esac
|
|
77
|
+
}
|
|
@@ -30,6 +30,7 @@ MODE = sys.argv[6]
|
|
|
30
30
|
# 1. Parse YAML files → story inventory
|
|
31
31
|
# -----------------------------------------------------------------------
|
|
32
32
|
_MIN_STORY_BASELINE = 50 # floor assertion: --strict FAILs if story count drops below this
|
|
33
|
+
_STRICT_UNIMPLEMENTED_STATUSES = frozenset({"backlog", "todo", "planned"})
|
|
33
34
|
|
|
34
35
|
def _load_yaml(path: Path) -> dict:
|
|
35
36
|
"""Load a YAML file with PyYAML. Exits with code 1 if parse fails."""
|
|
@@ -290,10 +291,10 @@ if STRICT:
|
|
|
290
291
|
wsjf_sorted = sorted(set(s["wsjf"] for s in matrix_stories), reverse=True)
|
|
291
292
|
cutoff_idx = max(0, len(wsjf_sorted) // 4 - 1)
|
|
292
293
|
p0_threshold = wsjf_sorted[cutoff_idx] if cutoff_idx < len(wsjf_sorted) else 0
|
|
293
|
-
# Only flag
|
|
294
|
+
# Only flag stories expected to have implementation — skip backlog/todo/planned
|
|
294
295
|
uncovered_p0 = [s["id"] for s in matrix_stories
|
|
295
296
|
if s["wsjf"] >= p0_threshold and len(s["links"]) == 0
|
|
296
|
-
and s["status"]
|
|
297
|
+
and s["status"] not in _STRICT_UNIMPLEMENTED_STATUSES]
|
|
297
298
|
if uncovered_p0:
|
|
298
299
|
print(f"trace-stories.sh: STRICT FAIL — P0 stories with 0% coverage: {', '.join(uncovered_p0)}", file=sys.stderr)
|
|
299
300
|
sys.exit(2)
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
# story: e45s03
|
|
3
2
|
# sync-bugs-registry.sh — rebuild specs/bugs/registry.yaml + OKF concept bundles
|
|
4
3
|
set -euo pipefail
|
|
5
4
|
source "$(dirname "${BASH_SOURCE[0]}")/lib/python-env.sh"
|
|
6
5
|
source "$(dirname "${BASH_SOURCE[0]}")/lib/skill-common.sh"
|
|
6
|
+
resolve_repo_root
|
|
7
7
|
BUGS="$REPO_ROOT/specs/bugs"
|
|
8
8
|
mkdir -p "$BUGS"
|
|
9
9
|
|
|
@@ -18,6 +18,8 @@ repo_root = Path(sys.argv[2])
|
|
|
18
18
|
# ---- Phase 1: Build registry.yaml ----
|
|
19
19
|
entries = []
|
|
20
20
|
for path in sorted(bugs_dir.glob("BUG-*.md")):
|
|
21
|
+
if ".okf" in path.name:
|
|
22
|
+
continue
|
|
21
23
|
text = path.read_text(encoding="utf-8")
|
|
22
24
|
if not text.startswith("---"):
|
|
23
25
|
continue
|
package/scripts/sync-skills.sh
CHANGED
|
@@ -254,11 +254,18 @@ parse_frontmatter_okf() {
|
|
|
254
254
|
return 0
|
|
255
255
|
}
|
|
256
256
|
|
|
257
|
-
# ── Target registry
|
|
258
|
-
#
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
257
|
+
# ── Target registry (e37s07) ────────────────────────────────────────
|
|
258
|
+
# Load skill adapters from scripts/targets.yaml — no hardcoded target list.
|
|
259
|
+
TARGETS_FILE="$REPO_ROOT/scripts/targets.yaml"
|
|
260
|
+
SKILL_ADAPTERS=()
|
|
261
|
+
if [[ -f "$TARGETS_FILE" ]] && command -v yq >/dev/null 2>&1; then
|
|
262
|
+
bash "$REPO_ROOT/scripts/validate-targets-yaml.sh" >/dev/null
|
|
263
|
+
while IFS= read -r adapter; do
|
|
264
|
+
[[ -n "$adapter" && "$adapter" != "null" ]] && SKILL_ADAPTERS+=("$adapter")
|
|
265
|
+
done < <(yq -r '.targets[] | select(.skill != null) | .skill.adapter' "$TARGETS_FILE" | sort -u)
|
|
266
|
+
else
|
|
267
|
+
echo "sync-skills: WARN — targets.yaml missing; using legacy render list" >&2
|
|
268
|
+
SKILL_ADAPTERS=(cursor gemini pi)
|
|
262
269
|
fi
|
|
263
270
|
|
|
264
271
|
skill_count=0
|
|
@@ -283,12 +290,20 @@ while IFS= read -r skill_dir; do
|
|
|
283
290
|
[[ -z "$IR_NAME" ]] && continue
|
|
284
291
|
|
|
285
292
|
IR_BODY=$(build_body "$skill_md" "$skill_dir")
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
293
|
+
SKILL_MD_PATH="$skill_md"
|
|
294
|
+
|
|
295
|
+
# Dispatch to each skill adapter from registry (e37s07)
|
|
296
|
+
for adapter_name in "${SKILL_ADAPTERS[@]}"; do
|
|
297
|
+
adapter_script="$REPO_ROOT/scripts/adapters/${adapter_name}.sh"
|
|
298
|
+
# shellcheck source=/dev/null
|
|
299
|
+
source "$adapter_script"
|
|
300
|
+
render_skill
|
|
290
301
|
done
|
|
291
302
|
|
|
303
|
+
if [[ "$OKF_MODE" -eq 1 ]]; then
|
|
304
|
+
render_okf_concept
|
|
305
|
+
fi
|
|
306
|
+
|
|
292
307
|
skill_count=$((skill_count + 1))
|
|
293
308
|
done < <(iterate_skills)
|
|
294
309
|
|