@rfxlamia/skillkit 1.1.0 → 1.2.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/agents/creative-copywriter.md +212 -0
- package/agents/agents/dario-amodei.md +135 -0
- package/agents/agents/doc-simplifier.md +63 -0
- package/agents/agents/kotlin-pro.md +433 -0
- package/agents/agents/red-team.md +136 -0
- package/agents/agents/sam-altman.md +121 -0
- package/agents/agents/seo-manager.md +184 -0
- package/package.json +1 -1
- package/skills/skillkit-help/SKILL.md +81 -0
- package/skills/skillkit-help/knowledge/application/09-case-studies.md +257 -0
- package/skills/skillkit-help/knowledge/application/12-testing-and-validation.md +276 -0
- package/skills/skillkit-help/knowledge/foundation/01-why-skills-exist.md +246 -0
- package/skills/skillkit-help/knowledge/foundation/02-skills-vs-subagents-comparison.md +312 -0
- package/skills/skillkit-help/knowledge/foundation/03-skills-vs-subagents-decision-tree.md +346 -0
- package/skills/skillkit-help/knowledge/foundation/06-platform-constraints.md +237 -0
- package/skills/skillkit-help/knowledge/foundation/08-when-not-to-use-skills.md +270 -0
- package/skills/skillkit-help/template/SKILL.md +52 -0
- package/skills/skills/adversarial-review/SKILL.md +219 -0
- package/skills/skills/baby-education/SKILL.md +260 -0
- package/skills/skills/baby-education/references/advanced-techniques.md +323 -0
- package/skills/skills/baby-education/references/transformations.md +345 -0
- package/skills/skills/been-there-done-that/SKILL.md +455 -0
- package/skills/skills/been-there-done-that/references/analysis-patterns.md +162 -0
- package/skills/skills/been-there-done-that/references/git-commands.md +132 -0
- package/skills/skills/been-there-done-that/references/tree-insertion-logic.md +145 -0
- package/skills/skills/coolhunter/SKILL.md +270 -0
- package/skills/skills/coolhunter/assets/elicitation-methods.csv +51 -0
- package/skills/skills/coolhunter/knowledge/elicitation-methods.md +312 -0
- package/skills/skills/coolhunter/references/workflow-execution.md +238 -0
- package/skills/skills/coolhunter/workflow-plan-coolhunter.md +232 -0
- package/skills/skills/creative-copywriting/SKILL.md +324 -0
- package/skills/skills/creative-copywriting/databases/README.md +60 -0
- package/skills/skills/creative-copywriting/databases/carousel-structures.csv +16 -0
- package/skills/skills/creative-copywriting/databases/emotional-arcs.csv +11 -0
- package/skills/skills/creative-copywriting/databases/hook-formulas.csv +51 -0
- package/skills/skills/creative-copywriting/databases/power-words.csv +201 -0
- package/skills/skills/creative-copywriting/databases/psychological-triggers.csv +21 -0
- package/skills/skills/creative-copywriting/databases/read-more-patterns.csv +26 -0
- package/skills/skills/creative-copywriting/databases/swipe-triggers.csv +31 -0
- package/skills/skills/creative-copywriting/references/carousel-psychology.md +223 -0
- package/skills/skills/creative-copywriting/references/hook-anatomy.md +169 -0
- package/skills/skills/creative-copywriting/references/power-word-science.md +134 -0
- package/skills/skills/creative-copywriting/references/storytelling-frameworks.md +157 -0
- package/skills/skills/diverse-content-gen/SKILL.md +201 -0
- package/skills/skills/diverse-content-gen/references/advanced-techniques.md +320 -0
- package/skills/skills/diverse-content-gen/references/research-findings.md +379 -0
- package/skills/skills/diverse-content-gen/references/task-workflows.md +241 -0
- package/skills/skills/diverse-content-gen/references/tool-integration.md +419 -0
- package/skills/skills/diverse-content-gen/references/troubleshooting.md +426 -0
- package/skills/skills/diverse-content-gen/references/vs-core-technique.md +240 -0
- package/skills/skills/framework-critical-thinking/SKILL.md +220 -0
- package/skills/skills/framework-critical-thinking/references/bias_detector.md +375 -0
- package/skills/skills/framework-critical-thinking/references/fallback_handler.md +239 -0
- package/skills/skills/framework-critical-thinking/references/memory_curator.md +161 -0
- package/skills/skills/framework-critical-thinking/references/metacognitive_monitor.md +297 -0
- package/skills/skills/framework-critical-thinking/references/producer_critic_orchestrator.md +333 -0
- package/skills/skills/framework-critical-thinking/references/reasoning_router.md +235 -0
- package/skills/skills/framework-critical-thinking/references/reasoning_validator.md +97 -0
- package/skills/skills/framework-critical-thinking/references/reflection_trigger.md +78 -0
- package/skills/skills/framework-critical-thinking/references/self_verification.md +388 -0
- package/skills/skills/framework-critical-thinking/references/uncertainty_quantifier.md +207 -0
- package/skills/skills/framework-initiative/SKILL.md +231 -0
- package/skills/skills/framework-initiative/references/examples.md +150 -0
- package/skills/skills/framework-initiative/references/impact-analysis.md +157 -0
- package/skills/skills/framework-initiative/references/intent-patterns.md +145 -0
- package/skills/skills/framework-initiative/references/star-framework.md +165 -0
- package/skills/skills/humanize-docs/SKILL.md +203 -0
- package/skills/skills/humanize-docs/references/advanced-techniques.md +13 -0
- package/skills/skills/humanize-docs/references/core-transformations.md +368 -0
- package/skills/skills/humanize-docs/references/detection-patterns.md +400 -0
- package/skills/skills/humanize-docs/references/examples-gallery.md +374 -0
- package/skills/skills/imagine/SKILL.md +190 -0
- package/skills/skills/imagine/references/artstyle-corporate-memphis.md +625 -0
- package/skills/skills/imagine/references/artstyle-crewdson-hyperrealism.md +295 -0
- package/skills/skills/imagine/references/artstyle-iphone-social-media.md +426 -0
- package/skills/skills/imagine/references/artstyle-sciencesaru.md +276 -0
- package/skills/skills/pre-deploy-checklist/README.md +26 -0
- package/skills/skills/pre-deploy-checklist/SKILL.md +153 -0
- package/skills/skills/pre-deploy-checklist/references/checklist-categories.md +174 -0
- package/skills/skills/pre-deploy-checklist/references/domain-prompts.md +216 -0
- package/skills/skills/prompt-engineering/SKILL.md +209 -0
- package/skills/skills/prompt-engineering/references/advanced-combinations.md +444 -0
- package/skills/skills/prompt-engineering/references/chain-of-thought.md +140 -0
- package/skills/skills/prompt-engineering/references/decision_matrix.md +220 -0
- package/skills/skills/prompt-engineering/references/few-shot.md +346 -0
- package/skills/skills/prompt-engineering/references/json-format.md +270 -0
- package/skills/skills/prompt-engineering/references/natural-language.md +420 -0
- package/skills/skills/prompt-engineering/references/pitfalls.md +365 -0
- package/skills/skills/prompt-engineering/references/prompt-chaining.md +498 -0
- package/skills/skills/prompt-engineering/references/react.md +108 -0
- package/skills/skills/prompt-engineering/references/self-consistency.md +322 -0
- package/skills/skills/prompt-engineering/references/tree-of-thoughts.md +386 -0
- package/skills/skills/prompt-engineering/references/xml-format.md +220 -0
- package/skills/skills/prompt-engineering/references/yaml-format.md +488 -0
- package/skills/skills/prompt-engineering/references/zero-shot.md +74 -0
- package/skills/skills/quick-spec/SKILL.md +280 -0
- package/skills/skills/quick-spec/assets/tech-spec-template.md +74 -0
- package/skills/skills/quick-spec/references/step-01-understand.md +189 -0
- package/skills/skills/quick-spec/references/step-02-investigate.md +144 -0
- package/skills/skills/quick-spec/references/step-03-generate.md +128 -0
- package/skills/skills/quick-spec/references/step-04-review.md +173 -0
- package/skills/skills/quick-spec/tests/__pycache__/test_skill.cpython-314-pytest-9.0.2.pyc +0 -0
- package/skills/skills/quick-spec/tests/test_scenarios.md +83 -0
- package/skills/skills/quick-spec/tests/test_skill.py +136 -0
- package/skills/skills/readme-expert/SKILL.md +538 -0
- package/skills/skills/readme-expert/knowledge/INDEX.md +192 -0
- package/skills/skills/readme-expert/knowledge/application/quality-standards.md +470 -0
- package/skills/skills/readme-expert/knowledge/application/script-executor.md +604 -0
- package/skills/skills/readme-expert/knowledge/application/template-library.md +822 -0
- package/skills/skills/readme-expert/knowledge/foundation/codebase-scanner.md +361 -0
- package/skills/skills/readme-expert/knowledge/foundation/validation-checklist.md +481 -0
- package/skills/skills/red-teaming/SKILL.md +321 -0
- package/skills/skills/red-teaming/references/ai-llm-redteam.md +517 -0
- package/skills/skills/red-teaming/references/attack-techniques.md +410 -0
- package/skills/skills/red-teaming/references/cybersecurity-redteam.md +383 -0
- package/skills/skills/red-teaming/references/tools-frameworks.md +446 -0
- package/skills/skills/releasing/.skillkit-mode +1 -0
- package/skills/skills/releasing/SKILL.md +225 -0
- package/skills/skills/releasing/references/version-detection.md +108 -0
- package/skills/skills/screenwriter/SKILL.md +273 -0
- package/skills/skills/screenwriter/references/advanced-techniques.md +216 -0
- package/skills/skills/screenwriter/references/pipeline-integration.md +266 -0
- package/skills/skills/skillkit/.claude/settings.local.json +7 -0
- package/skills/skills/skillkit/.claude-plugin/plugin.json +27 -0
- package/skills/skills/skillkit/CHANGELOG.md +484 -0
- package/skills/skills/skillkit/SKILL.md +511 -0
- package/skills/skills/skillkit/commands/skillkit.md +6 -0
- package/skills/skills/skillkit/commands/validate-plan.md +6 -0
- package/skills/skills/skillkit/commands/verify.md +6 -0
- package/skills/skills/skillkit/knowledge/INDEX.md +352 -0
- package/skills/skills/skillkit/knowledge/application/09-case-studies.md +257 -0
- package/skills/skills/skillkit/knowledge/application/10-technical-architecture.md +324 -0
- package/skills/skills/skillkit/knowledge/application/11-adoption-strategy.md +267 -0
- package/skills/skills/skillkit/knowledge/application/12-testing-and-validation.md +276 -0
- package/skills/skills/skillkit/knowledge/application/13-competitive-landscape.md +198 -0
- package/skills/skills/skillkit/knowledge/foundation/01-why-skills-exist.md +246 -0
- package/skills/skills/skillkit/knowledge/foundation/02-skills-vs-subagents-comparison.md +312 -0
- package/skills/skills/skillkit/knowledge/foundation/03-skills-vs-subagents-decision-tree.md +346 -0
- package/skills/skills/skillkit/knowledge/foundation/04-hybrid-patterns.md +308 -0
- package/skills/skills/skillkit/knowledge/foundation/05-token-economics.md +275 -0
- package/skills/skills/skillkit/knowledge/foundation/06-platform-constraints.md +237 -0
- package/skills/skills/skillkit/knowledge/foundation/07-security-concerns.md +322 -0
- package/skills/skills/skillkit/knowledge/foundation/08-when-not-to-use-skills.md +270 -0
- package/skills/skills/skillkit/knowledge/plugin-guide.md +614 -0
- package/skills/skills/skillkit/knowledge/tools/14-validation-tools-guide.md +150 -0
- package/skills/skills/skillkit/knowledge/tools/15-cost-tools-guide.md +157 -0
- package/skills/skills/skillkit/knowledge/tools/16-security-tools-guide.md +122 -0
- package/skills/skills/skillkit/knowledge/tools/17-pattern-tools-guide.md +161 -0
- package/skills/skills/skillkit/knowledge/tools/18-decision-helper-guide.md +243 -0
- package/skills/skills/skillkit/knowledge/tools/19-test-generator-guide.md +275 -0
- package/skills/skills/skillkit/knowledge/tools/20-split-skill-guide.md +149 -0
- package/skills/skills/skillkit/knowledge/tools/21-quality-scorer-guide.md +226 -0
- package/skills/skills/skillkit/knowledge/tools/22-migration-helper-guide.md +356 -0
- package/skills/skills/skillkit/knowledge/tools/23-subagent-creation-guide.md +448 -0
- package/skills/skills/skillkit/knowledge/tools/24-behavioral-testing-guide.md +122 -0
- package/skills/skills/skillkit/references/proposal-generation.md +982 -0
- package/skills/skills/skillkit/references/rationalization-catalog.md +75 -0
- package/skills/skills/skillkit/references/research-methodology.md +661 -0
- package/skills/skills/skillkit/references/section-2-full-creation-workflow.md +452 -0
- package/skills/skills/skillkit/references/section-3-validation-workflow-existing-skill.md +63 -0
- package/skills/skills/skillkit/references/section-4-decision-workflow-skills-vs-subagents.md +64 -0
- package/skills/skills/skillkit/references/section-5-migration-workflow-doc-to-skill.md +58 -0
- package/skills/skills/skillkit/references/section-6-subagent-creation-workflow.md +499 -0
- package/skills/skills/skillkit/references/section-7-knowledge-reference-map.md +72 -0
- package/skills/skills/skillkit/scripts/__pycache__/decision_helper.cpython-314.pyc +0 -0
- package/skills/skills/skillkit/scripts/__pycache__/quick_validate.cpython-312.pyc +0 -0
- package/skills/skills/skillkit/scripts/__pycache__/quick_validate.cpython-314.pyc +0 -0
- package/skills/skills/skillkit/scripts/__pycache__/test_generator.cpython-314-pytest-9.0.2.pyc +0 -0
- package/skills/skills/skillkit/scripts/decision_helper.py +799 -0
- package/skills/skills/skillkit/scripts/init_skill.py +400 -0
- package/skills/skills/skillkit/scripts/init_subagent.py +231 -0
- package/skills/skills/skillkit/scripts/migration_helper.py +669 -0
- package/skills/skills/skillkit/scripts/package_skill.py +211 -0
- package/skills/skills/skillkit/scripts/pattern_detector.py +381 -0
- package/skills/skills/skillkit/scripts/pattern_detector_new.py +382 -0
- package/skills/skills/skillkit/scripts/pressure_tester.py +157 -0
- package/skills/skills/skillkit/scripts/quality_scorer.py +999 -0
- package/skills/skills/skillkit/scripts/quick_validate.py +100 -0
- package/skills/skills/skillkit/scripts/security_scanner.py +474 -0
- package/skills/skills/skillkit/scripts/split_skill.py +540 -0
- package/skills/skills/skillkit/scripts/test_generator.py +695 -0
- package/skills/skills/skillkit/scripts/token_estimator.py +493 -0
- package/skills/skills/skillkit/scripts/utils/__init__.py +49 -0
- package/skills/skills/skillkit/scripts/utils/__pycache__/__init__.cpython-312.pyc +0 -0
- package/skills/skills/skillkit/scripts/utils/__pycache__/__init__.cpython-314.pyc +0 -0
- package/skills/skills/skillkit/scripts/utils/__pycache__/budget_tracker.cpython-312.pyc +0 -0
- package/skills/skills/skillkit/scripts/utils/__pycache__/budget_tracker.cpython-314.pyc +0 -0
- package/skills/skills/skillkit/scripts/utils/__pycache__/output_formatter.cpython-312.pyc +0 -0
- package/skills/skills/skillkit/scripts/utils/__pycache__/output_formatter.cpython-314.pyc +0 -0
- package/skills/skills/skillkit/scripts/utils/__pycache__/reference_validator.cpython-312.pyc +0 -0
- package/skills/skills/skillkit/scripts/utils/__pycache__/reference_validator.cpython-314.pyc +0 -0
- package/skills/skills/skillkit/scripts/utils/budget_tracker.py +388 -0
- package/skills/skills/skillkit/scripts/utils/output_formatter.py +263 -0
- package/skills/skills/skillkit/scripts/utils/reference_validator.py +401 -0
- package/skills/skills/skillkit/scripts/validate_skill.py +594 -0
- package/skills/skills/skillkit/tests/test_behavioral.py +39 -0
- package/skills/skills/skillkit/tests/test_scenarios.md +83 -0
- package/skills/skills/skillkit/tests/test_skill.py +136 -0
- package/skills/skills/skillkit-help/SKILL.md +81 -0
- package/skills/skills/skillkit-help/knowledge/application/09-case-studies.md +257 -0
- package/skills/skills/skillkit-help/knowledge/application/12-testing-and-validation.md +276 -0
- package/skills/skills/skillkit-help/knowledge/foundation/01-why-skills-exist.md +246 -0
- package/skills/skills/skillkit-help/knowledge/foundation/02-skills-vs-subagents-comparison.md +312 -0
- package/skills/skills/skillkit-help/knowledge/foundation/03-skills-vs-subagents-decision-tree.md +346 -0
- package/skills/skills/skillkit-help/knowledge/foundation/06-platform-constraints.md +237 -0
- package/skills/skills/skillkit-help/knowledge/foundation/08-when-not-to-use-skills.md +270 -0
- package/skills/skills/skillkit-help/template/SKILL.md +52 -0
- package/skills/skills/social-media-seo/SKILL.md +278 -0
- package/skills/skills/social-media-seo/databases/caption-styles.csv +31 -0
- package/skills/skills/social-media-seo/databases/engagement-tactics.csv +16 -0
- package/skills/skills/social-media-seo/databases/hashtag-strategies.csv +21 -0
- package/skills/skills/social-media-seo/databases/hook-formulas.csv +26 -0
- package/skills/skills/social-media-seo/databases/keyword-clusters.csv +11 -0
- package/skills/skills/social-media-seo/databases/thread-structures.csv +26 -0
- package/skills/skills/social-media-seo/databases/viral-patterns.csv +21 -0
- package/skills/skills/social-media-seo/references/analytics-guide.md +321 -0
- package/skills/skills/social-media-seo/references/instagram-seo.md +235 -0
- package/skills/skills/social-media-seo/references/threads-seo.md +305 -0
- package/skills/skills/social-media-seo/references/x-twitter-seo.md +337 -0
- package/skills/skills/social-media-seo/scripts/query_database.py +191 -0
- package/skills/skills/storyteller/SKILL.md +241 -0
- package/skills/skills/storyteller/references/transformation-methodology.md +293 -0
- package/skills/skills/storyteller/references/visual-vocabulary.md +177 -0
- package/skills/skills/thread-pro/SKILL.md +162 -0
- package/skills/skills/thread-pro/anti-ai-patterns.md +120 -0
- package/skills/skills/thread-pro/hook-formulas.md +138 -0
- package/skills/skills/thread-pro/references/anti-ai-patterns.md +120 -0
- package/skills/skills/thread-pro/references/hook-formulas.md +138 -0
- package/skills/skills/thread-pro/references/thread-structures.md +240 -0
- package/skills/skills/thread-pro/references/voice-injection.md +130 -0
- package/skills/skills/thread-pro/thread-structures.md +240 -0
- package/skills/skills/thread-pro/voice-injection.md +130 -0
- package/skills/skills/tinkering/SKILL.md +251 -0
- package/skills/skills/tinkering/references/graduation-checklist.md +100 -0
- package/skills/skills/validate-plan/.skillkit-mode +1 -0
- package/skills/skills/validate-plan/SKILL.md +406 -0
- package/skills/skills/validate-plan/references/dry-principles.md +251 -0
- package/skills/skills/validate-plan/references/gap-analysis-guide.md +320 -0
- package/skills/skills/validate-plan/references/tdd-patterns.md +413 -0
- package/skills/skills/validate-plan/references/yagni-checklist.md +330 -0
- package/skills/skills/verify-before-ship/.skillkit-mode +1 -0
- package/skills/skills/verify-before-ship/SKILL.md +116 -0
- package/skills/skills/verify-before-ship/references/anti-rationalization.md +212 -0
- package/skills/skills/verify-before-ship/references/verification-gates.md +305 -0
- package/skills-manifest.json +8 -2
- package/src/picker.js +11 -5
- package/src/picker.test.js +36 -1
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
# Verification Gates — Full Specifications
|
|
2
|
+
|
|
3
|
+
Complete reference for each of the 7 production safety gates.
|
|
4
|
+
Each gate specifies: what to check, how to collect evidence, and what constitutes a pass.
|
|
5
|
+
|
|
6
|
+
## Table of Contents
|
|
7
|
+
|
|
8
|
+
- [G1: Tests Pass](#g1-tests-pass)
|
|
9
|
+
- [G2: Security Scan Clean](#g2-security-scan-clean)
|
|
10
|
+
- [G3: No Breaking Changes](#g3-no-breaking-changes)
|
|
11
|
+
- [G4: Environment Config Validated](#g4-environment-config-validated)
|
|
12
|
+
- [G5: Staging Deployment Verified](#g5-staging-deployment-verified)
|
|
13
|
+
- [G6: Rollback Plan Documented](#g6-rollback-plan-documented)
|
|
14
|
+
- [G7: Code Review Approved](#g7-code-review-approved)
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## G1: Tests Pass
|
|
19
|
+
|
|
20
|
+
**What to check:**
|
|
21
|
+
- All unit tests pass
|
|
22
|
+
- All integration tests pass
|
|
23
|
+
- Any e2e tests covering the changed functionality pass
|
|
24
|
+
- No test is skipped or marked xfail without a pre-existing, documented reason
|
|
25
|
+
|
|
26
|
+
**How to collect evidence:**
|
|
27
|
+
```bash
|
|
28
|
+
# CI output (preferred)
|
|
29
|
+
# Navigate to CI run → copy the final test summary
|
|
30
|
+
|
|
31
|
+
# Local run
|
|
32
|
+
npm test # Node/JS
|
|
33
|
+
pytest -v # Python
|
|
34
|
+
go test ./... # Go
|
|
35
|
+
./gradlew test # Java/Kotlin
|
|
36
|
+
bundle exec rspec # Ruby
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
**Pass criteria:**
|
|
40
|
+
- All tests show PASS/GREEN
|
|
41
|
+
- Zero unexpected failures
|
|
42
|
+
- Zero unexplained skips
|
|
43
|
+
|
|
44
|
+
**Fail criteria (DO NOT SHIP if any are true):**
|
|
45
|
+
- Any test failing
|
|
46
|
+
- CI run not triggered (no output = no evidence)
|
|
47
|
+
- "Tests will pass, I'm sure" without running them
|
|
48
|
+
|
|
49
|
+
**Evidence template:**
|
|
50
|
+
```
|
|
51
|
+
GATE G1 Tests: CLEARED
|
|
52
|
+
Evidence:
|
|
53
|
+
[paste CI summary or local output here]
|
|
54
|
+
Example: ✓ 247 passed, 0 failed — CI run #4521
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## G2: Security Scan Clean
|
|
60
|
+
|
|
61
|
+
**What to check:**
|
|
62
|
+
- No critical or high severity CVEs in dependencies
|
|
63
|
+
- No hardcoded secrets, tokens, or credentials in diff
|
|
64
|
+
- No new SQL injection / XSS / command injection patterns
|
|
65
|
+
|
|
66
|
+
**How to collect evidence:**
|
|
67
|
+
```bash
|
|
68
|
+
# Dependency vulnerability scan
|
|
69
|
+
npm audit --audit-level=high # Node
|
|
70
|
+
safety check # Python
|
|
71
|
+
snyk test # Any (Snyk CLI)
|
|
72
|
+
trivy fs . # Any (Trivy)
|
|
73
|
+
|
|
74
|
+
# Secret detection
|
|
75
|
+
git diff HEAD~1 | grep -i "password\|secret\|token\|api_key"
|
|
76
|
+
trufflehog git --since-commit HEAD~1 .
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
**Pass criteria:**
|
|
80
|
+
- Zero critical/high CVEs
|
|
81
|
+
- No secrets detected in diff
|
|
82
|
+
- Medium CVEs reviewed and accepted or mitigated
|
|
83
|
+
|
|
84
|
+
**Fail criteria (DO NOT SHIP if any are true):**
|
|
85
|
+
- Any critical or high CVE present
|
|
86
|
+
- Unreviewed secrets detected in diff
|
|
87
|
+
- Scan was not run ("it's fine, no dependencies changed")
|
|
88
|
+
|
|
89
|
+
**Evidence template:**
|
|
90
|
+
```
|
|
91
|
+
GATE G2 Security: CLEARED
|
|
92
|
+
Evidence:
|
|
93
|
+
Dependency scan: 0 critical, 0 high (2 low — accepted)
|
|
94
|
+
Secret scan: clean
|
|
95
|
+
Tool: npm audit — 2026-03-13
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## G3: No Breaking Changes
|
|
101
|
+
|
|
102
|
+
**What to check:**
|
|
103
|
+
- API contracts not broken (no removed endpoints, no changed required fields)
|
|
104
|
+
- Database schema migrations are backwards compatible or coordinated
|
|
105
|
+
- No removed/renamed env vars that consumers depend on
|
|
106
|
+
- Public interfaces (exported functions, types) not broken
|
|
107
|
+
|
|
108
|
+
**How to collect evidence:**
|
|
109
|
+
```bash
|
|
110
|
+
# API diff
|
|
111
|
+
git diff HEAD~1 -- "**/*.openapi.*" "**/*swagger*" "**/*schema*"
|
|
112
|
+
|
|
113
|
+
# Database migration review
|
|
114
|
+
cat migrations/latest.sql # Confirm no DROP TABLE, no NOT NULL without default
|
|
115
|
+
|
|
116
|
+
# Contract tests (if present)
|
|
117
|
+
npm run test:contract
|
|
118
|
+
pact verify
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
**Pass criteria:**
|
|
122
|
+
- No uncoordinated breaking changes
|
|
123
|
+
- Any breaking changes have a migration plan and all consumers updated
|
|
124
|
+
|
|
125
|
+
**Fail criteria (DO NOT SHIP if any are true):**
|
|
126
|
+
- Removed API endpoints with active consumers
|
|
127
|
+
- Additing NOT NULL column without default to existing table
|
|
128
|
+
- Removed env var that dependent services use
|
|
129
|
+
|
|
130
|
+
**Evidence template:**
|
|
131
|
+
```
|
|
132
|
+
GATE G3 Breaking Changes: CLEARED
|
|
133
|
+
Evidence:
|
|
134
|
+
API diff: no breaking changes in openapi.yaml
|
|
135
|
+
DB migration: adds nullable column only
|
|
136
|
+
Contract tests: 12/12 passing
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## G4: Environment Config Validated
|
|
142
|
+
|
|
143
|
+
**What to check:**
|
|
144
|
+
- All required env vars for production are set
|
|
145
|
+
- Config diff between staging and production is intentional
|
|
146
|
+
- Feature flags, secrets, and infrastructure config reviewed
|
|
147
|
+
- No staging-only config leaking to production
|
|
148
|
+
|
|
149
|
+
**How to collect evidence:**
|
|
150
|
+
```bash
|
|
151
|
+
# Compare env files (sanitize secrets before pasting)
|
|
152
|
+
diff .env.staging .env.production | grep "^[<>]" | sed 's/=.*/=***/'
|
|
153
|
+
|
|
154
|
+
# Kubernetes/Docker: review configmap/secret diff
|
|
155
|
+
kubectl diff -f k8s/production/
|
|
156
|
+
|
|
157
|
+
# Terraform: plan output
|
|
158
|
+
terraform plan -var-file=production.tfvars
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
**Pass criteria:**
|
|
162
|
+
- All required vars confirmed present in production config
|
|
163
|
+
- Any diff between staging and production is expected and documented
|
|
164
|
+
|
|
165
|
+
**Fail criteria (DO NOT SHIP if any are true):**
|
|
166
|
+
- New env var added in code but not set in production
|
|
167
|
+
- Unknown config difference between staging and production
|
|
168
|
+
- "It's the same config as staging" without checking
|
|
169
|
+
|
|
170
|
+
**Evidence template:**
|
|
171
|
+
```
|
|
172
|
+
GATE G4 Config: CLEARED
|
|
173
|
+
Evidence:
|
|
174
|
+
New vars added: FEATURE_X_ENABLED (set to true in prod config ✓)
|
|
175
|
+
Config diff: 1 intentional difference — DEBUG=false in prod, true in staging
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## G5: Staging Deployment Verified
|
|
181
|
+
|
|
182
|
+
**What to check:**
|
|
183
|
+
- Code was deployed to staging before production
|
|
184
|
+
- Smoke tests pass on staging (critical user paths work)
|
|
185
|
+
- No error spike in staging logs after deploy
|
|
186
|
+
|
|
187
|
+
**How to collect evidence:**
|
|
188
|
+
```bash
|
|
189
|
+
# Staging deploy confirmation
|
|
190
|
+
curl -s https://staging.yourapp.com/health | jq .
|
|
191
|
+
|
|
192
|
+
# Check staging logs for errors
|
|
193
|
+
kubectl logs -n staging deployment/api --since=10m | grep -i error | tail -20
|
|
194
|
+
|
|
195
|
+
# Smoke test
|
|
196
|
+
curl -s https://staging.yourapp.com/api/v1/ping
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
**Pass criteria:**
|
|
200
|
+
- Staging health endpoint returns 200
|
|
201
|
+
- Critical user path (login, checkout, etc.) works manually
|
|
202
|
+
- No new error pattern in logs
|
|
203
|
+
|
|
204
|
+
**Fail criteria (DO NOT SHIP if any are true):**
|
|
205
|
+
- Code never deployed to staging ("we'll test in prod")
|
|
206
|
+
- Staging shows errors that haven't been investigated
|
|
207
|
+
- "Staging and prod are different so staging tests don't count"
|
|
208
|
+
|
|
209
|
+
**Evidence template:**
|
|
210
|
+
```
|
|
211
|
+
GATE G5 Staging: CLEARED
|
|
212
|
+
Evidence:
|
|
213
|
+
Staging deploy: 2026-03-13 14:32 UTC — build #891
|
|
214
|
+
Health: {"status":"ok","version":"1.4.2"}
|
|
215
|
+
Smoke test: login ✓, checkout ✓, API /ping ✓
|
|
216
|
+
Logs: 0 new errors in last 10 min
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## G6: Rollback Plan Documented
|
|
222
|
+
|
|
223
|
+
**What to check:**
|
|
224
|
+
- Rollback steps are written down and specific
|
|
225
|
+
- Rollback has been validated (at minimum, reviewed for feasibility)
|
|
226
|
+
- Who executes the rollback and how to trigger it is clear
|
|
227
|
+
|
|
228
|
+
**Rollback plan minimum requirements:**
|
|
229
|
+
1. Command or action to revert (specific, not "undo the change")
|
|
230
|
+
2. Expected time to complete rollback
|
|
231
|
+
3. How to verify rollback succeeded
|
|
232
|
+
4. Who to notify
|
|
233
|
+
|
|
234
|
+
**How to collect evidence:**
|
|
235
|
+
```bash
|
|
236
|
+
# Git rollback
|
|
237
|
+
git revert HEAD --no-edit && git push origin main
|
|
238
|
+
|
|
239
|
+
# Kubernetes rollback
|
|
240
|
+
kubectl rollout undo deployment/api -n production
|
|
241
|
+
kubectl rollout status deployment/api -n production
|
|
242
|
+
|
|
243
|
+
# Feature flag toggle
|
|
244
|
+
curl -X POST https://flags.yourapp.com/api/FEATURE_X/disable
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
**Pass criteria:**
|
|
248
|
+
- Specific commands documented, not "revert the commit"
|
|
249
|
+
- Steps are executable by someone other than the author
|
|
250
|
+
- Database rollback steps included if schema changed
|
|
251
|
+
|
|
252
|
+
**Fail criteria (DO NOT SHIP if any are true):**
|
|
253
|
+
- No rollback plan written ("we'll figure it out if needed")
|
|
254
|
+
- Rollback plan is "we can just redeploy the old version" without specific commands
|
|
255
|
+
- DB migration with no rollback migration
|
|
256
|
+
|
|
257
|
+
**Evidence template:**
|
|
258
|
+
```
|
|
259
|
+
GATE G6 Rollback: CLEARED
|
|
260
|
+
Evidence:
|
|
261
|
+
Rollback steps:
|
|
262
|
+
1. kubectl rollout undo deployment/api -n production
|
|
263
|
+
2. Verify: curl https://api.yourapp.com/health → {"version":"1.4.1"}
|
|
264
|
+
3. Notify: #incidents Slack channel
|
|
265
|
+
Estimated rollback time: ~3 minutes
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
## G7: Code Review Approved
|
|
271
|
+
|
|
272
|
+
**What to check:**
|
|
273
|
+
- At least one reviewer (not the author) approved the PR
|
|
274
|
+
- Review was substantive (not rubber-stamp)
|
|
275
|
+
- Security-sensitive code had appropriate reviewer
|
|
276
|
+
|
|
277
|
+
**How to collect evidence:**
|
|
278
|
+
```bash
|
|
279
|
+
# GitHub
|
|
280
|
+
gh pr view <PR_NUMBER> --json reviews,reviewDecision
|
|
281
|
+
|
|
282
|
+
# GitLab
|
|
283
|
+
glab mr view <MR_IID>
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
**Pass criteria:**
|
|
287
|
+
- Minimum 1 approval from non-author
|
|
288
|
+
- Approval is on the current commit (no force-push after approval)
|
|
289
|
+
- PR has no blocking comments unresolved
|
|
290
|
+
|
|
291
|
+
**Fail criteria (DO NOT SHIP if any are true):**
|
|
292
|
+
- No PR created ("it's a small fix")
|
|
293
|
+
- PR approved by the author themselves
|
|
294
|
+
- Unresolved blocking comments
|
|
295
|
+
- Approved on an older commit, force-pushed after
|
|
296
|
+
|
|
297
|
+
**Evidence template:**
|
|
298
|
+
```
|
|
299
|
+
GATE G7 Code Review: CLEARED
|
|
300
|
+
Evidence:
|
|
301
|
+
PR: github.com/org/repo/pull/847
|
|
302
|
+
Approvals: @alice (2026-03-13 13:15 UTC)
|
|
303
|
+
Blocking comments: 0
|
|
304
|
+
Commit approved: a3f9d21 (current HEAD ✓)
|
|
305
|
+
```
|
package/skills-manifest.json
CHANGED
|
@@ -126,6 +126,13 @@
|
|
|
126
126
|
"type": "skill",
|
|
127
127
|
"path": "skills/skillkit"
|
|
128
128
|
},
|
|
129
|
+
{
|
|
130
|
+
"name": "skillkit-help",
|
|
131
|
+
"description": "Pre-build orientation for skill creators. Answers \"what are skills?\",",
|
|
132
|
+
"category": "core",
|
|
133
|
+
"type": "skill",
|
|
134
|
+
"path": "skills/skillkit-help"
|
|
135
|
+
},
|
|
129
136
|
{
|
|
130
137
|
"name": "social-media-seo",
|
|
131
138
|
"description": "Optimize social media content for maximum discoverability and engagement using 2025-proven SEO strategies.",
|
|
@@ -212,6 +219,5 @@
|
|
|
212
219
|
"type": "agent",
|
|
213
220
|
"path": "agents/seo-manager.md"
|
|
214
221
|
}
|
|
215
|
-
]
|
|
216
|
-
"generatedAt": "2026-03-15T04:29:19.063Z"
|
|
222
|
+
]
|
|
217
223
|
}
|
package/src/picker.js
CHANGED
|
@@ -27,6 +27,16 @@ export function getCategoryDisplay(skill) {
|
|
|
27
27
|
return `${icon} ${label}`
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
+
export function sortSkills(skills) {
|
|
31
|
+
return [...skills].sort((a, b) => {
|
|
32
|
+
if (a.name === 'skillkit') return -1
|
|
33
|
+
if (b.name === 'skillkit') return 1
|
|
34
|
+
if (a.name === 'skillkit-help') return -1
|
|
35
|
+
if (b.name === 'skillkit-help') return 1
|
|
36
|
+
return a.name.localeCompare(b.name)
|
|
37
|
+
})
|
|
38
|
+
}
|
|
39
|
+
|
|
30
40
|
export async function pickInstallables() {
|
|
31
41
|
const mode = await select({
|
|
32
42
|
message: 'What to install?',
|
|
@@ -42,11 +52,7 @@ export async function pickInstallables() {
|
|
|
42
52
|
if (mode === 'skills-only') return { skills: manifest.skills, agents: [] }
|
|
43
53
|
if (mode === 'agents-only') return { skills: [], agents: manifest.agents }
|
|
44
54
|
|
|
45
|
-
const sortedSkills =
|
|
46
|
-
if (a.name === 'skillkit') return -1
|
|
47
|
-
if (b.name === 'skillkit') return 1
|
|
48
|
-
return a.name.localeCompare(b.name)
|
|
49
|
-
})
|
|
55
|
+
const sortedSkills = sortSkills(manifest.skills)
|
|
50
56
|
|
|
51
57
|
const skillChoices = sortedSkills.map(s => ({
|
|
52
58
|
value: s.name,
|
package/src/picker.test.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { test } from 'node:test'
|
|
2
2
|
import assert from 'node:assert'
|
|
3
|
-
import { getCategoryDisplay } from './picker.js'
|
|
3
|
+
import { getCategoryDisplay, sortSkills } from './picker.js'
|
|
4
4
|
|
|
5
5
|
test('getCategoryDisplay returns icon and category label', () => {
|
|
6
6
|
const skill = { name: 'test-skill', category: 'creative' }
|
|
@@ -19,3 +19,38 @@ test('getCategoryDisplay handles missing category', () => {
|
|
|
19
19
|
const result = getCategoryDisplay(skill)
|
|
20
20
|
assert.strictEqual(result, ' ')
|
|
21
21
|
})
|
|
22
|
+
|
|
23
|
+
// --- sortSkills tests (added for skillkit-help ordering) ---
|
|
24
|
+
test('skillkit sorts first', () => {
|
|
25
|
+
const skills = [
|
|
26
|
+
{ name: 'readme-expert' },
|
|
27
|
+
{ name: 'skillkit' },
|
|
28
|
+
{ name: 'adversarial-review' }
|
|
29
|
+
]
|
|
30
|
+
const sorted = sortSkills(skills)
|
|
31
|
+
assert.strictEqual(sorted[0].name, 'skillkit')
|
|
32
|
+
})
|
|
33
|
+
|
|
34
|
+
test('skillkit-help sorts second', () => {
|
|
35
|
+
const skills = [
|
|
36
|
+
{ name: 'readme-expert' },
|
|
37
|
+
{ name: 'skillkit-help' },
|
|
38
|
+
{ name: 'skillkit' },
|
|
39
|
+
{ name: 'adversarial-review' }
|
|
40
|
+
]
|
|
41
|
+
const sorted = sortSkills(skills)
|
|
42
|
+
assert.strictEqual(sorted[0].name, 'skillkit')
|
|
43
|
+
assert.strictEqual(sorted[1].name, 'skillkit-help')
|
|
44
|
+
})
|
|
45
|
+
|
|
46
|
+
test('remaining skills sort alphabetically', () => {
|
|
47
|
+
const skills = [
|
|
48
|
+
{ name: 'readme-expert' },
|
|
49
|
+
{ name: 'skillkit' },
|
|
50
|
+
{ name: 'adversarial-review' },
|
|
51
|
+
{ name: 'skillkit-help' }
|
|
52
|
+
]
|
|
53
|
+
const sorted = sortSkills(skills)
|
|
54
|
+
assert.strictEqual(sorted[2].name, 'adversarial-review')
|
|
55
|
+
assert.strictEqual(sorted[3].name, 'readme-expert')
|
|
56
|
+
})
|