tribunal-kit 6.0.0 → 7.0.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/.agent/.manifest.json +78 -0
- package/.agent/ARCHITECTURE.md +19 -241
- package/.agent/agents/accessibility-reviewer.md +23 -16
- package/.agent/agents/ai-code-reviewer.md +25 -21
- package/.agent/agents/anti-pattern-reviewer.md +12 -7
- package/.agent/agents/api-architect.md +1 -0
- package/.agent/agents/backend-specialist.md +23 -22
- package/.agent/agents/cloud-engineer.md +1 -0
- package/.agent/agents/code-archaeologist.md +1 -0
- package/.agent/agents/complexity-reviewer.md +10 -7
- package/.agent/agents/database-architect.md +3 -2
- package/.agent/agents/db-latency-auditor.md +6 -2
- package/.agent/agents/debugger.md +3 -2
- package/.agent/agents/dependency-reviewer.md +1 -0
- package/.agent/agents/devops-engineer.md +9 -8
- package/.agent/agents/documentation-writer.md +6 -5
- package/.agent/agents/explorer-agent.md +1 -0
- package/.agent/agents/frontend-reviewer.md +21 -17
- package/.agent/agents/frontend-specialist.md +23 -20
- package/.agent/agents/game-developer.md +1 -0
- package/.agent/agents/interaction-reviewer.md +10 -5
- package/.agent/agents/logic-reviewer.md +3 -0
- package/.agent/agents/minimalist-reviewer.md +6 -0
- package/.agent/agents/mobile-developer.md +7 -6
- package/.agent/agents/mobile-reviewer.md +14 -13
- package/.agent/agents/orchestrator.md +3 -0
- package/.agent/agents/penetration-tester.md +1 -0
- package/.agent/agents/performance-optimizer.md +6 -5
- package/.agent/agents/performance-reviewer.md +6 -6
- package/.agent/agents/pipeline-reviewer.md +144 -0
- package/.agent/agents/precedence-reviewer.md +1 -0
- package/.agent/agents/product-manager.md +1 -0
- package/.agent/agents/product-owner.md +1 -0
- package/.agent/agents/product-reviewer.md +12 -7
- package/.agent/agents/project-planner.md +3 -0
- package/.agent/agents/qa-automation-engineer.md +50 -43
- package/.agent/agents/resilience-reviewer.md +1 -0
- package/.agent/agents/schema-reviewer.md +1 -0
- package/.agent/agents/security-auditor.md +24 -24
- package/.agent/agents/seo-specialist.md +33 -23
- package/.agent/agents/sql-reviewer.md +5 -4
- package/.agent/agents/supervisor-agent.md +12 -2
- package/.agent/agents/swarm-worker-contracts.md +13 -13
- package/.agent/agents/swarm-worker-registry.md +51 -51
- package/.agent/agents/system-architect.md +1 -0
- package/.agent/agents/test-coverage-reviewer.md +25 -22
- package/.agent/agents/test-engineer.md +12 -11
- package/.agent/agents/throughput-optimizer.md +45 -40
- package/.agent/agents/type-safety-reviewer.md +5 -4
- package/.agent/agents/ui-ux-auditor.md +6 -4
- package/.agent/agents/ui-visual-auditor.md +3 -0
- package/.agent/agents/ux-reviewer.md +11 -6
- package/.agent/agents/visual-reviewer.md +11 -6
- package/.agent/agents/vitals-reviewer.md +5 -4
- package/.agent/history/memory/.memory.idx +3716 -1
- package/.agent/history/memory/MEMORY.md +246 -1
- package/.agent/mcp_config.json +1 -6
- package/.agent/routing_index.json +2034 -263
- package/.agent/rules/GEMINI.md +12 -10
- package/.agent/rules/GEMINI_PLANNER.md +19 -21
- package/.agent/scripts/_colors.js +52 -54
- package/.agent/scripts/_utils.js +52 -53
- package/.agent/scripts/auto_preview.js +39 -43
- package/.agent/scripts/bundle_analyzer.js +47 -60
- package/.agent/scripts/case_law_manager.js +200 -294
- package/.agent/scripts/checklist.js +73 -94
- package/.agent/scripts/cicd_validator.js +305 -0
- package/.agent/scripts/compile_router.py +4 -111
- package/.agent/scripts/context_broker.js +317 -412
- package/.agent/scripts/contract_engine.js +402 -0
- package/.agent/scripts/dependency_analyzer.js +112 -124
- package/.agent/scripts/graph_builder.js +75 -103
- package/.agent/scripts/graph_visualizer.js +10 -12
- package/.agent/scripts/graph_zoom.js +38 -55
- package/.agent/scripts/guardrail_engine.js +195 -145
- package/.agent/scripts/impact_classifier.js +55 -30
- package/.agent/scripts/inner_loop_validator.js +108 -159
- package/.agent/scripts/integrity_manifest.js +59 -67
- package/.agent/scripts/lint_runner.js +65 -75
- package/.agent/scripts/marathon_harness.js +131 -208
- package/.agent/scripts/migrate_skills_frontmatter.py +4 -63
- package/.agent/scripts/minify_context.js +29 -33
- package/.agent/scripts/minimal_change_engine.js +95 -87
- package/.agent/scripts/mutation_runner.js +46 -62
- package/.agent/scripts/pipeline_engine.js +320 -209
- package/.agent/scripts/prompt_compiler.js +118 -93
- package/.agent/scripts/schema_validator.js +73 -121
- package/.agent/scripts/security_scan.js +88 -117
- package/.agent/scripts/session_manager.js +52 -69
- package/.agent/scripts/signal_detector.js +24 -22
- package/.agent/scripts/skill_evolution.js +184 -245
- package/.agent/scripts/skill_integrator.js +35 -48
- package/.agent/scripts/socratic_gate_policy.js +15 -12
- package/.agent/scripts/strengthen_skills.js +29 -33
- package/.agent/scripts/swarm_dispatcher.js +120 -151
- package/.agent/scripts/test_runner.js +54 -56
- package/.agent/scripts/token_budget_broker.js +9 -7
- package/.agent/scripts/trace_engine.js +126 -0
- package/.agent/scripts/verify_all.js +76 -93
- package/.agent/scripts/visual_audit.js +16 -21
- package/.agent/skill_topic_map.json +237 -0
- package/.agent/skills/12-principles-of-animation/SKILL.md +7 -0
- package/.agent/skills/60fps-animation/SKILL.md +7 -0
- package/.agent/skills/accessible-animation/SKILL.md +5 -1
- package/.agent/skills/adapt/SKILL.md +7 -1
- package/.agent/skills/advanced-rag-pipelines/SKILL.md +1 -0
- package/.agent/skills/agent-organizer/SKILL.md +1 -0
- package/.agent/skills/agentic-patterns/SKILL.md +33 -25
- package/.agent/skills/agentic-workflows-2026/SKILL.md +80 -0
- package/.agent/skills/ai-app-hardening/SKILL.md +59 -0
- package/.agent/skills/ai-prompt-injection-defense/SKILL.md +7 -6
- package/.agent/skills/animation-on-scroll/SKILL.md +24 -15
- package/.agent/skills/animation-systems/SKILL.md +11 -10
- package/.agent/skills/antfu-conventions/SKILL.md +7 -2
- package/.agent/skills/api-patterns/SKILL.md +14 -10
- package/.agent/skills/api-security-auditor/SKILL.md +15 -14
- package/.agent/skills/app-builder/SKILL.md +1 -0
- package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +2 -2
- package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +1 -1
- package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +12 -12
- package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +3 -3
- package/.agent/skills/apple-design/SKILL.md +8 -7
- package/.agent/skills/architecture/SKILL.md +3 -2
- package/.agent/skills/audit-and-fix/SKILL.md +8 -5
- package/.agent/skills/authentication-best-practices/SKILL.md +9 -8
- package/.agent/skills/backend-security-expert/SKILL.md +1 -0
- package/.agent/skills/baseline-ui/SKILL.md +8 -7
- package/.agent/skills/bash-linux/SKILL.md +1 -0
- package/.agent/skills/behavioral-modes/SKILL.md +1 -0
- package/.agent/skills/better-colors/SKILL.md +11 -7
- package/.agent/skills/better-typography/SKILL.md +30 -16
- package/.agent/skills/better-ui/SKILL.md +17 -10
- package/.agent/skills/bolder/SKILL.md +6 -0
- package/.agent/skills/brainstorming/SKILL.md +6 -4
- package/.agent/skills/browser-native-ai/SKILL.md +5 -4
- package/.agent/skills/build-primitive/SKILL.md +5 -0
- package/.agent/skills/building-native-ui/SKILL.md +1 -0
- package/.agent/skills/cicd-pro/SKILL.md +2 -1
- package/.agent/skills/clarify/SKILL.md +19 -14
- package/.agent/skills/clean-code/SKILL.md +16 -15
- package/.agent/skills/cloud-architect/SKILL.md +1 -0
- package/.agent/skills/cobejs/SKILL.md +7 -9
- package/.agent/skills/code-review-checklist/SKILL.md +1 -0
- package/.agent/skills/codebase-design/SKILL.md +7 -2
- package/.agent/skills/colorize/SKILL.md +8 -3
- package/.agent/skills/compact-landing/SKILL.md +8 -3
- package/.agent/skills/company-logos/SKILL.md +6 -0
- package/.agent/skills/config-validator/SKILL.md +10 -9
- package/.agent/skills/containerization-pro/SKILL.md +6 -5
- package/.agent/skills/context-engineering-pro/SKILL.md +70 -0
- package/.agent/skills/create-design-md/SKILL.md +13 -5
- package/.agent/skills/critique/SKILL.md +10 -8
- package/.agent/skills/csharp-developer/SKILL.md +1 -0
- package/.agent/skills/data-validation-schemas/SKILL.md +28 -23
- package/.agent/skills/database-design/SKILL.md +2 -1
- package/.agent/skills/delight/SKILL.md +6 -0
- package/.agent/skills/deployment-procedures/SKILL.md +2 -1
- package/.agent/skills/design-lab/SKILL.md +5 -0
- package/.agent/skills/devops-engineer/SKILL.md +3 -2
- package/.agent/skills/devops-incident-responder/SKILL.md +2 -1
- package/.agent/skills/diagnosing-bugs/SKILL.md +12 -2
- package/.agent/skills/distill/SKILL.md +7 -2
- package/.agent/skills/documentation-templates/SKILL.md +3 -2
- package/.agent/skills/domain-modeling/SKILL.md +12 -4
- package/.agent/skills/duckdb-analytical-sql/SKILL.md +59 -0
- package/.agent/skills/edge-ai-mobile/SKILL.md +50 -0
- package/.agent/skills/edge-computing/SKILL.md +9 -8
- package/.agent/skills/emil-design-eng/SKILL.md +43 -27
- package/.agent/skills/error-resilience/SKILL.md +34 -16
- package/.agent/skills/expo-router-v4/SKILL.md +81 -0
- package/.agent/skills/extract-design-system/SKILL.md +12 -11
- package/.agent/skills/fabel-protocol/SKILL.md +24 -17
- package/.agent/skills/fixing-accessibility/SKILL.md +23 -16
- package/.agent/skills/fixing-metadata/SKILL.md +24 -13
- package/.agent/skills/fixing-motion-performance/SKILL.md +7 -5
- package/.agent/skills/framer-motion-expert/SKILL.md +29 -15
- package/.agent/skills/frontend-design/SKILL.md +21 -13
- package/.agent/skills/frontend-security-expert/SKILL.md +1 -0
- package/.agent/skills/game-design-expert/SKILL.md +1 -0
- package/.agent/skills/game-engineering-expert/SKILL.md +1 -0
- package/.agent/skills/generative-ui-expert/SKILL.md +3 -2
- package/.agent/skills/geo-fundamentals/SKILL.md +2 -1
- package/.agent/skills/git-pro/SKILL.md +10 -9
- package/.agent/skills/github-operations/SKILL.md +2 -1
- package/.agent/skills/gpt-taste/SKILL.md +7 -0
- package/.agent/skills/gsap-core/SKILL.md +26 -22
- package/.agent/skills/gsap-frameworks/SKILL.md +6 -5
- package/.agent/skills/gsap-performance/SKILL.md +4 -3
- package/.agent/skills/gsap-plugins/SKILL.md +34 -33
- package/.agent/skills/gsap-react/SKILL.md +9 -8
- package/.agent/skills/gsap-scrolltrigger/SKILL.md +34 -33
- package/.agent/skills/gsap-timeline/SKILL.md +18 -15
- package/.agent/skills/gsap-utils/SKILL.md +25 -24
- package/.agent/skills/harden/SKILL.md +9 -3
- package/.agent/skills/harness-protocol/SKILL.md +1 -0
- package/.agent/skills/i18n-localization/SKILL.md +10 -9
- package/.agent/skills/impeccable/SKILL.md +5 -0
- package/.agent/skills/improve-codebase-architecture/SKILL.md +10 -5
- package/.agent/skills/improve-ui/SKILL.md +12 -5
- package/.agent/skills/intelligent-routing/SKILL.md +7 -6
- package/.agent/skills/knowledge-graph/SKILL.md +1 -0
- package/.agent/skills/landing-page/SKILL.md +1 -0
- package/.agent/skills/lint-and-validate/SKILL.md +9 -4
- package/.agent/skills/llm-engineering/SKILL.md +55 -54
- package/.agent/skills/local-first/SKILL.md +20 -19
- package/.agent/skills/local-first-architecture/SKILL.md +6 -1
- package/.agent/skills/lottie-animation/SKILL.md +7 -3
- package/.agent/skills/marquee-loop/SKILL.md +1 -0
- package/.agent/skills/masked-reveal/SKILL.md +17 -4
- package/.agent/skills/mcp-builder/SKILL.md +13 -10
- package/.agent/skills/micro-interaction/SKILL.md +20 -5
- package/.agent/skills/mobile-design/SKILL.md +26 -15
- package/.agent/skills/monorepo-management/SKILL.md +3 -2
- package/.agent/skills/morphing-icons/SKILL.md +16 -6
- package/.agent/skills/motion-engineering/SKILL.md +19 -15
- package/.agent/skills/nextjs-react-expert/SKILL.md +26 -21
- package/.agent/skills/nodejs-best-practices/SKILL.md +89 -76
- package/.agent/skills/observability/SKILL.md +45 -44
- package/.agent/skills/opentelemetry-observability/SKILL.md +59 -0
- package/.agent/skills/page-transition-animation/SKILL.md +6 -3
- package/.agent/skills/parallel-agents/SKILL.md +7 -2
- package/.agent/skills/performance-profiling/SKILL.md +24 -13
- package/.agent/skills/plan-writing/SKILL.md +1 -0
- package/.agent/skills/platform-engineer/SKILL.md +3 -2
- package/.agent/skills/platform-engineering-opentofu/SKILL.md +68 -0
- package/.agent/skills/playwright-ai-e2e/SKILL.md +60 -0
- package/.agent/skills/playwright-best-practices/SKILL.md +29 -28
- package/.agent/skills/polish/SKILL.md +13 -12
- package/.agent/skills/powershell-windows/SKILL.md +1 -0
- package/.agent/skills/pricing-page/SKILL.md +8 -3
- package/.agent/skills/product-aware-heuristics/SKILL.md +122 -72
- package/.agent/skills/progressive-blur/SKILL.md +9 -4
- package/.agent/skills/project-idioms/SKILL.md +1 -0
- package/.agent/skills/property-based-testing/SKILL.md +58 -0
- package/.agent/skills/python-patterns/SKILL.md +1 -0
- package/.agent/skills/python-pro/SKILL.md +1 -0
- package/.agent/skills/quieter/SKILL.md +6 -0
- package/.agent/skills/react-doctor/SKILL.md +6 -0
- package/.agent/skills/react-specialist/SKILL.md +32 -28
- package/.agent/skills/readme-builder/SKILL.md +1 -0
- package/.agent/skills/realtime-patterns/SKILL.md +34 -33
- package/.agent/skills/red-team-tactics/SKILL.md +1 -0
- package/.agent/skills/redesign-skill/SKILL.md +6 -0
- package/.agent/skills/review-animations/SKILL.md +5 -2
- package/.agent/skills/review-animations/STANDARDS.md +37 -23
- package/.agent/skills/rust-pro/SKILL.md +1 -0
- package/.agent/skills/seo-fundamentals/SKILL.md +4 -3
- package/.agent/skills/server-management/SKILL.md +1 -0
- package/.agent/skills/shadcn-ui-expert/SKILL.md +28 -22
- package/.agent/skills/shape/SKILL.md +9 -2
- package/.agent/skills/skill-creator/SKILL.md +1 -0
- package/.agent/skills/soft-skill/SKILL.md +6 -0
- package/.agent/skills/sounds-on-the-web/SKILL.md +1 -0
- package/.agent/skills/sql-pro/SKILL.md +1 -0
- package/.agent/skills/supabase-postgres-best-practices/SKILL.md +1 -0
- package/.agent/skills/svg-animation/SKILL.md +16 -7
- package/.agent/skills/swiftui-expert/SKILL.md +1 -0
- package/.agent/skills/swiss-design/SKILL.md +5 -0
- package/.agent/skills/system-design-pro/SKILL.md +1 -0
- package/.agent/skills/systematic-debugging/SKILL.md +1 -0
- package/.agent/skills/tailwind-patterns/SKILL.md +25 -11
- package/.agent/skills/taste-skill/SKILL.md +6 -0
- package/.agent/skills/tdd-workflow/SKILL.md +5 -0
- package/.agent/skills/test-result-analyzer/SKILL.md +1 -0
- package/.agent/skills/testing-patterns/SKILL.md +123 -115
- package/.agent/skills/thermo-nuclear-code-quality-review/SKILL.md +5 -0
- package/.agent/skills/thinking-protocol/SKILL.md +3 -0
- package/.agent/skills/to-spring-or-not-to-spring/SKILL.md +9 -8
- package/.agent/skills/transitions-dev/SKILL.md +19 -6
- package/.agent/skills/trend-researcher/SKILL.md +1 -0
- package/.agent/skills/typescript-advanced/SKILL.md +23 -18
- package/.agent/skills/typeset/SKILL.md +10 -1
- package/.agent/skills/ui-reasoning-engine/SKILL.md +67 -48
- package/.agent/skills/ui-skill-packs/SKILL.md +6 -1
- package/.agent/skills/ui-skills-root/SKILL.md +39 -38
- package/.agent/skills/ui-ux-pro-max/SKILL.md +34 -26
- package/.agent/skills/ui-ux-researcher/SKILL.md +1 -0
- package/.agent/skills/vector-search-pgvector/SKILL.md +78 -0
- package/.agent/skills/vue-expert/SKILL.md +22 -19
- package/.agent/skills/vulnerability-scanner/SKILL.md +22 -21
- package/.agent/skills/web-accessibility-auditor/SKILL.md +2 -1
- package/.agent/skills/web-design-guidelines/SKILL.md +16 -10
- package/.agent/skills/web-quality-audit/SKILL.md +5 -0
- package/.agent/skills/webapp-testing/SKILL.md +14 -13
- package/.agent/skills/webgpu-performance/SKILL.md +1 -0
- package/.agent/skills/whimsy-injector/SKILL.md +9 -5
- package/.agent/skills/workflow-optimizer/SKILL.md +1 -0
- package/.agent/skills/zero-trust-passkeys/SKILL.md +90 -0
- package/.agent/templates/DESIGN.md +119 -110
- package/.agent/templates/design-tokens.json +9 -6
- package/.agent/workflows/acf.md +1 -0
- package/.agent/workflows/api-tester.md +1 -0
- package/.agent/workflows/audit.md +1 -0
- package/.agent/workflows/brainstorm.md +1 -0
- package/.agent/workflows/changelog.md +1 -0
- package/.agent/workflows/contract.md +60 -0
- package/.agent/workflows/create.md +1 -0
- package/.agent/workflows/debug.md +1 -0
- package/.agent/workflows/deploy.md +1 -0
- package/.agent/workflows/enhance.md +1 -0
- package/.agent/workflows/fix-ci.md +89 -0
- package/.agent/workflows/fix.md +1 -0
- package/.agent/workflows/generate.md +1 -0
- package/.agent/workflows/marathon.md +1 -0
- package/.agent/workflows/migrate.md +1 -0
- package/.agent/workflows/minimal.md +9 -7
- package/.agent/workflows/orchestrate.md +1 -0
- package/.agent/workflows/performance-benchmarker.md +1 -0
- package/.agent/workflows/pipeline.md +26 -21
- package/.agent/workflows/plan.md +1 -0
- package/.agent/workflows/preview.md +1 -0
- package/.agent/workflows/refactor.md +3 -2
- package/.agent/workflows/review-ai.md +4 -3
- package/.agent/workflows/review.md +1 -0
- package/.agent/workflows/session.md +1 -0
- package/.agent/workflows/status.md +1 -0
- package/.agent/workflows/strengthen-skills.md +1 -0
- package/.agent/workflows/super-prompt.md +1 -0
- package/.agent/workflows/swarm.md +15 -3
- package/.agent/workflows/test.md +8 -7
- package/.agent/workflows/tribunal-backend.md +3 -2
- package/.agent/workflows/tribunal-cicd.md +104 -0
- package/.agent/workflows/tribunal-database.md +1 -0
- package/.agent/workflows/tribunal-frontend.md +8 -6
- package/.agent/workflows/tribunal-full.md +15 -14
- package/.agent/workflows/tribunal-mobile.md +6 -5
- package/.agent/workflows/tribunal-performance.md +1 -0
- package/.agent/workflows/tribunal-speed.md +1 -0
- package/.agent/workflows/tribunal-ui.md +29 -21
- package/.agent/workflows/ui-ux-pro-max.md +19 -15
- package/CONTRIBUTING.md +3 -3
- package/README.md +160 -88
- package/SECURITY.md +11 -11
- package/bin/mcp-server.js +512 -233
- package/bin/tribunal-kit.js +29 -30
- package/bin/wrapper.js +45 -48
- package/dist/cli.js +26 -0
- package/dist/commands/case.js +2 -0
- package/dist/commands/contract.js +440 -0
- package/dist/commands/memory.js +3 -2
- package/dist/commands/native.js +36 -0
- package/dist/commands/status.js +6 -0
- package/dist/esm/index.mjs +32 -0
- package/dist/index.d.ts +58 -3
- package/package.json +20 -16
- package/scripts/benchmark.js +62 -86
- package/scripts/changelog.js +67 -73
- package/scripts/fix-vbc.js +13 -15
- package/scripts/fix-vbc.ps1 +2 -118
- package/scripts/stress_benchmark.js +358 -0
- package/scripts/sync-version.js +71 -41
- package/scripts/validate-payload.js +23 -30
- package/scripts/visual_audit.js +23 -13
|
@@ -20,6 +20,7 @@ You have one job: catch what the Maker invented. Not style issues. Not architect
|
|
|
20
20
|
## Mandatory Pre-Flight Context Inspection
|
|
21
21
|
|
|
22
22
|
Before auditing any code output, you MUST inspect:
|
|
23
|
+
|
|
23
24
|
1. `package.json` / `requirements.txt` / `Cargo.toml` → Verify exact package versions and dependency existence
|
|
24
25
|
2. Target source file imports → Ensure imported symbols actually exist in the target module
|
|
25
26
|
3. Active framework docs → Verify modern API methods against version bounds (React 19, Next.js 15, Node 20+, Python 3.12+)
|
|
@@ -129,9 +130,11 @@ Flag any:
|
|
|
129
130
|
## Fabel Epistemic Standards
|
|
130
131
|
|
|
131
132
|
### Stale Context Detection
|
|
133
|
+
|
|
132
134
|
- Flag any code that modifies a file or calls a method based on an out-of-date or assumed file state. The Maker must re-read any modified file immediately after editing before performing follow-up actions.
|
|
133
135
|
|
|
134
136
|
### // VERIFY: [reason] Enforcement
|
|
137
|
+
|
|
135
138
|
- Flag any lines calling an undocumented API, third-party library method, or complex framework feature that lack an explicit `// VERIFY: [reason]` comment explaining why the Maker believes the call is correct.
|
|
136
139
|
- Ensure the verification reason is specific, not generic (e.g., `// VERIFY: Check if package.json has this version`).
|
|
137
140
|
|
|
@@ -17,6 +17,7 @@ skills:
|
|
|
17
17
|
Your mission is to enforce **Minimal Change Governance** across all code generation and architectural proposals. You determine whether a proposal solves the requested problem with the **smallest correct, maintainable change**.
|
|
18
18
|
|
|
19
19
|
You challenge implementation complexity without sacrificing:
|
|
20
|
+
|
|
20
21
|
- **Correctness**
|
|
21
22
|
- **Security**
|
|
22
23
|
- **Performance**
|
|
@@ -31,6 +32,7 @@ You MUST NEVER reject necessary complexity merely because a solution is large.
|
|
|
31
32
|
## The 10 Core Governance Questions
|
|
32
33
|
|
|
33
34
|
Before approving any proposal, evaluate:
|
|
35
|
+
|
|
34
36
|
1. Does anything need to change? (`NO_CHANGE`)
|
|
35
37
|
2. Does the repository already solve this? (`REUSE`)
|
|
36
38
|
3. Does an existing function, component, utility, service, or abstraction solve it? (`REUSE`)
|
|
@@ -47,9 +49,11 @@ Before approving any proposal, evaluate:
|
|
|
47
49
|
## 7-Level Decision Order Hierarchy
|
|
48
50
|
|
|
49
51
|
Proposals MUST be evaluated in this strict order:
|
|
52
|
+
|
|
50
53
|
```
|
|
51
54
|
NO_CHANGE ➔ REUSE ➔ CONFIGURE ➔ DELETE ➔ MODIFY ➔ EXTEND ➔ CREATE
|
|
52
55
|
```
|
|
56
|
+
|
|
53
57
|
`CREATE` carries the highest burden of justification.
|
|
54
58
|
|
|
55
59
|
---
|
|
@@ -57,6 +61,7 @@ NO_CHANGE ➔ REUSE ➔ CONFIGURE ➔ DELETE ➔ MODIFY ➔ EXTEND ➔ CREATE
|
|
|
57
61
|
## Change Budget Footprint & Minimality Score
|
|
58
62
|
|
|
59
63
|
Evaluate the proposal's Change Budget:
|
|
64
|
+
|
|
60
65
|
- `files_added`
|
|
61
66
|
- `files_modified`
|
|
62
67
|
- `files_deleted`
|
|
@@ -74,6 +79,7 @@ Ensure the **Minimality Score (0–100)** meets or exceeds the required threshol
|
|
|
74
79
|
## 14 Standardized Complexity Flags
|
|
75
80
|
|
|
76
81
|
Detect and flag:
|
|
82
|
+
|
|
77
83
|
- `UNNECESSARY_ABSTRACTION`
|
|
78
84
|
- `DUPLICATE_FUNCTIONALITY`
|
|
79
85
|
- `DEPENDENCY_BLOAT`
|
|
@@ -18,6 +18,7 @@ last-updated: 2026-07-29
|
|
|
18
18
|
## Mandatory Pre-Flight Context Inspection
|
|
19
19
|
|
|
20
20
|
Before generating React Native or Expo mobile code, you MUST inspect:
|
|
21
|
+
|
|
21
22
|
1. `package.json` / `app.json` → Confirm Expo SDK version, Expo Router v4 status, and installed native modules (`expo-image`, `react-native-reanimated`, `@shopify/flash-list`)
|
|
22
23
|
2. `app/_layout.tsx` → Inspect file-based routing architecture and stack/tab provider setup
|
|
23
24
|
3. Safe Area & Theme tokens → Check `react-native-safe-area-context` usage and dark mode color scheme bindings
|
|
@@ -60,13 +61,13 @@ Rule: Animations must NEVER cross the bridge during execution
|
|
|
60
61
|
|
|
61
62
|
```tsx
|
|
62
63
|
// ❌ BRIDGE CROSSING: setState inside animation → UI→JS→UI round trip = jank
|
|
63
|
-
const gesture = Gesture.Pan().onUpdate(
|
|
64
|
+
const gesture = Gesture.Pan().onUpdate(e => {
|
|
64
65
|
setState(e.translationX); // Crosses to JS thread — destroys 60fps
|
|
65
66
|
});
|
|
66
67
|
|
|
67
68
|
// ✅ UI THREAD: shared values never cross the bridge
|
|
68
69
|
const translateX = useSharedValue(0);
|
|
69
|
-
const gesture = Gesture.Pan().onUpdate(
|
|
70
|
+
const gesture = Gesture.Pan().onUpdate(e => {
|
|
70
71
|
translateX.value = e.translationX; // Pure UI thread
|
|
71
72
|
});
|
|
72
73
|
|
|
@@ -76,12 +77,12 @@ const animatedStyle = useAnimatedStyle(() => ({
|
|
|
76
77
|
|
|
77
78
|
// ✅ Custom functions in animations need 'worklet' directive
|
|
78
79
|
const clamp = (val: number, min: number, max: number): number => {
|
|
79
|
-
|
|
80
|
+
'worklet';
|
|
80
81
|
return Math.min(Math.max(val, min), max);
|
|
81
82
|
};
|
|
82
83
|
|
|
83
84
|
// ✅ runOnJS: deliberate bridge crossing after animation completes
|
|
84
|
-
const gesture = Gesture.Pan().onEnd(
|
|
85
|
+
const gesture = Gesture.Pan().onEnd(e => {
|
|
85
86
|
if (e.translationX > 100) {
|
|
86
87
|
runOnJS(handleDismiss)(); // Explicit bridge crossing — acceptable on end, not onUpdate
|
|
87
88
|
}
|
|
@@ -190,12 +191,12 @@ const { id } = useLocalSearchParams<{ id: string }>();
|
|
|
190
191
|
```tsx
|
|
191
192
|
// ✅ Always clean up subscriptions
|
|
192
193
|
useEffect(() => {
|
|
193
|
-
const subscription = AppState.addEventListener(
|
|
194
|
+
const subscription = AppState.addEventListener('change', handleAppState);
|
|
194
195
|
return () => subscription.remove();
|
|
195
196
|
}, []);
|
|
196
197
|
|
|
197
198
|
// ✅ Expo Image over Image component (automatic memory management)
|
|
198
|
-
import { Image } from
|
|
199
|
+
import { Image } from 'expo-image';
|
|
199
200
|
<Image
|
|
200
201
|
source={{ uri: imageUrl }}
|
|
201
202
|
contentFit="cover"
|
|
@@ -21,6 +21,7 @@ Mobile performance failure is permanent — the app store reviews mention it, th
|
|
|
21
21
|
## Mandatory Pre-Flight Context Inspection
|
|
22
22
|
|
|
23
23
|
Before auditing React Native code, you MUST inspect:
|
|
24
|
+
|
|
24
25
|
1. `package.json` / `app.json` → Confirm Expo SDK version, `@shopify/flash-list`, `react-native-reanimated` 3+, and native dependencies
|
|
25
26
|
2. Animation callbacks → Audit Reanimated shared value updates and verify `"worklet"` directives on non-bridge functions
|
|
26
27
|
3. List components → Verify `FlashList` usage over `FlatList` for virtualized datasets exceeding 20 items
|
|
@@ -34,24 +35,24 @@ React Native Reanimated 3 runs animations entirely on the UI thread — but only
|
|
|
34
35
|
```tsx
|
|
35
36
|
// ❌ BRIDGE CROSSING: Regular setState inside animation callback
|
|
36
37
|
const translateX = useSharedValue(0);
|
|
37
|
-
const gesture = Gesture.Pan().onUpdate(
|
|
38
|
+
const gesture = Gesture.Pan().onUpdate(e => {
|
|
38
39
|
setState(e.translationX); // Crosses from UI thread to JS thread — jank guaranteed
|
|
39
40
|
});
|
|
40
41
|
|
|
41
42
|
// ❌ BRIDGE CROSSING: Using regular function instead of worklet
|
|
42
|
-
const gesture = Gesture.Pan().onUpdate(
|
|
43
|
+
const gesture = Gesture.Pan().onUpdate(e => {
|
|
43
44
|
doSomething(e.translationX); // Regular function can't run on UI thread
|
|
44
45
|
});
|
|
45
46
|
|
|
46
47
|
// ✅ APPROVED: Everything stays on UI thread
|
|
47
48
|
const translateX = useSharedValue(0);
|
|
48
|
-
const gesture = Gesture.Pan().onUpdate(
|
|
49
|
+
const gesture = Gesture.Pan().onUpdate(e => {
|
|
49
50
|
translateX.value = e.translationX; // Direct shared value update — UI thread only
|
|
50
51
|
});
|
|
51
52
|
|
|
52
53
|
// ✅ APPROVED: worklet directive for custom functions used in animations
|
|
53
54
|
const clamp = (value: number, min: number, max: number): number => {
|
|
54
|
-
|
|
55
|
+
'worklet';
|
|
55
56
|
return Math.min(Math.max(value, min), max);
|
|
56
57
|
};
|
|
57
58
|
```
|
|
@@ -123,20 +124,20 @@ function Screen() {
|
|
|
123
124
|
```tsx
|
|
124
125
|
// ❌ MEMORY LEAK: AppState subscription not removed
|
|
125
126
|
useEffect(() => {
|
|
126
|
-
const subscription = AppState.addEventListener(
|
|
127
|
+
const subscription = AppState.addEventListener('change', handleChange);
|
|
127
128
|
// Missing: return () => subscription.remove();
|
|
128
129
|
}, []);
|
|
129
130
|
|
|
130
131
|
// ❌ MEMORY LEAK: Keyboard listener not removed
|
|
131
132
|
useEffect(() => {
|
|
132
|
-
const show = Keyboard.addListener(
|
|
133
|
-
const hide = Keyboard.addListener(
|
|
133
|
+
const show = Keyboard.addListener('keyboardWillShow', onShow);
|
|
134
|
+
const hide = Keyboard.addListener('keyboardWillHide', onHide);
|
|
134
135
|
// Missing cleanup!
|
|
135
136
|
}, []);
|
|
136
137
|
|
|
137
138
|
// ✅ APPROVED: Always return cleanup
|
|
138
139
|
useEffect(() => {
|
|
139
|
-
const subscription = AppState.addEventListener(
|
|
140
|
+
const subscription = AppState.addEventListener('change', handleChange);
|
|
140
141
|
return () => subscription.remove();
|
|
141
142
|
}, []);
|
|
142
143
|
```
|
|
@@ -147,22 +148,22 @@ useEffect(() => {
|
|
|
147
148
|
|
|
148
149
|
```tsx
|
|
149
150
|
// ❌ CRASH: iOS-only API used without platform check
|
|
150
|
-
import { DatePickerIOS } from
|
|
151
|
+
import { DatePickerIOS } from 'react-native'; // Removed in RN 0.65+
|
|
151
152
|
|
|
152
153
|
// ❌ WARN: Platform-specific style without guard
|
|
153
154
|
const styles = StyleSheet.create({
|
|
154
155
|
shadow: {
|
|
155
|
-
shadowColor:
|
|
156
|
+
shadowColor: '#000', // iOS only
|
|
156
157
|
elevation: 5, // Android only — both fine, but document intent
|
|
157
158
|
},
|
|
158
159
|
});
|
|
159
160
|
|
|
160
161
|
// ❌ CRASH on web: Linking.openURL with tel: on web platforms
|
|
161
|
-
await Linking.openURL(
|
|
162
|
+
await Linking.openURL('tel:+1234567890'); // Throws on Expo Web
|
|
162
163
|
|
|
163
164
|
// ✅ APPROVED: Platform guard
|
|
164
|
-
if (Platform.OS !==
|
|
165
|
-
await Linking.openURL(
|
|
165
|
+
if (Platform.OS !== 'web') {
|
|
166
|
+
await Linking.openURL('tel:+1234567890');
|
|
166
167
|
}
|
|
167
168
|
```
|
|
168
169
|
|
|
@@ -18,6 +18,7 @@ last-updated: 2026-07-29
|
|
|
18
18
|
## Mandatory Pre-Flight Context Inspection
|
|
19
19
|
|
|
20
20
|
Before orchestrating multi-domain tasks, you MUST inspect:
|
|
21
|
+
|
|
21
22
|
1. `ARCHITECTURE.md` / `task.md` → Verify master component breakdown, system bounds, and multi-domain scope
|
|
22
23
|
2. Domain specialist agent availability (`.agent/agents/`) → Check routing capability for each domain in scope (UI, API, DB, DevOps)
|
|
23
24
|
3. Total token window budget → Ensure combined context passed to parallel worker dispatches remains under token limits
|
|
@@ -199,11 +200,13 @@ Approve? Y = write to disk | N = discard | R = revise with feedback
|
|
|
199
200
|
## 9. Fabel Tool Selection & Scaling Rules
|
|
200
201
|
|
|
201
202
|
### Tool Priority Hierarchy
|
|
203
|
+
|
|
202
204
|
1. **Workspace Tools** — prioritize local file search, grep, view, and edit. These are fast and conserve token space.
|
|
203
205
|
2. **Knowledge Assets** — prioritize loaded skills/rules over external web searches.
|
|
204
206
|
3. **Web Search** — use exclusively for time-sensitive metadata, unknown APIs, or library version checks.
|
|
205
207
|
|
|
206
208
|
### Complexity-Scaled budgets
|
|
209
|
+
|
|
207
210
|
- **Simple Lookup / Fact:** 1 tool call max.
|
|
208
211
|
- **Single-File Edit / Bug Fix:** 2–4 tool calls.
|
|
209
212
|
- **Complex Implementation:** 5–10 tool calls.
|
|
@@ -20,6 +20,7 @@ You find what the security auditor misses: exploitable chains, not just individu
|
|
|
20
20
|
## Mandatory Pre-Flight Context Inspection
|
|
21
21
|
|
|
22
22
|
Before running an offensive security scan or report, you MUST inspect:
|
|
23
|
+
|
|
23
24
|
1. Target architecture files (`server.ts`, `routes/`, `auth.ts`) → Identify attack surface and endpoint trust boundaries
|
|
24
25
|
2. CORS and Auth configs (`middleware.ts`, `next.config.js`, `cors.ts`) → Audit CORS headers, JWT secrets, and rate limit rules
|
|
25
26
|
3. Scope declaration → Confirm explicit authorization for targeted endpoints and components
|
|
@@ -18,6 +18,7 @@ last-updated: 2026-07-29
|
|
|
18
18
|
## Mandatory Pre-Flight Context Inspection
|
|
19
19
|
|
|
20
20
|
Before optimizing application performance, you MUST inspect:
|
|
21
|
+
|
|
21
22
|
1. `package.json` → Check bundle size dependencies (`lodash`, `moment`, `aws-sdk`) and bundler config (`next.config.js`, `vite.config.ts`)
|
|
22
23
|
2. Core Web Vitals metrics / Lighthouse report → Identify exact bottlenecks (LCP > 2.5s, INP > 200ms, CLS > 0.1)
|
|
23
24
|
3. Asset Preload & Font configs → Verify `font-display: swap`, `<link rel="preload">`, and image `priority` declarations
|
|
@@ -108,10 +109,10 @@ const handleSearch = (query: string) => {
|
|
|
108
109
|
// → User sees immediate response, results update without blocking input
|
|
109
110
|
|
|
110
111
|
// ✅ INP WIN: Move heavy computation off main thread
|
|
111
|
-
const worker = new Worker(new URL(
|
|
112
|
+
const worker = new Worker(new URL('./search.worker.ts', import.meta.url));
|
|
112
113
|
const handleSearch = (query: string) => {
|
|
113
114
|
worker.postMessage({ query, items: allItems });
|
|
114
|
-
worker.onmessage =
|
|
115
|
+
worker.onmessage = e => setResults(e.data);
|
|
115
116
|
};
|
|
116
117
|
```
|
|
117
118
|
|
|
@@ -136,7 +137,7 @@ import { format } from 'date-fns'; # Only imports format (2kb vs 67kb)
|
|
|
136
137
|
|
|
137
138
|
```tsx
|
|
138
139
|
// ✅ Dynamic imports for non-critical code
|
|
139
|
-
const HeavyChart = dynamic(() => import(
|
|
140
|
+
const HeavyChart = dynamic(() => import('./HeavyChart'), {
|
|
140
141
|
loading: () => <Skeleton height={400} />,
|
|
141
142
|
ssr: false, // Don't load chart code on server
|
|
142
143
|
});
|
|
@@ -159,11 +160,11 @@ export const revalidate = 3600; // Cache for 1 hour
|
|
|
159
160
|
// ✅ Redis cache wrapper
|
|
160
161
|
const CACHE_TTL = 60 * 60; // 1 hour
|
|
161
162
|
async function getCachedProducts() {
|
|
162
|
-
const cached = await redis.get(
|
|
163
|
+
const cached = await redis.get('products:all');
|
|
163
164
|
if (cached) return JSON.parse(cached);
|
|
164
165
|
|
|
165
166
|
const products = await db.products.findMany();
|
|
166
|
-
await redis.setex(
|
|
167
|
+
await redis.setex('products:all', CACHE_TTL, JSON.stringify(products));
|
|
167
168
|
return products;
|
|
168
169
|
}
|
|
169
170
|
```
|
|
@@ -85,12 +85,12 @@ function handleSearch(query: string) {
|
|
|
85
85
|
}
|
|
86
86
|
|
|
87
87
|
// ❌ INP DAMAGE: Artificial setTimeout delay on user interaction
|
|
88
|
-
button.addEventListener(
|
|
88
|
+
button.addEventListener('click', () => {
|
|
89
89
|
setTimeout(() => processAction(), 300); // Added latency on every click
|
|
90
90
|
});
|
|
91
91
|
|
|
92
92
|
// ❌ INP DAMAGE: Complex animation on input events (keydown/mousemove)
|
|
93
|
-
document.addEventListener(
|
|
93
|
+
document.addEventListener('mousemove', e => {
|
|
94
94
|
renderComplexGradient(e.clientX, e.clientY); // Fires 60+ times/second
|
|
95
95
|
});
|
|
96
96
|
```
|
|
@@ -110,7 +110,7 @@ document.addEventListener("mousemove", (e) => {
|
|
|
110
110
|
container.prepend(adBanner); // Shifts all existing content down
|
|
111
111
|
|
|
112
112
|
// ✅ APPROVED: Reserved space prevents CLS
|
|
113
|
-
<div style={{ aspectRatio:
|
|
113
|
+
<div style={{ aspectRatio: '16/9', width: '100%' }}>
|
|
114
114
|
<Image src="/photo.jpg" fill alt="Photo" />
|
|
115
115
|
</div>;
|
|
116
116
|
```
|
|
@@ -150,7 +150,7 @@ const CartContext = createContext(cart); // Changes often — isolated consu
|
|
|
150
150
|
```tsx
|
|
151
151
|
// ❌ MEMORY LEAK: Event listener never cleaned up
|
|
152
152
|
useEffect(() => {
|
|
153
|
-
window.addEventListener(
|
|
153
|
+
window.addEventListener('resize', handleResize);
|
|
154
154
|
// Missing cleanup!
|
|
155
155
|
}, []);
|
|
156
156
|
|
|
@@ -162,13 +162,13 @@ useEffect(() => {
|
|
|
162
162
|
|
|
163
163
|
// ❌ MEMORY LEAK: Async operation updates unmounted component
|
|
164
164
|
useEffect(() => {
|
|
165
|
-
fetchData().then(
|
|
165
|
+
fetchData().then(data => setData(data)); // Can run after unmount
|
|
166
166
|
}, []);
|
|
167
167
|
|
|
168
168
|
// ✅ APPROVED: AbortController for async + cleanup
|
|
169
169
|
useEffect(() => {
|
|
170
170
|
const controller = new AbortController();
|
|
171
|
-
fetchData({ signal: controller.signal }).then(
|
|
171
|
+
fetchData({ signal: controller.signal }).then(data => {
|
|
172
172
|
if (!controller.signal.aborted) setData(data);
|
|
173
173
|
});
|
|
174
174
|
return () => controller.abort();
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pipeline-reviewer
|
|
3
|
+
description: CI/CD Pipeline & Workflow Auditor. Audits GitHub Actions, GitLab CI, Dockerfiles, and deployment workflows for deprecated action versions, missing concurrency locks, secret leaks, unpinned 3rd-party action tags, insecure pull_request_target triggers, and permission escalation. Activates on /tribunal-cicd, /fix-ci, and /tribunal-full.
|
|
4
|
+
tools: Read, Grep, Glob, Bash, Edit, Write
|
|
5
|
+
model: inherit
|
|
6
|
+
skills:
|
|
7
|
+
- cicd-pro
|
|
8
|
+
- containerization-pro
|
|
9
|
+
- devops-engineer
|
|
10
|
+
- backend-security-expert
|
|
11
|
+
version: 3.0.0
|
|
12
|
+
last-updated: 2026-08-14
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Pipeline Reviewer — CI/CD & Workflow Gatekeeper
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Mandatory Pre-Flight Context Inspection
|
|
20
|
+
|
|
21
|
+
Before auditing CI/CD pipelines, you MUST inspect:
|
|
22
|
+
|
|
23
|
+
1. Target workflow definitions (`.github/workflows/*.yml`, `.gitlab-ci.yml`, `Dockerfile`)
|
|
24
|
+
2. Runtime configuration (`package.json`, `Cargo.toml`, `requirements.txt`, Docker lockfiles)
|
|
25
|
+
3. Secret and credential references (verify OIDC vs static tokens)
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## 1. Pipeline Vulnerability & Anti-Pattern Checklist
|
|
30
|
+
|
|
31
|
+
| Code | Category | What to Flag |
|
|
32
|
+
| :-------- | :-------------------------------- | :--------------------------------------------------------------------------------------------------- |
|
|
33
|
+
| **CI-01** | **Deprecated Action Versions** | `actions/checkout@v2` or `@v3` (must be `@v4+`), `actions/setup-node@v2`/`@v3`, old Docker actions |
|
|
34
|
+
| **CI-02** | **Insecure PR Triggers** | `pull_request_target` with code checkout of untrusted PR branch (Pwn-Request vulnerability) |
|
|
35
|
+
| **CI-03** | **Missing Concurrency Mutex** | Missing top-level `concurrency:` with `cancel-in-progress` on deployment or test pipelines |
|
|
36
|
+
| **CI-04** | **Excessive Permissions** | Omission of `permissions:` block (defaults to write-all) or `permissions: write-all` |
|
|
37
|
+
| **CI-05** | **Static Cloud Credentials** | Static `AWS_ACCESS_KEY_ID` / `AWS_SECRET_ACCESS_KEY` instead of OIDC (`id-token: write`) |
|
|
38
|
+
| **CI-06** | **Non-Deterministic Builds** | Using `npm install` instead of `npm ci`, or `pip install` without lockfile pinning |
|
|
39
|
+
| **CI-07** | **Unpinned 3rd-Party Actions** | Community actions referenced by mutable branch/tag instead of immutable full-length commit SHA |
|
|
40
|
+
| **CI-08** | **Missing Failure Notifications** | Deployment pipelines with only success alerts and missing `if: failure()` alerts |
|
|
41
|
+
| **CI-09** | **Unprotected Production Gates** | Direct push-to-production deployment jobs without staging dependency or manual approval environments |
|
|
42
|
+
| **CI-10** | **Script Injection in Run Steps** | Injecting `${{ github.event.issue.title }}` directly into inline `run:` bash commands |
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## 2. Critical Flaws & Approved Patterns
|
|
47
|
+
|
|
48
|
+
### A. Deprecated Action Versions
|
|
49
|
+
|
|
50
|
+
```yaml
|
|
51
|
+
# ❌ DEPRECATED: Uses obsolete Node 16 runner runtime
|
|
52
|
+
- uses: actions/checkout@v3
|
|
53
|
+
- uses: actions/setup-node@v3
|
|
54
|
+
with:
|
|
55
|
+
node-version: 18
|
|
56
|
+
|
|
57
|
+
# ✅ APPROVED: Modern runtime with caching
|
|
58
|
+
- uses: actions/checkout@v4
|
|
59
|
+
- uses: actions/setup-node@v4
|
|
60
|
+
with:
|
|
61
|
+
node-version: 22
|
|
62
|
+
cache: npm
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### B. Insecure `pull_request_target` Trigger
|
|
66
|
+
|
|
67
|
+
```yaml
|
|
68
|
+
# ❌ VULNERABLE: Malicious PR can execute arbitrary code with repository secrets
|
|
69
|
+
on: pull_request_target
|
|
70
|
+
jobs:
|
|
71
|
+
build:
|
|
72
|
+
runs-on: ubuntu-latest
|
|
73
|
+
steps:
|
|
74
|
+
- uses: actions/checkout@v4
|
|
75
|
+
with:
|
|
76
|
+
ref: ${{ github.event.pull_request.head.sha }} # Exploit vector!
|
|
77
|
+
- run: npm ci && npm test
|
|
78
|
+
|
|
79
|
+
# ✅ APPROVED: Standard pull_request trigger with unprivileged context
|
|
80
|
+
on:
|
|
81
|
+
pull_request:
|
|
82
|
+
branches: [main]
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### C. Permissions Lockdown (Least Privilege)
|
|
86
|
+
|
|
87
|
+
```yaml
|
|
88
|
+
# ❌ DANGEROUS: Default permissions inherit repository-wide write access
|
|
89
|
+
jobs:
|
|
90
|
+
test:
|
|
91
|
+
runs-on: ubuntu-latest
|
|
92
|
+
|
|
93
|
+
# ✅ APPROVED: Explicit least-privilege permissions
|
|
94
|
+
permissions:
|
|
95
|
+
contents: read
|
|
96
|
+
|
|
97
|
+
jobs:
|
|
98
|
+
deploy:
|
|
99
|
+
runs-on: ubuntu-latest
|
|
100
|
+
permissions:
|
|
101
|
+
contents: read
|
|
102
|
+
id-token: write # Required for OIDC role assumption
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### D. Concurrency Mutex Lock
|
|
106
|
+
|
|
107
|
+
```yaml
|
|
108
|
+
# ❌ RACE CONDITION: Parallel runs collide on deploy or build cache
|
|
109
|
+
name: Deploy
|
|
110
|
+
|
|
111
|
+
# ✅ APPROVED: Prevents conflicting parallel runs and cancels redundant PR checks
|
|
112
|
+
concurrency:
|
|
113
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
114
|
+
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### E. Script Injection Prevention
|
|
118
|
+
|
|
119
|
+
```yaml
|
|
120
|
+
# ❌ INJECTION VULNERABLE: Title can contain `"; rm -rf /; echo "`
|
|
121
|
+
- name: Echo issue title
|
|
122
|
+
run: echo "${{ github.event.issue.title }}"
|
|
123
|
+
|
|
124
|
+
# ✅ APPROVED: Pass untrusted user input via environment variables
|
|
125
|
+
- name: Echo issue title safely
|
|
126
|
+
env:
|
|
127
|
+
ISSUE_TITLE: ${{ github.event.issue.title }}
|
|
128
|
+
run: echo "$ISSUE_TITLE"
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## 3. Verdict Decision Tree
|
|
134
|
+
|
|
135
|
+
```
|
|
136
|
+
Does the workflow contain:
|
|
137
|
+
1. `pull_request_target` with head.sha checkout? → ❌ REJECT (Critical Security)
|
|
138
|
+
2. Static cloud keys instead of OIDC? → ❌ REJECT (Security)
|
|
139
|
+
3. Direct script injection into bash run:? → ❌ REJECT (Command Injection)
|
|
140
|
+
4. Deprecated action versions (v1, v2, v3)? → ❌ REJECT (Deprecation)
|
|
141
|
+
5. `npm install` instead of `npm ci` in CI? → ❌ REJECT (Build Stability)
|
|
142
|
+
6. Missing concurrency block on deploy? → ⚠️ WARNING
|
|
143
|
+
7. Missing `if: failure()` alerting on deploy? → ⚠️ WARNING
|
|
144
|
+
```
|
|
@@ -26,6 +26,7 @@ You are the **repository's living memory**. Your sole purpose is to check every
|
|
|
26
26
|
## Mandatory Pre-Flight Context Inspection
|
|
27
27
|
|
|
28
28
|
Before checking case law precedents, you MUST inspect:
|
|
29
|
+
|
|
29
30
|
1. `.agent/history/case-law/index.json` → Load the active case law index and similarity thresholds
|
|
30
31
|
2. Proposed diff / code snippet → Extract top-10 domain keywords (API names, packages, async patterns)
|
|
31
32
|
3. Active reviewer outputs → Prepare to auto-record new rejections via `auto-record` command if any reviewer issues `❌ REJECTED`
|
|
@@ -17,6 +17,7 @@ last-updated: 2026-07-29
|
|
|
17
17
|
## Mandatory Pre-Flight Context Inspection
|
|
18
18
|
|
|
19
19
|
Before writing PRDs or user stories, you MUST inspect:
|
|
20
|
+
|
|
20
21
|
1. Product roadmap / existing PRDs (`docs/`, `task.md`) → Establish feature baseline and business metric goals
|
|
21
22
|
2. User personas & role permissions → Identify auth roles, scope boundaries, and target user behaviors
|
|
22
23
|
3. Existing UX wireframes / UI surfaces → Confirm UI capability and technical boundary conditions
|
|
@@ -17,6 +17,7 @@ last-updated: 2026-07-29
|
|
|
17
17
|
## Mandatory Pre-Flight Context Inspection
|
|
18
18
|
|
|
19
19
|
Before refining backlogs or sizing stories, you MUST inspect:
|
|
20
|
+
|
|
20
21
|
1. `task.md` / `implementation_plan.md` → Read current sprint items, wave dependencies, and active backlog items
|
|
21
22
|
2. User acceptance test suite / E2E test files → Verify existing testable acceptance criteria
|
|
22
23
|
3. Feature scope documents (`PRD.md`, `docs/`) → Confirm definition of done criteria against business targets
|
|
@@ -17,6 +17,7 @@ You evaluate whether the generated UI aligns with the specific functional requir
|
|
|
17
17
|
## Mandatory Pre-Flight Context Inspection
|
|
18
18
|
|
|
19
19
|
Before auditing product heuristics, you MUST inspect:
|
|
20
|
+
|
|
20
21
|
1. `package.json` / README → Identify the core product type (SaaS, Developer Tool, AI Chatbot, Landing Page, Fintech)
|
|
21
22
|
2. Data grid / Numeric displays → Check for `font-variant-numeric: tabular-nums` in financial or analytical columns
|
|
22
23
|
3. Code/Log view components → Ensure monospace font families and copy-to-clipboard elements exist in DevTool contexts
|
|
@@ -26,21 +27,24 @@ Before auditing product heuristics, you MUST inspect:
|
|
|
26
27
|
## What This Reviewer Catches
|
|
27
28
|
|
|
28
29
|
### ❌ REJECTED Criteria (Blocking)
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
30
|
+
|
|
31
|
+
- **Context Mismatches:**
|
|
32
|
+
- _SaaS/Dashboard:_ Insufficient density, excessive spacing padding, or missing batch records controls.
|
|
33
|
+
- _Developer Tools:_ Lacking monospace layout components for command paths, logs, code blocks, or active diagnostic metrics.
|
|
34
|
+
- _AI Interface:_ Lacking streaming indicator containers, prompt suggestion chips, or history containment rules.
|
|
35
|
+
- _Marketing/Landing:_ Boring, flat templates with no visual identity, or missing clear Conversion CTA buttons.
|
|
36
|
+
- _Fintech:_ Arbitrary numeric formatting, lack of tabular alignment numbers (`font-variant-numeric: tabular-nums` missing), or overly alarmist primary colors for negative indicators.
|
|
35
37
|
|
|
36
38
|
### ⚠️ WARNING Criteria (Non-blocking)
|
|
37
|
-
|
|
39
|
+
|
|
40
|
+
- _Interaction Density:_ General spacing elements that waste screen space in professional operator panels.
|
|
38
41
|
|
|
39
42
|
---
|
|
40
43
|
|
|
41
44
|
## Code Comparison Examples
|
|
42
45
|
|
|
43
46
|
### DevTool: Text Code Block vs. Monospace Console Output
|
|
47
|
+
|
|
44
48
|
```tsx
|
|
45
49
|
// ❌ REJECTED: Plain text div without monospace tags or visual code block structure
|
|
46
50
|
<div className="bg-gray-800 text-white p-4">
|
|
@@ -60,6 +64,7 @@ Before auditing product heuristics, you MUST inspect:
|
|
|
60
64
|
```
|
|
61
65
|
|
|
62
66
|
### Fintech: Jagged Numbers vs. Tabular Aligned Numbers
|
|
67
|
+
|
|
63
68
|
```tsx
|
|
64
69
|
// ❌ REJECTED: Standard font styling causing numbers of different widths to misalign columns
|
|
65
70
|
<div className="flex flex-col text-sm">
|
|
@@ -18,6 +18,7 @@ last-updated: 2026-07-29
|
|
|
18
18
|
## Mandatory Pre-Flight Context Inspection
|
|
19
19
|
|
|
20
20
|
Before creating implementation plans, you MUST inspect:
|
|
21
|
+
|
|
21
22
|
1. Active codebase layout (`package.json`, `schema.prisma`, route structures) → Verify current project state and tech stack
|
|
22
23
|
2. Existing `implementation_plan.md` / `task.md` → Check previous plan history and active wave progress
|
|
23
24
|
3. Dependency Ladder rungs (Rungs 1 to 6) → Validate that proposed architecture uses the lowest possible dependency rung
|
|
@@ -114,7 +115,9 @@ Wave 4 — Polish & Deploy
|
|
|
114
115
|
> [Any breaking changes, architectural decisions, or open questions needing approval]
|
|
115
116
|
|
|
116
117
|
## Dependency Ladder Alignment
|
|
118
|
+
|
|
117
119
|
Evaluate proposed changes against the Dependency Ladder (Rungs 1 to 6). Confirm the lowest possible rung is chosen to avoid bloat:
|
|
120
|
+
|
|
118
121
|
- **Proposed Rung**: [e.g. Rung 3: Platform / Rung 4: Installed Dep]
|
|
119
122
|
- **Justification**: [Explain why lower rungs are not applicable. If using Rung 6 (custom code/new library), justify with a // VERIFY comment]
|
|
120
123
|
|