bigpowers 2.84.0 → 2.85.0
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/.agents/skills/audit-code/SKILL.md +4 -7
- package/.agents/skills/craft-skill/SKILL.md +21 -4
- package/.agents/skills/grill-me/SKILL.md +12 -0
- package/.agents/skills/grill-with-docs/SKILL.md +12 -0
- package/.agents/skills/request-review/SKILL.md +1 -0
- package/.agents/skills/seed-conventions/SKILL.md +21 -4
- package/.agents/skills/stocktake-skills/SKILL.md +2 -0
- package/.agents/skills/wire-ci/SKILL.md +164 -181
- package/.codebuddy/skills/audit-code/SKILL.md +4 -7
- package/.codebuddy/skills/craft-skill/SKILL.md +21 -4
- package/.codebuddy/skills/grill-me/SKILL.md +12 -0
- package/.codebuddy/skills/grill-with-docs/SKILL.md +12 -0
- package/.codebuddy/skills/request-review/SKILL.md +1 -0
- package/.codebuddy/skills/seed-conventions/SKILL.md +21 -4
- package/.codebuddy/skills/stocktake-skills/SKILL.md +2 -0
- package/.codebuddy/skills/wire-ci/SKILL.md +164 -181
- package/.codex/skills/audit-code/SKILL.md +4 -7
- package/.codex/skills/craft-skill/SKILL.md +21 -4
- package/.codex/skills/grill-me/SKILL.md +12 -0
- package/.codex/skills/grill-with-docs/SKILL.md +12 -0
- package/.codex/skills/request-review/SKILL.md +1 -0
- package/.codex/skills/seed-conventions/SKILL.md +21 -4
- package/.codex/skills/stocktake-skills/SKILL.md +2 -0
- package/.codex/skills/wire-ci/SKILL.md +164 -181
- package/.hermes/skills/audit-code/SKILL.md +4 -7
- package/.hermes/skills/craft-skill/SKILL.md +21 -4
- package/.hermes/skills/grill-me/SKILL.md +12 -0
- package/.hermes/skills/grill-with-docs/SKILL.md +12 -0
- package/.hermes/skills/request-review/SKILL.md +1 -0
- package/.hermes/skills/seed-conventions/SKILL.md +21 -4
- package/.hermes/skills/stocktake-skills/SKILL.md +2 -0
- package/.hermes/skills/wire-ci/SKILL.md +164 -181
- package/.kilocode/rules/audit-code.md +4 -7
- package/.kilocode/rules/craft-skill.md +21 -4
- package/.kilocode/rules/grill-me.md +12 -0
- package/.kilocode/rules/grill-with-docs.md +12 -0
- package/.kilocode/rules/request-review.md +1 -0
- package/.kilocode/rules/seed-conventions.md +21 -4
- package/.kilocode/rules/stocktake-skills.md +2 -0
- package/.kilocode/rules/wire-ci.md +164 -181
- package/.mimocode/skills/audit-code/SKILL.md +4 -7
- package/.mimocode/skills/craft-skill/SKILL.md +21 -4
- package/.mimocode/skills/grill-me/SKILL.md +12 -0
- package/.mimocode/skills/grill-with-docs/SKILL.md +12 -0
- package/.mimocode/skills/request-review/SKILL.md +1 -0
- package/.mimocode/skills/seed-conventions/SKILL.md +21 -4
- package/.mimocode/skills/stocktake-skills/SKILL.md +2 -0
- package/.mimocode/skills/wire-ci/SKILL.md +164 -181
- package/.pi/package.json +1 -1
- package/.pi/prompts/audit-code.md +4 -7
- package/.pi/prompts/craft-skill.md +21 -4
- package/.pi/prompts/grill-me.md +12 -0
- package/.pi/prompts/grill-with-docs.md +12 -0
- package/.pi/prompts/request-review.md +1 -0
- package/.pi/prompts/seed-conventions.md +21 -4
- package/.pi/prompts/stocktake-skills.md +2 -0
- package/.pi/prompts/wire-ci.md +164 -181
- package/.pi/skills/audit-code/SKILL.md +4 -7
- package/.pi/skills/craft-skill/SKILL.md +21 -4
- package/.pi/skills/grill-me/SKILL.md +12 -0
- package/.pi/skills/grill-with-docs/SKILL.md +12 -0
- package/.pi/skills/request-review/SKILL.md +1 -0
- package/.pi/skills/seed-conventions/SKILL.md +21 -4
- package/.pi/skills/stocktake-skills/SKILL.md +2 -0
- package/.pi/skills/wire-ci/SKILL.md +164 -181
- package/.trae/skills/audit-code/SKILL.md +4 -7
- package/.trae/skills/craft-skill/SKILL.md +21 -4
- package/.trae/skills/grill-me/SKILL.md +12 -0
- package/.trae/skills/grill-with-docs/SKILL.md +12 -0
- package/.trae/skills/request-review/SKILL.md +1 -0
- package/.trae/skills/seed-conventions/SKILL.md +21 -4
- package/.trae/skills/stocktake-skills/SKILL.md +2 -0
- package/.trae/skills/wire-ci/SKILL.md +164 -181
- package/.windsurf/rules/audit-code.md +4 -7
- package/.windsurf/rules/craft-skill.md +21 -4
- package/.windsurf/rules/grill-me.md +12 -0
- package/.windsurf/rules/grill-with-docs.md +12 -0
- package/.windsurf/rules/request-review.md +1 -0
- package/.windsurf/rules/seed-conventions.md +21 -4
- package/.windsurf/rules/stocktake-skills.md +2 -0
- package/.windsurf/rules/wire-ci.md +164 -181
- package/.zcode/skills/audit-code/SKILL.md +4 -7
- package/.zcode/skills/craft-skill/SKILL.md +21 -4
- package/.zcode/skills/grill-me/SKILL.md +12 -0
- package/.zcode/skills/grill-with-docs/SKILL.md +12 -0
- package/.zcode/skills/request-review/SKILL.md +1 -0
- package/.zcode/skills/seed-conventions/SKILL.md +21 -4
- package/.zcode/skills/stocktake-skills/SKILL.md +2 -0
- package/.zcode/skills/wire-ci/SKILL.md +164 -181
- package/CHANGELOG.md +19 -0
- package/README.md +14 -1
- package/SKILL-INDEX.md +84 -76
- package/package.json +1 -1
- package/scripts/generate-skill-index.sh +20 -4
- package/scripts/golden-g04-selftest.sh +19 -0
- package/scripts/land-branch.sh +22 -9
- package/scripts/lib/__pycache__/link_utils.cpython-312.pyc +0 -0
- package/scripts/lib/__pycache__/srp_engine_links.cpython-312.pyc +0 -0
- package/scripts/lib/land-branch-push.sh +106 -0
- package/scripts/validate-agentic-ste.sh +229 -0
- package/skills/audit-code/SKILL.md +4 -7
- package/skills/craft-skill/SKILL.md +22 -4
- package/skills/grill-me/SKILL.md +12 -0
- package/skills/grill-with-docs/SKILL.md +12 -0
- package/skills/request-review/SKILL.md +1 -0
- package/skills/seed-conventions/SKILL.md +21 -4
- package/skills/stocktake-skills/SKILL.md +2 -0
- package/skills/visual-dashboard/scripts/frame-template.html +1 -39
- package/skills/wire-ci/REFERENCE.md +137 -152
- package/skills/wire-ci/SKILL.md +28 -30
- package/skills-lock.json +8 -8
- package/tests/test-land-branch-protected.sh +222 -0
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# story: e79s02
|
|
3
|
+
# validate-agentic-ste.sh — mechanical Agentic STE checks for instructional prose.
|
|
4
|
+
set -euo pipefail
|
|
5
|
+
|
|
6
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
7
|
+
REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
8
|
+
|
|
9
|
+
MAX_WORDS=20
|
|
10
|
+
BANNED_RE='\b(should|might|could|may|consider|try|generally|typically)\b'
|
|
11
|
+
|
|
12
|
+
STRICT=false
|
|
13
|
+
AUDIT=false
|
|
14
|
+
SELF_TEST=false
|
|
15
|
+
TARGETS=()
|
|
16
|
+
|
|
17
|
+
ste_usage() {
|
|
18
|
+
echo "Usage: bash scripts/validate-agentic-ste.sh [--self-test|--strict|--audit] [file|dir ...]"
|
|
19
|
+
echo " (no args) Run built-in fixture self-test"
|
|
20
|
+
echo " --strict Exit 1 on violations (craft-skill gate)"
|
|
21
|
+
echo " --audit WARN-only catalog scan (stocktake)"
|
|
22
|
+
exit 2
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
while [[ $# -gt 0 ]]; do
|
|
26
|
+
case "$1" in
|
|
27
|
+
--strict) STRICT=true; shift ;;
|
|
28
|
+
--audit) AUDIT=true; shift ;;
|
|
29
|
+
--self-test) SELF_TEST=true; shift ;;
|
|
30
|
+
-h|--help) ste_usage ;;
|
|
31
|
+
--) shift; TARGETS+=("$@"); break ;;
|
|
32
|
+
-*) echo "Unknown flag: $1" >&2; ste_usage ;;
|
|
33
|
+
*) TARGETS+=("$1"); shift ;;
|
|
34
|
+
esac
|
|
35
|
+
done
|
|
36
|
+
|
|
37
|
+
VIOLATIONS=0
|
|
38
|
+
WARNINGS=0
|
|
39
|
+
|
|
40
|
+
ste_report_fail() {
|
|
41
|
+
echo "FAIL: $1" >&2
|
|
42
|
+
VIOLATIONS=$((VIOLATIONS + 1))
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
ste_report_warn() {
|
|
46
|
+
echo "WARN: $1" >&2
|
|
47
|
+
WARNINGS=$((WARNINGS + 1))
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
ste_strip_frontmatter() {
|
|
51
|
+
awk '
|
|
52
|
+
BEGIN { n=0; emit=0 }
|
|
53
|
+
/^---$/ { n++; if (n==1) next; if (n==2) { emit=1; next } }
|
|
54
|
+
emit { print }
|
|
55
|
+
' "$1"
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
ste_extract_prose() {
|
|
59
|
+
local file="$1"
|
|
60
|
+
local body
|
|
61
|
+
if [[ "$(basename "$file")" == "SKILL.md" ]]; then
|
|
62
|
+
body="$(ste_strip_frontmatter "$file")"
|
|
63
|
+
else
|
|
64
|
+
body="$(cat "$file")"
|
|
65
|
+
fi
|
|
66
|
+
printf '%s\n' "$body" | awk '
|
|
67
|
+
BEGIN { in_code=0 }
|
|
68
|
+
/^```/ { in_code = !in_code; next }
|
|
69
|
+
in_code { next }
|
|
70
|
+
/^[[:space:]]*#/ { next }
|
|
71
|
+
/^[[:space:]]*\|/ { next }
|
|
72
|
+
/^[[:space:]]*<!--/ { next }
|
|
73
|
+
/^[[:space:]]*$/ { next }
|
|
74
|
+
/^# story:/ { next }
|
|
75
|
+
/^<!-- story:/ { next }
|
|
76
|
+
{ print }
|
|
77
|
+
'
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
ste_count_words() {
|
|
81
|
+
# shellcheck disable=SC2207
|
|
82
|
+
local words=($1)
|
|
83
|
+
echo "${#words[@]}"
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
ste_audit_line() {
|
|
87
|
+
local file="$1"
|
|
88
|
+
local line_no="$2"
|
|
89
|
+
local line="$3"
|
|
90
|
+
local label="${file}:${line_no}"
|
|
91
|
+
|
|
92
|
+
if echo "$line" | grep -qiE "$BANNED_RE"; then
|
|
93
|
+
local word
|
|
94
|
+
word="$(echo "$line" | grep -oiE "$BANNED_RE" | head -1)"
|
|
95
|
+
if $STRICT; then
|
|
96
|
+
ste_report_fail "$label — banned hedge modal '$word'"
|
|
97
|
+
else
|
|
98
|
+
ste_report_warn "$label — banned hedge modal '$word'"
|
|
99
|
+
fi
|
|
100
|
+
fi
|
|
101
|
+
|
|
102
|
+
local sentence
|
|
103
|
+
while IFS= read -r sentence; do
|
|
104
|
+
[[ -z "$sentence" ]] && continue
|
|
105
|
+
local trimmed
|
|
106
|
+
trimmed="$(echo "$sentence" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')"
|
|
107
|
+
[[ -z "$trimmed" ]] && continue
|
|
108
|
+
local wc
|
|
109
|
+
wc="$(ste_count_words "$trimmed")"
|
|
110
|
+
if (( wc > MAX_WORDS )); then
|
|
111
|
+
if $STRICT; then
|
|
112
|
+
ste_report_fail "$label — sentence has ${wc} words (max ${MAX_WORDS}): ${trimmed:0:60}..."
|
|
113
|
+
else
|
|
114
|
+
ste_report_warn "$label — sentence has ${wc} words (max ${MAX_WORDS}): ${trimmed:0:60}..."
|
|
115
|
+
fi
|
|
116
|
+
fi
|
|
117
|
+
done < <(echo "$line" | sed 's/[.!?]/&\n/g')
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
ste_audit_file() {
|
|
121
|
+
local file="$1"
|
|
122
|
+
[[ -f "$file" ]] || { ste_report_fail "not found: $file"; return; }
|
|
123
|
+
|
|
124
|
+
local prose line_no=0
|
|
125
|
+
prose="$(ste_extract_prose "$file")"
|
|
126
|
+
while IFS= read -r line; do
|
|
127
|
+
line_no=$((line_no + 1))
|
|
128
|
+
ste_audit_line "$file" "$line_no" "$line"
|
|
129
|
+
done <<< "$prose"
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
ste_collect_files() {
|
|
133
|
+
local path="$1"
|
|
134
|
+
if [[ -f "$path" ]]; then
|
|
135
|
+
echo "$path"
|
|
136
|
+
elif [[ -d "$path" ]]; then
|
|
137
|
+
find "$path" -type f \( -name 'SKILL.md' -o -name 'CLAUDE.md' -o -name 'CONVENTIONS.md' -o -name 'AGENTS.md' \) | sort
|
|
138
|
+
fi
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
ste_run_self_test() {
|
|
142
|
+
local tmp
|
|
143
|
+
tmp="$(mktemp -d)"
|
|
144
|
+
trap 'rm -rf "$tmp"' RETURN
|
|
145
|
+
|
|
146
|
+
cat > "$tmp/good-skill.md" <<'EOF'
|
|
147
|
+
---
|
|
148
|
+
name: fixture-good
|
|
149
|
+
description: Test fixture for Agentic STE validator. Use when running self-test.
|
|
150
|
+
---
|
|
151
|
+
# Fixture Good
|
|
152
|
+
> **HARD GATE** — Run Preflight before forward work.
|
|
153
|
+
Run tests after every change.
|
|
154
|
+
Write specs to specs/ at project root.
|
|
155
|
+
EOF
|
|
156
|
+
|
|
157
|
+
cat > "$tmp/bad-hedge.md" <<'EOF'
|
|
158
|
+
---
|
|
159
|
+
name: fixture-bad
|
|
160
|
+
description: Bad fixture.
|
|
161
|
+
---
|
|
162
|
+
You should consider running tests generally.
|
|
163
|
+
EOF
|
|
164
|
+
|
|
165
|
+
cat > "$tmp/bad-long.md" <<'EOF'
|
|
166
|
+
---
|
|
167
|
+
name: fixture-long
|
|
168
|
+
description: Long sentence fixture.
|
|
169
|
+
---
|
|
170
|
+
Run the full local green stack including compliance verification gates sync skills trace stories and catalog drift check before any forward implementation work on this repository.
|
|
171
|
+
EOF
|
|
172
|
+
|
|
173
|
+
local saved_strict=$STRICT saved_audit=$AUDIT
|
|
174
|
+
STRICT=true
|
|
175
|
+
AUDIT=false
|
|
176
|
+
VIOLATIONS=0
|
|
177
|
+
|
|
178
|
+
ste_audit_file "$tmp/good-skill.md"
|
|
179
|
+
if (( VIOLATIONS > 0 )); then
|
|
180
|
+
echo "SELF-TEST FAIL: good fixture should pass" >&2
|
|
181
|
+
return 1
|
|
182
|
+
fi
|
|
183
|
+
|
|
184
|
+
VIOLATIONS=0
|
|
185
|
+
ste_audit_file "$tmp/bad-hedge.md"
|
|
186
|
+
if (( VIOLATIONS == 0 )); then
|
|
187
|
+
echo "SELF-TEST FAIL: hedge fixture should fail" >&2
|
|
188
|
+
return 1
|
|
189
|
+
fi
|
|
190
|
+
|
|
191
|
+
VIOLATIONS=0
|
|
192
|
+
ste_audit_file "$tmp/bad-long.md"
|
|
193
|
+
if (( VIOLATIONS == 0 )); then
|
|
194
|
+
echo "SELF-TEST FAIL: long-sentence fixture should fail" >&2
|
|
195
|
+
return 1
|
|
196
|
+
fi
|
|
197
|
+
|
|
198
|
+
STRICT=$saved_strict
|
|
199
|
+
AUDIT=$saved_audit
|
|
200
|
+
VIOLATIONS=0
|
|
201
|
+
echo "validate-agentic-ste: self-test PASS"
|
|
202
|
+
return 0
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
if $SELF_TEST || [[ ${#TARGETS[@]} -eq 0 ]]; then
|
|
206
|
+
ste_run_self_test
|
|
207
|
+
exit $?
|
|
208
|
+
fi
|
|
209
|
+
|
|
210
|
+
if $AUDIT; then
|
|
211
|
+
STRICT=false
|
|
212
|
+
fi
|
|
213
|
+
|
|
214
|
+
for target in "${TARGETS[@]}"; do
|
|
215
|
+
while IFS= read -r f; do
|
|
216
|
+
[[ -n "$f" ]] && ste_audit_file "$f"
|
|
217
|
+
done < <(ste_collect_files "$target")
|
|
218
|
+
done
|
|
219
|
+
|
|
220
|
+
if (( VIOLATIONS > 0 )); then
|
|
221
|
+
echo "validate-agentic-ste: $VIOLATIONS violation(s)" >&2
|
|
222
|
+
exit 1
|
|
223
|
+
fi
|
|
224
|
+
|
|
225
|
+
if $AUDIT; then
|
|
226
|
+
echo "validate-agentic-ste: audit complete ($WARNINGS warning(s))"
|
|
227
|
+
else
|
|
228
|
+
echo "validate-agentic-ste: PASS"
|
|
229
|
+
fi
|
|
@@ -99,6 +99,10 @@ bash scripts/lib/parallel-review-worktrees.sh audit-code
|
|
|
99
99
|
- [ ] Dependency Inversion: dependencies injected, not imported globally where avoidable
|
|
100
100
|
- [ ] **Chapter 17 Heuristics**: Code is free of smells documented in `audit-code/HEURISTICS.md` (G, N, C, T)
|
|
101
101
|
|
|
102
|
+
### Refactoring Smells (Fowler)
|
|
103
|
+
|
|
104
|
+
Explicitly name any detected smells: Mysterious Name, Duplicated Code, Feature Envy, Data Clumps, Primitive Obsession, Message Chains, Middle Man.
|
|
105
|
+
|
|
102
106
|
### Code Style (CONVENTIONS.md)
|
|
103
107
|
|
|
104
108
|
- [ ] Functions: 4–20 lines; split if longer
|
|
@@ -110,13 +114,6 @@ bash scripts/lib/parallel-review-worktrees.sh audit-code
|
|
|
110
114
|
- [ ] Conditionals: expressed as positives (G29)
|
|
111
115
|
- [ ] Comments explain WHY, not WHAT
|
|
112
116
|
|
|
113
|
-
### Agent Readability (Akita's Lens)
|
|
114
|
-
|
|
115
|
-
- [ ] Functions are small enough to fit in a standard context window (4–20 lines)
|
|
116
|
-
- [ ] Names are unique and specific enough to be `grep`-able (grep returns < 5 hits)
|
|
117
|
-
- [ ] Types are explicit (no `any`, no inferred return types for public APIs)
|
|
118
|
-
- [ ] Code avoids deep nesting (max 2 levels) and uses early returns
|
|
119
|
-
|
|
120
117
|
### Red Flags
|
|
121
118
|
|
|
122
119
|
Before reporting, name any rationalization you caught yourself making for skipping a checklist item. Silence is not acceptable — if you skipped an item, state the reason explicitly.
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
# story: e45s02
|
|
2
2
|
<!-- story: e45s12 -->
|
|
3
|
+
<!-- story: e79s02 -->
|
|
3
4
|
---
|
|
4
5
|
name: craft-skill
|
|
5
6
|
model: sonnet
|
|
@@ -9,7 +10,7 @@ description: Create new bigpowers skills with proper structure, progressive disc
|
|
|
9
10
|
|
|
10
11
|
# Craft Skill
|
|
11
12
|
|
|
12
|
-
> **HARD GATE** — Do NOT name a skill without a two-word verb-noun pair. Do NOT merge a new skill without running `sync-skills.sh
|
|
13
|
+
> **HARD GATE** — Do NOT name a skill without a two-word verb-noun pair. Do NOT merge a new skill without running `sync-skills.sh`. Generated `.cursor/rules/` and `.gemini/` artifacts MUST match the source SKILL.md.
|
|
13
14
|
|
|
14
15
|
## CSO Description Discipline (e45s02)
|
|
15
16
|
|
|
@@ -24,11 +25,25 @@ The YAML `description` is the **Catalog Selection Object** — the only field ag
|
|
|
24
25
|
|
|
25
26
|
Move process detail into the SKILL.md body or REFERENCE.md — never into `description`.
|
|
26
27
|
|
|
28
|
+
## Agentic STE body discipline (e79s02)
|
|
29
|
+
|
|
30
|
+
Skill-body instructional prose MUST follow [AGENTIC-STE.md](../../docs/AGENTIC-STE.md).
|
|
31
|
+
|
|
32
|
+
| Rule | Limit |
|
|
33
|
+
|------|-------|
|
|
34
|
+
| Sentence length | ≤20 words per instruction sentence |
|
|
35
|
+
| Voice | Imperative, active |
|
|
36
|
+
| Directive terms | MUST, MUST NOT, NEVER, ALWAYS, DO, DO NOT |
|
|
37
|
+
| Banned modals | should, might, could, may, consider, try, generally, typically |
|
|
38
|
+
| Scope | SKILL.md body only — not YAML `description`, not `terse-mode` output |
|
|
39
|
+
|
|
40
|
+
> **HARD GATE** — Do NOT merge a new or edited skill until `bash scripts/validate-agentic-ste.sh --strict skills/<name>/SKILL.md` exits 0. Fix violations before `sync-skills.sh`.
|
|
41
|
+
|
|
27
42
|
## Process
|
|
28
43
|
|
|
29
44
|
1. **Gather requirements** — ask user about:
|
|
30
45
|
- What task/domain does the skill cover?
|
|
31
|
-
-
|
|
46
|
+
- Which use cases must the skill handle?
|
|
32
47
|
- Does it need executable scripts or just instructions?
|
|
33
48
|
- Any reference materials to include?
|
|
34
49
|
- What specs/ output does it produce (if any)?
|
|
@@ -44,7 +59,8 @@ Move process detail into the SKILL.md body or REFERENCE.md — never into `descr
|
|
|
44
59
|
- Additional reference files if content exceeds 100 lines
|
|
45
60
|
- Utility scripts if deterministic operations needed
|
|
46
61
|
|
|
47
|
-
**Auto-skill from library README:** When user provides a library README or API docs URL, extract
|
|
62
|
+
**Auto-skill from library README:** When user provides a library README or API docs URL, extract triggers and HARD GATEs.
|
|
63
|
+
Draft verify commands and specs/ output into SKILL.md. Do NOT invent APIs not in the source.
|
|
48
64
|
|
|
49
65
|
4. Add `model:` frontmatter (`haiku` | `sonnet` | `opus`) per [model-profiles.md](https://github.com/danielvm-git/bigpowers/blob/main/docs/references/model-profiles.md).
|
|
50
66
|
|
|
@@ -53,10 +69,11 @@ Move process detail into the SKILL.md body or REFERENCE.md — never into `descr
|
|
|
53
69
|
5. **Review with user** — present draft and ask:
|
|
54
70
|
- Does this cover your use cases?
|
|
55
71
|
- Anything missing or unclear?
|
|
56
|
-
-
|
|
72
|
+
- Does any section need more or less detail?
|
|
57
73
|
|
|
58
74
|
6. **Completion-honesty gate (HARD GATE — e45s02)** — Before declaring done:
|
|
59
75
|
- Run `bash scripts/validate-skill-description.sh skills/<name>/SKILL.md` — must exit 0
|
|
76
|
+
- Run `bash scripts/validate-agentic-ste.sh --strict skills/<name>/SKILL.md` — must exit 0 (e79s02)
|
|
60
77
|
- Run `bash scripts/sync-skills.sh` — must complete without error
|
|
61
78
|
- Run `bash scripts/run-skill-verify.sh <name>` if the skill defines a verify command
|
|
62
79
|
- Show terminal output for each — narration without evidence is rejected
|
|
@@ -81,6 +98,7 @@ After drafting, verify:
|
|
|
81
98
|
- [ ] Consistent terminology with CONVENTIONS.md
|
|
82
99
|
- [ ] specs/ output documented if applicable
|
|
83
100
|
- [ ] `validate-skill-description.sh` exits 0
|
|
101
|
+
- [ ] `validate-agentic-ste.sh --strict` exits 0 (e79s02)
|
|
84
102
|
- [ ] `sync-skills.sh` run to propagate to Cursor/Gemini
|
|
85
103
|
- [ ] `bash scripts/validate-skill-catalog.sh` passes for the new skill (HARD GATE — completion honesty)
|
|
86
104
|
|
package/skills/grill-me/SKILL.md
CHANGED
|
@@ -19,6 +19,14 @@ Interview relentlessly about every aspect of this plan until reaching shared und
|
|
|
19
19
|
|
|
20
20
|
If a question can be answered by exploring the codebase, explore it instead.
|
|
21
21
|
|
|
22
|
+
### Facts vs. Decisions Boundary
|
|
23
|
+
|
|
24
|
+
Distinguish between **facts** and **decisions**:
|
|
25
|
+
- **Facts** — things discoverable by exploring the codebase, reading docs, or checking APIs. Do not ask the user to confirm facts; find them yourself.
|
|
26
|
+
- **Decisions** — choices that require user input (trade-offs, preferences, priorities). Always present options and ask the user to choose.
|
|
27
|
+
|
|
28
|
+
Never "grill yourself" — if the answer is in the code, go find it. Only ask questions where the user's judgment is needed.
|
|
29
|
+
|
|
22
30
|
## Docs mode
|
|
23
31
|
|
|
24
32
|
Ground every challenge in real documentation — no assumption about a library's behavior goes unchecked. See [REFERENCE.md](REFERENCE.md) for the full process.
|
|
@@ -30,3 +38,7 @@ Short form:
|
|
|
30
38
|
4. Report confirmed ✓, corrected ✗ (with the real behavior), and uncertain → `spike-prototype`.
|
|
31
39
|
5. Update the plan for each confirmed discrepancy.
|
|
32
40
|
|
|
41
|
+
## Confirmation Gate
|
|
42
|
+
|
|
43
|
+
> **HARD GATE** — Do NOT enact the plan or generate specifications until the user explicitly confirms shared understanding. Wait for explicit approval (e.g., "looks good", "confirmed", "proceed") before transitioning to any implementation, spec-writing, or task-slicing step.
|
|
44
|
+
|
|
@@ -24,6 +24,18 @@ effort: standard
|
|
|
24
24
|
- If docs contradict the plan, plan loses until updated.
|
|
25
25
|
- Prefer official docs over blog posts.
|
|
26
26
|
|
|
27
|
+
## Facts vs. Decisions Boundary
|
|
28
|
+
|
|
29
|
+
Distinguish between **facts** and **decisions**:
|
|
30
|
+
- **Facts** — things discoverable by reading docs, checking APIs, or exploring the codebase. Do not ask the user to confirm facts; find them yourself.
|
|
31
|
+
- **Decisions** — choices that require user input (trade-offs, preferences, priorities). Always present options and ask the user to choose.
|
|
32
|
+
|
|
33
|
+
Never "grill yourself" — if the answer is in the docs, go fetch it. Only ask questions where the user's judgment is needed.
|
|
34
|
+
|
|
35
|
+
## Confirmation Gate
|
|
36
|
+
|
|
37
|
+
> **HARD GATE** — Do NOT enact the plan or generate specifications until the user explicitly confirms shared understanding. Wait for explicit approval (e.g., "looks good", "confirmed", "proceed") before transitioning to any implementation, spec-writing, or task-slicing step.
|
|
38
|
+
|
|
27
39
|
## Verify
|
|
28
40
|
|
|
29
41
|
→ verify: `grep -c 'https\?://' skills/grill-with-docs/SKILL.md | awk '{if($1>=2) print "OK"; else print "NEEDS DOCS"}'`
|
|
@@ -90,6 +90,7 @@ Review for:
|
|
|
90
90
|
4. Design — are there simpler or more robust approaches?
|
|
91
91
|
5. Edge cases — what inputs or states could cause failures?
|
|
92
92
|
6. Security — any injection, auth, or data exposure risks?
|
|
93
|
+
7. Refactoring smells — explicitly name any detected Fowler smells: Mysterious Name, Duplicated Code, Feature Envy, Data Clumps, Primitive Obsession, Message Chains, Middle Man
|
|
93
94
|
|
|
94
95
|
For each finding, categorize as: must-fix / should-fix / consider.
|
|
95
96
|
Run the verify command and report the result.
|
|
@@ -10,6 +10,7 @@ description: Generate CLAUDE.md and CONVENTIONS.md for a brand-new project throu
|
|
|
10
10
|
# story: e10s02
|
|
11
11
|
# story: e51s02
|
|
12
12
|
# story: e45s21
|
|
13
|
+
# story: e79s03
|
|
13
14
|
|
|
14
15
|
|
|
15
16
|
# Seed Conventions
|
|
@@ -33,13 +34,25 @@ Ask the user these questions (one at a time, wait for each answer):
|
|
|
33
34
|
2. **Stack** — "What language, framework, and runtime? (e.g. TypeScript / Next.js / Node 22)"
|
|
34
35
|
2b. **Stack profile (optional)** — Offer: `swift`, `typescript-vue`, `node-service`, or none. If chosen, merge the matching fragment from `profiles/<name>.md` into generated `CONVENTIONS.md`.
|
|
35
36
|
3. **Commands** — "What commands do you use for: run, test, build, lint?"
|
|
36
|
-
3b. **Preflight (optional)** — "What
|
|
37
|
+
3b. **Preflight (optional)** — "What command runs test, lint, and build together? If none, chain Test + Lint + Build into one **Preflight** row."
|
|
37
38
|
4. **Architecture** — "Key modules and relationships in 1–2 sentences."
|
|
38
39
|
5. **Conventions** — "Any naming, file organization, or patterns all agents must follow?"
|
|
39
40
|
6. **Never-do list** — "What are the hard stops? Things an agent must never touch?"
|
|
40
41
|
7. **Defensive code categories** — "Which apply? (Rate limit / Retry / Circuit breaker / Timeout / Graceful degradation)"
|
|
41
42
|
8. **Local tool wiring (optional)** — "Wire bigpowers for project-local tools? (Cursor, OpenCode, Cline, Aider, Codex CLI)" If yes, generate AGENTS.md spine artifacts per [REFERENCE.md](REFERENCE.md) §Local tool wiring and §AGENTS.md spine. If no, skip — standard seed output unchanged (no AGENTS.md spine unless opted in).
|
|
42
43
|
|
|
44
|
+
## Agentic STE for generated prose (e79s03)
|
|
45
|
+
|
|
46
|
+
When writing instructional lines in `CLAUDE.md`, `AGENTS.md`, or `CONVENTIONS.md`, follow [AGENTIC-STE.md](../../docs/AGENTIC-STE.md):
|
|
47
|
+
|
|
48
|
+
- Use directive vocabulary: MUST, MUST NOT, NEVER, ALWAYS, DO, DO NOT
|
|
49
|
+
- Do NOT use hedge modals listed in AGENTIC-STE.md Rule 3
|
|
50
|
+
- Cap each instruction sentence at 20 words
|
|
51
|
+
- Write imperative, active-voice lines — one instruction per line
|
|
52
|
+
- Do NOT apply Agentic STE to `terse-mode` (output compression is out of scope)
|
|
53
|
+
|
|
54
|
+
After generation, run `bash scripts/validate-agentic-ste.sh --strict CLAUDE.md CONVENTIONS.md` when those files exist in the target project.
|
|
55
|
+
|
|
43
56
|
## Generate files
|
|
44
57
|
|
|
45
58
|
After the interview, generate each file using the templates in [REFERENCE.md](REFERENCE.md):
|
|
@@ -66,9 +79,11 @@ echo "# Specs\n\nAll planning documents for this project." > specs/README.md
|
|
|
66
79
|
|
|
67
80
|
**Note:** `specs/state.yaml.lock` is NOT pre-created — acquired/released dynamically.
|
|
68
81
|
|
|
69
|
-
`specs/state.yaml` carries
|
|
82
|
+
`specs/state.yaml` carries top-level `workflow_mode` (`team-pr` | `solo-git`, default `solo-git`).
|
|
83
|
+
This is the **canonical integrate-mode signal** for all skills.
|
|
84
|
+
Set it once here. Skills such as `release-branch` read this file instead of sniffing profiles.
|
|
70
85
|
|
|
71
|
-
When generating `CLAUDE.md`,
|
|
86
|
+
When generating `CLAUDE.md`, chain Test + Lint + Build into one **Preflight** row if the user named no Preflight command.
|
|
72
87
|
|
|
73
88
|
### Self-installing fenced markers (e45s21)
|
|
74
89
|
|
|
@@ -80,7 +95,9 @@ Skills that write into `CLAUDE.md` or `AGENTS.md` MUST use **fenced HTML comment
|
|
|
80
95
|
<!-- END bigpowers:section-id -->
|
|
81
96
|
```
|
|
82
97
|
|
|
83
|
-
**Merge rule:** On update, replace only
|
|
98
|
+
**Merge rule:** On update, replace only content between matching `BEGIN`/`END` pairs.
|
|
99
|
+
If a marker pair is missing, append a new fenced block at file end.
|
|
100
|
+
Never rewrite the whole file.
|
|
84
101
|
|
|
85
102
|
**Standard marker IDs** for seeded projects (see [REFERENCE.md](REFERENCE.md) § Fenced markers):
|
|
86
103
|
|
|
@@ -9,6 +9,7 @@ effort: standard
|
|
|
9
9
|
|
|
10
10
|
# story: e09s01
|
|
11
11
|
<!-- story: e45s12 -->
|
|
12
|
+
<!-- story: e79s04 -->
|
|
12
13
|
|
|
13
14
|
|
|
14
15
|
# Stocktake Skills
|
|
@@ -28,6 +29,7 @@ Audit SKILL.md catalog for drift, stale triggers, missing HARD GATEs, and INDEX
|
|
|
28
29
|
## Process
|
|
29
30
|
|
|
30
31
|
0. **Catalog validator (code-enforced)** — run `bash scripts/validate-skill-catalog.sh`. Any FAIL is a critical finding before manual review. Add `--archive` to list zero-usage skills from `metrics.skill_timings` for auto-archiving candidates (move to `specs/epics/archive/` or delete after user confirms).
|
|
32
|
+
0b. **Agentic STE audit (e79s04)** — run `bash scripts/validate-agentic-ste.sh --audit skills/`. Flag hedge words and sentences over 20 words per [AGENTIC-STE.md](../../docs/AGENTIC-STE.md). Record WARN lines in the stocktake report as **STE debt** — do NOT rewrite the full catalog in one pass. Route critical repeat offenders to `evolve-skill`.
|
|
31
33
|
1. Run `bash scripts/audit-catalog.sh` to verify pi/skills ↔ source SKILL.md sync. Mismatch is a critical finding.
|
|
32
34
|
2. Run mode; for each skill check: exists, verb-noun, <300 lines total, HARD GATE present, INDEX row matches.
|
|
33
35
|
3. Write `specs/STOCKTAKE-<date>.md` with findings table (skill, issue, severity).
|
|
@@ -232,45 +232,7 @@
|
|
|
232
232
|
<div id="claude-content" class="spread">
|
|
233
233
|
<div class="wrap">
|
|
234
234
|
<div class="grid">
|
|
235
|
-
|
|
236
|
-
<h2 class="opt-align">Dashboard Template</h2>
|
|
237
|
-
<p class="subtitle">Mockup and structure using the new 12-column Müller-Brockmann grid.</p>
|
|
238
|
-
</div>
|
|
239
|
-
|
|
240
|
-
<div class="band section split">
|
|
241
|
-
<div>
|
|
242
|
-
<h3 class="opt-align">Split Left (6 cols)</h3>
|
|
243
|
-
<p>Aligned precisely to the grid. All baselines lock to 8px.</p>
|
|
244
|
-
</div>
|
|
245
|
-
<div>
|
|
246
|
-
<h3 class="opt-align">Split Right (6 cols)</h3>
|
|
247
|
-
<p>The gap between is precisely one gutter (24px).</p>
|
|
248
|
-
</div>
|
|
249
|
-
</div>
|
|
250
|
-
|
|
251
|
-
<div class="band section cards">
|
|
252
|
-
<div class="card">
|
|
253
|
-
<div class="card-image">Img 1</div>
|
|
254
|
-
<div class="card-body">
|
|
255
|
-
<h3>Card 1 (4 cols)</h3>
|
|
256
|
-
<p>Three cards fit perfectly in 12 columns.</p>
|
|
257
|
-
</div>
|
|
258
|
-
</div>
|
|
259
|
-
<div class="card">
|
|
260
|
-
<div class="card-image">Img 2</div>
|
|
261
|
-
<div class="card-body">
|
|
262
|
-
<h3>Card 2 (4 cols)</h3>
|
|
263
|
-
<p>Aligned on the baseline.</p>
|
|
264
|
-
</div>
|
|
265
|
-
</div>
|
|
266
|
-
<div class="card selected">
|
|
267
|
-
<div class="card-image">Img 3</div>
|
|
268
|
-
<div class="card-body">
|
|
269
|
-
<h3>Card 3 (4 cols)</h3>
|
|
270
|
-
<p>This card is selected.</p>
|
|
271
|
-
</div>
|
|
272
|
-
</div>
|
|
273
|
-
</div>
|
|
235
|
+
<!-- CONTENT -->
|
|
274
236
|
<!-- GRID GUIDES -->
|
|
275
237
|
<div class="guides" aria-hidden="true">
|
|
276
238
|
<div class="cols"></div><div class="rows"></div>
|