@aegis-scan/skills 0.4.0 → 0.5.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/ATTRIBUTION.md +111 -0
- package/CHANGELOG.md +48 -3
- package/package.json +1 -1
- package/skills/compliance/aegis-native/brutaler-anwalt/CHANGELOG.md +202 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/LICENSE +43 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/README.md +236 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/SKILL.md +339 -5
- package/skills/compliance/aegis-native/brutaler-anwalt/references/aegis-integration.md +3 -4
- package/skills/compliance/aegis-native/brutaler-anwalt/references/audit-patterns.md +842 -5
- package/skills/compliance/aegis-native/brutaler-anwalt/references/bgh-urteile.md +226 -10
- package/skills/compliance/aegis-native/brutaler-anwalt/references/branchenrecht.md +365 -1
- package/skills/compliance/aegis-native/brutaler-anwalt/references/checklisten.md +33 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/dsgvo.md +26 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BDSG/paragraphs.md +62 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BFSG/paragraphs.md +85 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BGB/paragraphs.md +112 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/DDG/paragraphs.md +71 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/DSGVO/articles.md +182 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/articles.md +108 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/articles.md +131 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/HGB-AO/paragraphs.md +61 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/INDEX.md +93 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/TDDDG/paragraphs.md +67 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/UWG/paragraphs.md +117 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/VSBG/paragraphs.md +57 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/it-recht.md +22 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/INDEX.md +122 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/ai/mistral-eu.md +123 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/ai/openai-dpa.md +120 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/auth/nextauth-tom.md +120 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/auth/supabase-auth-tom.md +104 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/proxy-csp-pattern.md +93 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/payment/stripe-pci-tom.md +121 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/tracking/plausible-pattern.md +107 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/AffiliateDisclaimer.tsx.example +54 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/COMPLIANCE-AUDIT-TRAIL-template.md +95 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/DSE-Section-UGC.md.example +77 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/DSFA-template.md +76 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/LostFoundReportForm-consent.tsx.example +126 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/README.md +33 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/UmamiScript.tsx.example +64 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/VVT-template.md +60 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/data-retention-cron.ts.example +52 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/data-retention-workflow.yml.example +47 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/proxy-strict-dynamic.ts.example +80 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/security.txt.example +26 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/scripts/health-check.sh +120 -0
- package/skills/defensive/aegis-native/rls-defense/SKILL.md +85 -0
- package/skills/foundation/aegis-native/aegis-module-builder/SKILL.md +5 -1
- package/skills/foundation/aegis-native/aegis-orchestrator/SKILL.md +87 -4
- package/skills/foundation/aegis-native/aegis-quality-gates/SKILL.md +69 -9
- package/skills/offensive/matty-fork/cicd-redteam/SKILL.md +531 -0
- package/skills/offensive/matty-fork/cloud-security/SKILL.md +106 -0
- package/skills/offensive/matty-fork/container-escape/SKILL.md +174 -0
- package/skills/offensive/matty-fork/mobile-pentester/SKILL.md +357 -0
- package/skills/offensive/matty-fork/subdomain-takeover/SKILL.md +154 -0
- package/skills/osint/elementalsouls-fork/offensive-osint/README.md +92 -0
- package/skills/osint/elementalsouls-fork/offensive-osint/SKILL.md +4177 -0
- package/skills/osint/elementalsouls-fork/osint-methodology/README.md +66 -0
- package/skills/osint/elementalsouls-fork/osint-methodology/SKILL.md +1695 -0
- package/sbom.cdx.json +0 -1
|
@@ -26,8 +26,9 @@ Before responding to ANY user request, this skill MUST:
|
|
|
26
26
|
3. **Read** `AGENTS.md` (router + tool-mapping table — already in context if AGENTS.md was loaded).
|
|
27
27
|
4. **Read** project-skill if present: `.claude/skills/<project-slug>/SKILL.md`.
|
|
28
28
|
5. **Read** `.aegis/state.json` to pick up the use-case + last completed phase.
|
|
29
|
-
6. **
|
|
30
|
-
7. **
|
|
29
|
+
6. **Read** `.aegis/Plans.md` if present — the live working-plan SSOT (see "Plans.md" section below). Skip if missing; orchestrator initializes it during Phase 3 dispatch.
|
|
30
|
+
7. **Print** to the user: `Tool-inventory: [...], Skills available: [...], Project-state: phase X, Use-case: Y, Open tasks: N`.
|
|
31
|
+
8. **THEN** process the user's request — never before.
|
|
31
32
|
|
|
32
33
|
If any of (1)-(5) is missing, STOP and report the gap explicitly. Don't improvise — `aegis foundation init` should have populated them; if it hasn't, the fix is to run init, not to skip the bootstrap.
|
|
33
34
|
|
|
@@ -105,7 +106,87 @@ When the user says "commit" / "push" / "release" — orchestrator invokes `aegis
|
|
|
105
106
|
|
|
106
107
|
### Phase 5: Session-end handover
|
|
107
108
|
|
|
108
|
-
When the user says "fertig" / "handover" / "session-ende" / "übergabe" — orchestrator invokes `aegis-handover-writer` to draft the structured handover-file + update the `HANDOVER-LATEST.md` symlink.
|
|
109
|
+
When the user says "fertig" / "handover" / "session-ende" / "übergabe" — orchestrator invokes `aegis-handover-writer` to draft the structured handover-file + update the `HANDOVER-LATEST.md` symlink. The handover-writer reads `.aegis/Plans.md` to summarize task-status into the handover doc.
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## Plans.md — Live Working-Plan SSOT
|
|
114
|
+
|
|
115
|
+
`.aegis/Plans.md` is the single source of truth for the **current** working plan (in-flight tasks, blockers, acceptance criteria). It complements (not replaces) `state.json` (machine-readable phase-state) and handover docs (point-in-time snapshots at session boundaries).
|
|
116
|
+
|
|
117
|
+
> Concept adapted from [Chachamaru127/claude-code-harness](https://github.com/Chachamaru127/claude-code-harness) (MIT) — their `Plans.md` SSOT pattern. AEGIS adapts the idea, not the tool: no Go binary, no marketplace plugin, no `/harness-*` verb-commands. Pure markdown discipline integrated into the existing AEGIS skill cluster.
|
|
118
|
+
|
|
119
|
+
### Lifecycle
|
|
120
|
+
|
|
121
|
+
1. **Initialize** — orchestrator creates `.aegis/Plans.md` on first dispatch if absent. Template is the format below.
|
|
122
|
+
2. **Update** — every specialist skill that performs work updates the relevant task row (status, blockers, AC checkbox progress). Module-builder, customer-build, audit, skill-creator, dsgvo-compliance all touch this file as they work.
|
|
123
|
+
3. **Summarize** — handover-writer reads Plans.md at session-end and folds the open-task-list into the handover doc's `§5 Open` section.
|
|
124
|
+
4. **Reset** — when a use-case completes (e.g., customer-build hits DONE-with-proof), orchestrator archives Plans.md to `.aegis/Plans-archive/<timestamp>.md` and starts a fresh one for the next use-case.
|
|
125
|
+
|
|
126
|
+
### Format
|
|
127
|
+
|
|
128
|
+
```markdown
|
|
129
|
+
# Plans.md — Working Plan
|
|
130
|
+
|
|
131
|
+
**Use-case:** customer-build (or compliance-audit / dev-feature / aegis-self-test / skill-authoring)
|
|
132
|
+
**Started:** 2026-04-28T14:00Z
|
|
133
|
+
**Last updated:** 2026-04-28T15:42Z
|
|
134
|
+
**Phase:** 3 of 7 (component-build)
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## Tasks
|
|
139
|
+
|
|
140
|
+
### T01 — [DONE] Briefing-validation against schema
|
|
141
|
+
|
|
142
|
+
**AC:**
|
|
143
|
+
- [x] Briefing parsed without errors
|
|
144
|
+
- [x] All required schema-fields present
|
|
145
|
+
- [x] Pages-list extracted with N=5 entries
|
|
146
|
+
|
|
147
|
+
**Notes:** parsed-briefing.json written to .aegis/
|
|
148
|
+
|
|
149
|
+
### T02 — [IN PROGRESS] Component-tree binding to project library
|
|
150
|
+
|
|
151
|
+
**AC:**
|
|
152
|
+
- [x] Library inventory loaded
|
|
153
|
+
- [x] Pages 1-3 bound to library components
|
|
154
|
+
- [ ] Pages 4-5 bound (BLOCKER: missing testimonial-component variant)
|
|
155
|
+
- [ ] Component-tree exported as machine-readable JSON
|
|
156
|
+
|
|
157
|
+
**Notes:** Pages 4-5 use a variant of testimonial-card that the project library does not ship. Operator decision needed: drop the variant, request library extension, or use the closest existing variant.
|
|
158
|
+
|
|
159
|
+
### T03 — [PENDING] Phase-6 mid-audit
|
|
160
|
+
|
|
161
|
+
**AC:**
|
|
162
|
+
- [ ] aegis-scan run on the in-progress build
|
|
163
|
+
- [ ] brutaler-anwalt HUNT on impressum + cookie + DSE
|
|
164
|
+
- [ ] Repair-loop ≤ 3 iterations OR document blockers
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## Blockers
|
|
169
|
+
|
|
170
|
+
- B01 (T02) — Library variant missing for testimonial-card. Awaiting operator decision.
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### Acceptance-Criteria template
|
|
174
|
+
|
|
175
|
+
Every task carries an explicit AC list (1-N checkboxes). The discipline:
|
|
176
|
+
|
|
177
|
+
- AC must be **observable** (passes a check, file exists, command exits 0, etc.) — not subjective ("looks good").
|
|
178
|
+
- AC must be **complete** — task is DONE only when all AC are checked. No "looks done at 80%".
|
|
179
|
+
- AC must be **independently verifiable** — another agent reading the AC list can confirm pass/fail without context from the task-author.
|
|
180
|
+
|
|
181
|
+
When task is blocked, the AC stays unchanged (don't lower the bar to fit the blocker). Document the blocker explicitly in `## Blockers` section + flag in the task row.
|
|
182
|
+
|
|
183
|
+
### Cross-references
|
|
184
|
+
|
|
185
|
+
- `aegis-module-builder` reads Plans.md for task-AC discipline + writes back module-task progress.
|
|
186
|
+
- `aegis-customer-build` writes per-phase tasks into Plans.md as it executes the 7-phase pipeline.
|
|
187
|
+
- `aegis-audit` writes audit-finding tasks into Plans.md (1 task per layer-finding).
|
|
188
|
+
- `aegis-handover-writer` reads Plans.md → summarizes into handover §5 Open.
|
|
189
|
+
- `aegis-quality-gates` does NOT touch Plans.md — it is a stateless verifier; results go to `.aegis/verify-report.json`.
|
|
109
190
|
|
|
110
191
|
---
|
|
111
192
|
|
|
@@ -113,12 +194,14 @@ When the user says "fertig" / "handover" / "session-ende" / "übergabe" — orch
|
|
|
113
194
|
|
|
114
195
|
Before declaring the orchestrator-handoff complete for a session:
|
|
115
196
|
|
|
116
|
-
- [ ] Bootstrap-checklist completed (all
|
|
197
|
+
- [ ] Bootstrap-checklist completed (all 8 steps, no skipping)
|
|
198
|
+
- [ ] `.aegis/Plans.md` initialized for the current use-case (or carried-over from prior session if mid-use-case)
|
|
117
199
|
- [ ] Specialist skill identified + dispatched (or use-case ambiguity reported back to user)
|
|
118
200
|
- [ ] Quality-gates run before any commit (no `--no-verify` bypass)
|
|
119
201
|
- [ ] Session-end handover written (or explicitly deferred-to-next-session if user opts out)
|
|
120
202
|
- [ ] No specialist invoked without verifying its `metadata.required_tools` against the AGENTS.md tool-mapping table for the current harness
|
|
121
203
|
- [ ] `.aegis/state.json` updated with the new phase / last-action timestamp
|
|
204
|
+
- [ ] `.aegis/Plans.md` reflects the current task-state (closed tasks marked DONE, blockers documented)
|
|
122
205
|
|
|
123
206
|
If any checkbox is unmet: NOT done. Report which step is open + why + what needs to happen.
|
|
124
207
|
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
<!-- aegis-local: AEGIS-native skill, MIT-licensed; runs the canonical 9-gate quality-check sequence pre-commit and post-build, fails-closed if any gate is red, produces a JSON+markdown report. The external safety-net per spec §2 Component 5. -->
|
|
2
2
|
---
|
|
3
3
|
name: aegis-quality-gates
|
|
4
|
-
description: One-shot
|
|
4
|
+
description: One-shot 10-quality-gate runner. Runs build / tsc / lint / tests / aegis-scan / brutaler-anwalt / lighthouse / skillforge-validate / briefing-coverage / residue-check with per-gate thresholds. Returns exit 0 all-green or exit 1 with failing-gate list. Produces .aegis/verify-report.json + markdown summary. Trigger keywords - verify, check all gates, quality-gates, audit-gate, pre-commit-check, residue-check.
|
|
5
5
|
model: sonnet
|
|
6
6
|
license: MIT
|
|
7
7
|
metadata:
|
|
8
8
|
required_tools: "shell-ops,file-ops"
|
|
9
9
|
required_audit_passes: "1"
|
|
10
|
-
enforced_quality_gates: "
|
|
10
|
+
enforced_quality_gates: "10"
|
|
11
11
|
pre_done_audit: "true"
|
|
12
12
|
---
|
|
13
13
|
|
|
14
|
-
# aegis-quality-gates —
|
|
14
|
+
# aegis-quality-gates — 10-Gate Verifier
|
|
15
15
|
|
|
16
16
|
Single-purpose skill: run the canonical AEGIS Foundation quality-gate sequence, return pass/fail per gate, fail-closed when any gate is red. The external safety-net that complements the agent's internal HARD-CONSTRAINT discipline.
|
|
17
17
|
|
|
@@ -55,7 +55,7 @@ Be the single source of truth for "is this build ready to commit / push / publis
|
|
|
55
55
|
|
|
56
56
|
## Process
|
|
57
57
|
|
|
58
|
-
### The
|
|
58
|
+
### The 10 gates (sequence + thresholds per spec §6)
|
|
59
59
|
|
|
60
60
|
| # | Gate | Command | Threshold | Mode |
|
|
61
61
|
|---|---|---|---|---|
|
|
@@ -68,6 +68,7 @@ Be the single source of truth for "is this build ready to commit / push / publis
|
|
|
68
68
|
| 7 | lighthouse | `npx -y @lhci/cli` | Mobile ≥ 75, Desktop ≥ 90, A11y/SEO/BP = 100 | --final only |
|
|
69
69
|
| 8 | skillforge-validate | `python3 /tmp/SkillForge/scripts/validate-skill.py <each-touched-skill>` | 16/17 or higher per touched skill | always (when skills touched) |
|
|
70
70
|
| 9 | briefing-coverage | custom check: every page in briefing.md exists in built artifact | 100% | --final + briefing present |
|
|
71
|
+
| 10 | residue-check | scan for stale references (see "Residue-Check" section below) | 0 stale refs, 0 broken cross-links | --quick + --final |
|
|
71
72
|
|
|
72
73
|
### Phase 1: Discover gates that apply
|
|
73
74
|
|
|
@@ -87,13 +88,72 @@ Exit 0 if all applicable gates pass. Exit 1 otherwise — non-zero exit triggers
|
|
|
87
88
|
|
|
88
89
|
---
|
|
89
90
|
|
|
91
|
+
## Residue-Check (Gate 10) — Stale-Reference Detection
|
|
92
|
+
|
|
93
|
+
Detects references that became stale through edits, rebases, or refactors but were not updated. The class of bug that motivated this gate: a handover-doc cited commit-SHA `c89bf3f` after a `git rebase` invalidated it, leaving an operator-procedure that pointed at a non-existent commit.
|
|
94
|
+
|
|
95
|
+
> Concept adapted from [Chachamaru127/claude-code-harness](https://github.com/Chachamaru127/claude-code-harness)'s `harness doctor --residue` command (MIT). AEGIS adapts the methodology, not the binary: pure shell + grep, integrated as gate 10 of this verifier rather than a standalone tool.
|
|
96
|
+
|
|
97
|
+
### What counts as "residue"
|
|
98
|
+
|
|
99
|
+
| Residue class | Detection |
|
|
100
|
+
|---|---|
|
|
101
|
+
| Stale commit-SHAs in handover docs | Each 7-40 hex SHA in `*.md` is `git cat-file -e <sha>`-tested; missing → stale |
|
|
102
|
+
| Broken markdown cross-links to local files | Each `](./...)` or `](../...)` link is path-tested; missing target → broken |
|
|
103
|
+
| Orphan path references in skill bodies | Paths like `packages/skills/skills/<...>/<skill>/<...>` are existence-tested |
|
|
104
|
+
| Dead `<!-- aegis-local: -->` provenance refs | Header pointing at `<source>@<sha>` where `<sha>` is no longer reachable → stale fork-base |
|
|
105
|
+
| `_(post-X.Y.Z)_` markers past their version | Version-X.Y.Z is current → marker is stale, content should be active |
|
|
106
|
+
| Phantom skill names in `_INDEX.md` routing tables | Skill name in row → SKILL.md must exist at the cited path |
|
|
107
|
+
|
|
108
|
+
### Detection commands
|
|
109
|
+
|
|
110
|
+
`aegis foundation verify --residue` (planned in Phase 3 CLI per the foundation handover §5 Pri 2) implements this gate. Until then, the methodology is documented here so any agent or operator can run it manually:
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
# Stale SHA detection in handover docs
|
|
114
|
+
for sha in $(grep -roE '\b[0-9a-f]{7,40}\b' docs/handover seitengold-build/strategy 2>/dev/null \
|
|
115
|
+
| awk -F: '{print $2}' | sort -u); do
|
|
116
|
+
git cat-file -e "$sha" 2>/dev/null || echo "STALE-SHA: $sha"
|
|
117
|
+
done
|
|
118
|
+
|
|
119
|
+
# Broken markdown cross-links (relative paths)
|
|
120
|
+
grep -roE '\]\((\./|\.\./)[^)]+\)' packages/skills/skills/ \
|
|
121
|
+
| sed 's/.*\](\(.*\))/\1/' | sort -u \
|
|
122
|
+
| while read p; do [ -e "$p" ] || echo "BROKEN-LINK: $p"; done
|
|
123
|
+
|
|
124
|
+
# Phantom _INDEX.md skill rows
|
|
125
|
+
for idx in packages/skills/skills/*/_INDEX.md; do
|
|
126
|
+
awk -F'`' '/SKILL\.md`/ {print $4}' "$idx" \
|
|
127
|
+
| while read p; do [ -e "packages/skills/skills/$p" ] || echo "PHANTOM-SKILL-ROW in $idx: $p"; done
|
|
128
|
+
done
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### Threshold
|
|
132
|
+
|
|
133
|
+
- **0 stale SHAs** in any tracked handover/state doc — strict
|
|
134
|
+
- **0 broken cross-links** in shipped SKILL.md or `_INDEX.md` content — strict
|
|
135
|
+
- **0 orphan path references** in body of any aegis-native skill — strict
|
|
136
|
+
- **0 phantom skill rows** in any `_INDEX.md` — strict
|
|
137
|
+
- **0 dead aegis-local headers** — strict
|
|
138
|
+
|
|
139
|
+
Any non-zero count fails the gate. Output written to `.aegis/verify-report.json` under `residue: { stale_shas: [...], broken_links: [...], orphan_paths: [...], phantom_rows: [...], dead_provenance: [...] }`.
|
|
140
|
+
|
|
141
|
+
### When to run
|
|
142
|
+
|
|
143
|
+
- `--quick` mode (pre-commit): include residue-check (it's fast — pure grep + path tests, no compilation).
|
|
144
|
+
- `--final` mode (end-of-build, pre-publish): always include.
|
|
145
|
+
- `--residue` mode (operator-on-demand): runs gate 10 only, useful after a rebase or merge to verify documentation didn't fall behind.
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
90
149
|
## Verification / Success Criteria
|
|
91
150
|
|
|
92
151
|
This skill's own success criteria (it's a verifier-of-verifiers):
|
|
93
152
|
|
|
94
|
-
- [ ] Each of the
|
|
95
|
-
- [ ] `--quick` mode runs gates 1-4 in under 30 seconds typical (so pre-commit-loop stays usable)
|
|
96
|
-
- [ ] `--final` mode runs all
|
|
153
|
+
- [ ] Each of the 10 gates is implemented + integration-tested (gate fires real command, parses real output)
|
|
154
|
+
- [ ] `--quick` mode runs gates 1-4 + 10 in under 30 seconds typical (so pre-commit-loop stays usable)
|
|
155
|
+
- [ ] `--final` mode runs all 10 gates + writes `.aegis/verify-report.json` + prints markdown summary
|
|
156
|
+
- [ ] `--residue` mode runs gate 10 only (operator-on-demand post-rebase / post-merge check)
|
|
97
157
|
- [ ] Exit-code is 0 iff every applicable gate passed (no false-positive exit 0 with red gates)
|
|
98
158
|
- [ ] Per-gate threshold is read from the active preset (`presets/<use-case>.yaml`), not hardcoded
|
|
99
159
|
- [ ] husky-template `templates/customer-project/.husky/pre-commit` invokes this skill correctly
|
|
@@ -107,7 +167,7 @@ This skill's own success criteria (it's a verifier-of-verifiers):
|
|
|
107
167
|
- ❌ Silent skipping — if a gate's underlying tool is missing (e.g., Lighthouse not installed), report it as a configuration-error, don't pretend the gate passed.
|
|
108
168
|
- ❌ Returning exit 0 while ANY gate is red — even if "the failing gate doesn't matter for this commit". Use preset to exclude gates by use-case, not by ad-hoc judgment.
|
|
109
169
|
- ❌ Allowing `--no-verify` to silently bypass — log every bypass to `SECURITY-EXCEPTION.md`, fail-closed if file is missing, alert on push.
|
|
110
|
-
- ❌ Running the full
|
|
170
|
+
- ❌ Running the full 10-gate sequence on every keystroke — pre-commit gets `--quick`, end-of-build gets `--final`.
|
|
111
171
|
- ❌ Hard-coding thresholds in the skill body — thresholds live in `presets/<use-case>.yaml` so projects with different bars (e.g., proof-of-concept vs production) can configure.
|
|
112
172
|
- ❌ Skipping the JSON report — downstream tooling depends on `.aegis/verify-report.json` being well-formed.
|
|
113
173
|
|
|
@@ -115,7 +175,7 @@ This skill's own success criteria (it's a verifier-of-verifiers):
|
|
|
115
175
|
|
|
116
176
|
## Extension Points
|
|
117
177
|
|
|
118
|
-
- **New gate**: add a row to the
|
|
178
|
+
- **New gate**: add a row to the 10-gate table here + add the gate-implementation in `aegis foundation verify` CLI command code (`packages/cli/src/commands/foundation/verify.ts`). Update preset YAML schema to allow the new gate's threshold-block. Update each `presets/<use-case>.yaml` to opt-in or opt-out.
|
|
119
179
|
- **Per-project threshold-overrides**: a project's `aegis.config.json` can override the preset's threshold for one gate (e.g., a starter-template might cap aegis-scan target at 800 instead of 950). Don't override in code; override in config.
|
|
120
180
|
- **Custom gate-implementations**: for organisation-specific gates (e.g., "all images must be optimised"), add them as `presets/<use-case>.yaml` `custom_gates:` entries pointing at a node-script that returns `{name, pass, output}`. Skill calls the script as if it were a built-in gate.
|
|
121
181
|
- **Quick-vs-final composition**: extend the gate-table with a `mode` column listing `quick` / `final` / `both`. The CLI flag selects which subset runs.
|