skilldrop-cli 0.16.3__py3-none-any.whl
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.
- skilldrop_cli/__init__.py +16 -0
- skilldrop_cli/__main__.py +3 -0
- skilldrop_cli/data/LICENSE +9 -0
- skilldrop_cli/data/LICENSE-APACHE +202 -0
- skilldrop_cli/data/LICENSE-MIT +21 -0
- skilldrop_cli/data/agents/README.md +127 -0
- skilldrop_cli/data/agents/code-quality.md +40 -0
- skilldrop_cli/data/agents/devils-advocate.md +40 -0
- skilldrop_cli/data/agents/security-reviewer.md +44 -0
- skilldrop_cli/data/bin/skilldrop.js +2110 -0
- skilldrop_cli/data/catalogue.json +187 -0
- skilldrop_cli/data/contracts/agent.schema.json +28 -0
- skilldrop_cli/data/contracts/catalogue.schema.json +33 -0
- skilldrop_cli/data/contracts/guide.schema.json +18 -0
- skilldrop_cli/data/contracts/loop.schema.json +87 -0
- skilldrop_cli/data/contracts/pack.schema.json +75 -0
- skilldrop_cli/data/contracts/skill.schema.json +110 -0
- skilldrop_cli/data/contracts/terminals.json +33 -0
- skilldrop_cli/data/model-routing.json +474 -0
- skilldrop_cli/data/package.json +46 -0
- skilldrop_cli/data/packs/ai-engineering/pack.json +57 -0
- skilldrop_cli/data/packs/ai-engineering/skills/agent-adoption-stage/SKILL.md +90 -0
- skilldrop_cli/data/packs/ai-engineering/skills/agent-adoption-stage/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/ai-engineering/skills/agent-adoption-stage/evals/evals.json +19 -0
- skilldrop_cli/data/packs/ai-engineering/skills/agent-adoption-stage/manifest.json +39 -0
- skilldrop_cli/data/packs/ai-engineering/skills/agent-budget/SKILL.md +63 -0
- skilldrop_cli/data/packs/ai-engineering/skills/agent-budget/evals/eval_queries.json +11 -0
- skilldrop_cli/data/packs/ai-engineering/skills/agent-budget/evals/evals.json +28 -0
- skilldrop_cli/data/packs/ai-engineering/skills/agent-budget/manifest.json +11 -0
- skilldrop_cli/data/packs/ai-engineering/skills/agent-budget/templates/budget-spec.md +30 -0
- skilldrop_cli/data/packs/ai-engineering/skills/agent-loop-design/SKILL.md +70 -0
- skilldrop_cli/data/packs/ai-engineering/skills/agent-loop-design/evals/eval_queries.json +11 -0
- skilldrop_cli/data/packs/ai-engineering/skills/agent-loop-design/evals/evals.json +28 -0
- skilldrop_cli/data/packs/ai-engineering/skills/agent-loop-design/manifest.json +11 -0
- skilldrop_cli/data/packs/ai-engineering/skills/agent-loop-design/templates/loop-spec.md +46 -0
- skilldrop_cli/data/packs/ai-engineering/skills/agent-threat-model/SKILL.md +89 -0
- skilldrop_cli/data/packs/ai-engineering/skills/agent-threat-model/evals/eval_queries.json +15 -0
- skilldrop_cli/data/packs/ai-engineering/skills/agent-threat-model/evals/evals.json +41 -0
- skilldrop_cli/data/packs/ai-engineering/skills/agent-threat-model/examples/support-triage-agent.md +117 -0
- skilldrop_cli/data/packs/ai-engineering/skills/agent-threat-model/manifest.json +11 -0
- skilldrop_cli/data/packs/ai-engineering/skills/agent-threat-model/reference.md +101 -0
- skilldrop_cli/data/packs/ai-engineering/skills/agent-threat-model/templates/agent-threat-model.md +71 -0
- skilldrop_cli/data/packs/ai-engineering/skills/ai-adoption-rollout/SKILL.md +61 -0
- skilldrop_cli/data/packs/ai-engineering/skills/ai-adoption-rollout/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/ai-engineering/skills/ai-adoption-rollout/evals/evals.json +19 -0
- skilldrop_cli/data/packs/ai-engineering/skills/ai-adoption-rollout/manifest.json +33 -0
- skilldrop_cli/data/packs/ai-engineering/skills/ai-readiness-assessment/SKILL.md +68 -0
- skilldrop_cli/data/packs/ai-engineering/skills/ai-readiness-assessment/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/ai-engineering/skills/ai-readiness-assessment/evals/evals.json +17 -0
- skilldrop_cli/data/packs/ai-engineering/skills/ai-readiness-assessment/manifest.json +35 -0
- skilldrop_cli/data/packs/ai-engineering/skills/ai-usage-policy/SKILL.md +67 -0
- skilldrop_cli/data/packs/ai-engineering/skills/ai-usage-policy/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/ai-engineering/skills/ai-usage-policy/evals/evals.json +19 -0
- skilldrop_cli/data/packs/ai-engineering/skills/ai-usage-policy/manifest.json +33 -0
- skilldrop_cli/data/packs/ai-engineering/skills/ai-usage-report/SKILL.md +111 -0
- skilldrop_cli/data/packs/ai-engineering/skills/ai-usage-report/evals/eval_queries.json +30 -0
- skilldrop_cli/data/packs/ai-engineering/skills/ai-usage-report/evals/evals.json +19 -0
- skilldrop_cli/data/packs/ai-engineering/skills/ai-usage-report/evals/files/1/northwind-ai-events.csv +4213 -0
- skilldrop_cli/data/packs/ai-engineering/skills/ai-usage-report/examples/weekly-engineering-team.md +133 -0
- skilldrop_cli/data/packs/ai-engineering/skills/ai-usage-report/manifest.json +12 -0
- skilldrop_cli/data/packs/ai-engineering/skills/ai-usage-report/scripts/build_report.py +436 -0
- skilldrop_cli/data/packs/ai-engineering/skills/ai-usage-report/templates/report-per-user.md +42 -0
- skilldrop_cli/data/packs/ai-engineering/skills/ai-usage-report/templates/report-team-rollup.md +49 -0
- skilldrop_cli/data/packs/ai-engineering/skills/ai-usage-report/templates/usage-event-schema.md +76 -0
- skilldrop_cli/data/packs/ai-engineering/skills/ai-use-case-triage/SKILL.md +59 -0
- skilldrop_cli/data/packs/ai-engineering/skills/ai-use-case-triage/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/ai-engineering/skills/ai-use-case-triage/evals/evals.json +18 -0
- skilldrop_cli/data/packs/ai-engineering/skills/ai-use-case-triage/manifest.json +34 -0
- skilldrop_cli/data/packs/ai-engineering/skills/llm-eval-harness/SKILL.md +73 -0
- skilldrop_cli/data/packs/ai-engineering/skills/llm-eval-harness/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/ai-engineering/skills/llm-eval-harness/evals/evals.json +19 -0
- skilldrop_cli/data/packs/ai-engineering/skills/llm-eval-harness/manifest.json +11 -0
- skilldrop_cli/data/packs/ai-engineering/skills/llm-eval-harness/reference.md +58 -0
- skilldrop_cli/data/packs/ai-engineering/skills/llm-eval-harness/templates/eval-plan.md +63 -0
- skilldrop_cli/data/packs/ai-engineering/skills/llm-eval-harness/templates/golden-case.jsonl +5 -0
- skilldrop_cli/data/packs/ai-engineering/skills/subagent-design/SKILL.md +69 -0
- skilldrop_cli/data/packs/ai-engineering/skills/subagent-design/evals/eval_queries.json +11 -0
- skilldrop_cli/data/packs/ai-engineering/skills/subagent-design/evals/evals.json +29 -0
- skilldrop_cli/data/packs/ai-engineering/skills/subagent-design/manifest.json +11 -0
- skilldrop_cli/data/packs/ai-engineering/skills/subagent-design/templates/orchestration-plan.md +47 -0
- skilldrop_cli/data/packs/api-builder/pack.json +48 -0
- skilldrop_cli/data/packs/api-builder/skills/eval-harness-generator/SKILL.md +84 -0
- skilldrop_cli/data/packs/api-builder/skills/eval-harness-generator/evals/eval_queries.json +30 -0
- skilldrop_cli/data/packs/api-builder/skills/eval-harness-generator/evals/evals.json +19 -0
- skilldrop_cli/data/packs/api-builder/skills/eval-harness-generator/evals/files/1/SKILL.md +31 -0
- skilldrop_cli/data/packs/api-builder/skills/eval-harness-generator/manifest.json +11 -0
- skilldrop_cli/data/packs/api-builder/skills/prompt-caching-advisor/SKILL.md +90 -0
- skilldrop_cli/data/packs/api-builder/skills/prompt-caching-advisor/evals/eval_queries.json +30 -0
- skilldrop_cli/data/packs/api-builder/skills/prompt-caching-advisor/evals/evals.json +19 -0
- skilldrop_cli/data/packs/api-builder/skills/prompt-caching-advisor/manifest.json +11 -0
- skilldrop_cli/data/packs/api-builder/skills/token-budget-estimator/SKILL.md +75 -0
- skilldrop_cli/data/packs/api-builder/skills/token-budget-estimator/evals/eval_queries.json +30 -0
- skilldrop_cli/data/packs/api-builder/skills/token-budget-estimator/evals/evals.json +18 -0
- skilldrop_cli/data/packs/api-builder/skills/token-budget-estimator/manifest.json +11 -0
- skilldrop_cli/data/packs/api-builder/skills/tool-use-schema-writer/SKILL.md +111 -0
- skilldrop_cli/data/packs/api-builder/skills/tool-use-schema-writer/evals/eval_queries.json +30 -0
- skilldrop_cli/data/packs/api-builder/skills/tool-use-schema-writer/evals/evals.json +18 -0
- skilldrop_cli/data/packs/api-builder/skills/tool-use-schema-writer/manifest.json +11 -0
- skilldrop_cli/data/packs/converters/pack.json +66 -0
- skilldrop_cli/data/packs/converters/skills/file-to-markdown/SKILL.md +103 -0
- skilldrop_cli/data/packs/converters/skills/file-to-markdown/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/converters/skills/file-to-markdown/evals/evals.json +27 -0
- skilldrop_cli/data/packs/converters/skills/file-to-markdown/evals/files/1/northwind-q3.pptx +0 -0
- skilldrop_cli/data/packs/converters/skills/file-to-markdown/evals/files/2/acme-contract-summary.pdf +93 -0
- skilldrop_cli/data/packs/converters/skills/file-to-markdown/examples/inputs/accounts.json +1 -0
- skilldrop_cli/data/packs/converters/skills/file-to-markdown/examples/inputs/fabrikam-status.html +14 -0
- skilldrop_cli/data/packs/converters/skills/file-to-markdown/examples/mixed-inputs.md +306 -0
- skilldrop_cli/data/packs/converters/skills/file-to-markdown/manifest.json +49 -0
- skilldrop_cli/data/packs/converters/skills/file-to-markdown/scripts/to_markdown.py +1299 -0
- skilldrop_cli/data/packs/converters/skills/md-to-docx/SKILL.md +124 -0
- skilldrop_cli/data/packs/converters/skills/md-to-docx/evals/eval_queries.json +10 -0
- skilldrop_cli/data/packs/converters/skills/md-to-docx/evals/evals.json +29 -0
- skilldrop_cli/data/packs/converters/skills/md-to-docx/evals/files/1/brand/brand.json +80 -0
- skilldrop_cli/data/packs/converters/skills/md-to-docx/evals/files/1/brand/logo-white.png +0 -0
- skilldrop_cli/data/packs/converters/skills/md-to-docx/evals/files/1/brand/logo.png +0 -0
- skilldrop_cli/data/packs/converters/skills/md-to-docx/evals/files/1/brand/mark.png +0 -0
- skilldrop_cli/data/packs/converters/skills/md-to-docx/evals/files/1/docs/vendor-onboarding.md +42 -0
- skilldrop_cli/data/packs/converters/skills/md-to-docx/examples/q3-support-review-input.md +54 -0
- skilldrop_cli/data/packs/converters/skills/md-to-docx/examples/q3-support-review.md +80 -0
- skilldrop_cli/data/packs/converters/skills/md-to-docx/examples/tickets-by-region.png +0 -0
- skilldrop_cli/data/packs/converters/skills/md-to-docx/manifest.json +52 -0
- skilldrop_cli/data/packs/converters/skills/md-to-docx/reference.md +89 -0
- skilldrop_cli/data/packs/converters/skills/md-to-docx/scripts/md_to_docx.py +1114 -0
- skilldrop_cli/data/packs/converters/skills/md-to-html/SKILL.md +100 -0
- skilldrop_cli/data/packs/converters/skills/md-to-html/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/converters/skills/md-to-html/evals/evals.json +18 -0
- skilldrop_cli/data/packs/converters/skills/md-to-html/evals/files/1/brand/brand.json +80 -0
- skilldrop_cli/data/packs/converters/skills/md-to-html/evals/files/1/brand/logo-white.png +0 -0
- skilldrop_cli/data/packs/converters/skills/md-to-html/evals/files/1/brand/logo.png +0 -0
- skilldrop_cli/data/packs/converters/skills/md-to-html/evals/files/1/brand/mark.png +0 -0
- skilldrop_cli/data/packs/converters/skills/md-to-html/evals/files/1/docs/q3-review.md +35 -0
- skilldrop_cli/data/packs/converters/skills/md-to-html/evals/files/1/img/dashboard.png +0 -0
- skilldrop_cli/data/packs/converters/skills/md-to-html/examples/inputs/chart.svg +8 -0
- skilldrop_cli/data/packs/converters/skills/md-to-html/examples/inputs/ops-review.md +48 -0
- skilldrop_cli/data/packs/converters/skills/md-to-html/examples/ops-review.md +83 -0
- skilldrop_cli/data/packs/converters/skills/md-to-html/manifest.json +43 -0
- skilldrop_cli/data/packs/converters/skills/md-to-html/reference.md +70 -0
- skilldrop_cli/data/packs/converters/skills/md-to-html/scripts/md_to_html.py +652 -0
- skilldrop_cli/data/packs/converters/skills/md-to-xlsx/SKILL.md +120 -0
- skilldrop_cli/data/packs/converters/skills/md-to-xlsx/evals/eval_queries.json +9 -0
- skilldrop_cli/data/packs/converters/skills/md-to-xlsx/evals/evals.json +28 -0
- skilldrop_cli/data/packs/converters/skills/md-to-xlsx/evals/files/1/exports/northwind-invoices.csv +25 -0
- skilldrop_cli/data/packs/converters/skills/md-to-xlsx/evals/files/2/reports/q3-ops-review.md +32 -0
- skilldrop_cli/data/packs/converters/skills/md-to-xlsx/examples/vendor-review-input.md +28 -0
- skilldrop_cli/data/packs/converters/skills/md-to-xlsx/examples/vendor-review.md +94 -0
- skilldrop_cli/data/packs/converters/skills/md-to-xlsx/manifest.json +33 -0
- skilldrop_cli/data/packs/converters/skills/md-to-xlsx/reference.md +94 -0
- skilldrop_cli/data/packs/converters/skills/md-to-xlsx/scripts/md_to_xlsx.py +667 -0
- skilldrop_cli/data/packs/converters/skills/mermaid-render/SKILL.md +109 -0
- skilldrop_cli/data/packs/converters/skills/mermaid-render/evals/eval_queries.json +30 -0
- skilldrop_cli/data/packs/converters/skills/mermaid-render/evals/evals.json +17 -0
- skilldrop_cli/data/packs/converters/skills/mermaid-render/evals/files/1/docs/contoso-orders.md +23 -0
- skilldrop_cli/data/packs/converters/skills/mermaid-render/examples/broken-diagrams.md +147 -0
- skilldrop_cli/data/packs/converters/skills/mermaid-render/examples/inputs/broken-flowchart.mmd +8 -0
- skilldrop_cli/data/packs/converters/skills/mermaid-render/examples/inputs/broken-sequence.mmd +11 -0
- skilldrop_cli/data/packs/converters/skills/mermaid-render/examples/inputs/checkout-flow.mmd +9 -0
- skilldrop_cli/data/packs/converters/skills/mermaid-render/examples/inputs/design-notes.md +35 -0
- skilldrop_cli/data/packs/converters/skills/mermaid-render/examples/inputs/fixed-flowchart.mmd +9 -0
- skilldrop_cli/data/packs/converters/skills/mermaid-render/examples/inputs/typo.mmd +2 -0
- skilldrop_cli/data/packs/converters/skills/mermaid-render/manifest.json +40 -0
- skilldrop_cli/data/packs/converters/skills/mermaid-render/reference.md +70 -0
- skilldrop_cli/data/packs/converters/skills/mermaid-render/scripts/render_mermaid.py +486 -0
- skilldrop_cli/data/packs/core/loops/ship-a-draft/LOOP.md +77 -0
- skilldrop_cli/data/packs/core/loops/ship-a-draft/evals/eval_queries.json +30 -0
- skilldrop_cli/data/packs/core/loops/ship-a-draft/evals/evals.json +25 -0
- skilldrop_cli/data/packs/core/loops/ship-a-draft/loop.json +41 -0
- skilldrop_cli/data/packs/core/pack.json +50 -0
- skilldrop_cli/data/packs/core/skills/brief-intake/SKILL.md +79 -0
- skilldrop_cli/data/packs/core/skills/brief-intake/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/core/skills/brief-intake/evals/evals.json +16 -0
- skilldrop_cli/data/packs/core/skills/brief-intake/manifest.json +11 -0
- skilldrop_cli/data/packs/core/skills/brief-intake/templates/brief-adr.md +41 -0
- skilldrop_cli/data/packs/core/skills/brief-intake/templates/brief-decision-log.md +35 -0
- skilldrop_cli/data/packs/core/skills/brief-intake/templates/brief-deck.md +43 -0
- skilldrop_cli/data/packs/core/skills/brief-intake/templates/brief-design-doc.md +48 -0
- skilldrop_cli/data/packs/core/skills/brief-intake/templates/brief-exec-summary.md +47 -0
- skilldrop_cli/data/packs/core/skills/brief-intake/templates/brief-generic.md +45 -0
- skilldrop_cli/data/packs/core/skills/brief-intake/templates/brief-runbook.md +44 -0
- skilldrop_cli/data/packs/core/skills/brief-intake/templates/brief-tech-comparison.md +38 -0
- skilldrop_cli/data/packs/core/skills/council-review/SKILL.md +106 -0
- skilldrop_cli/data/packs/core/skills/council-review/evals/eval_queries.json +38 -0
- skilldrop_cli/data/packs/core/skills/council-review/evals/evals.json +18 -0
- skilldrop_cli/data/packs/core/skills/council-review/examples/redis-cache-decision.md +75 -0
- skilldrop_cli/data/packs/core/skills/council-review/manifest.json +11 -0
- skilldrop_cli/data/packs/core/skills/council-review/reference.md +76 -0
- skilldrop_cli/data/packs/core/skills/council-review/seats/architect.md +29 -0
- skilldrop_cli/data/packs/core/skills/council-review/seats/bench.md +39 -0
- skilldrop_cli/data/packs/core/skills/council-review/seats/operator.md +27 -0
- skilldrop_cli/data/packs/core/skills/council-review/seats/pragmatist.md +29 -0
- skilldrop_cli/data/packs/core/skills/council-review/seats/security-engineer.md +29 -0
- skilldrop_cli/data/packs/core/skills/council-review/seats/user-advocate.md +27 -0
- skilldrop_cli/data/packs/core/skills/council-review/templates/council-review.md +59 -0
- skilldrop_cli/data/packs/core/skills/doc-critique/SKILL.md +119 -0
- skilldrop_cli/data/packs/core/skills/doc-critique/evals/eval_queries.json +38 -0
- skilldrop_cli/data/packs/core/skills/doc-critique/evals/evals.json +17 -0
- skilldrop_cli/data/packs/core/skills/doc-critique/examples/design-doc-critique.md +34 -0
- skilldrop_cli/data/packs/core/skills/doc-critique/manifest.json +11 -0
- skilldrop_cli/data/packs/core/skills/doc-critique/rubrics/adr.md +36 -0
- skilldrop_cli/data/packs/core/skills/doc-critique/rubrics/decision-log.md +39 -0
- skilldrop_cli/data/packs/core/skills/doc-critique/rubrics/deck.md +45 -0
- skilldrop_cli/data/packs/core/skills/doc-critique/rubrics/design-doc.md +42 -0
- skilldrop_cli/data/packs/core/skills/doc-critique/rubrics/exec-summary.md +41 -0
- skilldrop_cli/data/packs/core/skills/doc-critique/rubrics/generic.md +40 -0
- skilldrop_cli/data/packs/core/skills/doc-critique/rubrics/runbook.md +42 -0
- skilldrop_cli/data/packs/core/skills/doc-critique/rubrics/tech-comparison.md +40 -0
- skilldrop_cli/data/packs/core/skills/doc-critique/templates/critique.md +49 -0
- skilldrop_cli/data/packs/core/skills/output-hygiene/SKILL.md +97 -0
- skilldrop_cli/data/packs/core/skills/output-hygiene/evals/eval_queries.json +11 -0
- skilldrop_cli/data/packs/core/skills/output-hygiene/evals/evals.json +30 -0
- skilldrop_cli/data/packs/core/skills/output-hygiene/manifest.json +34 -0
- skilldrop_cli/data/packs/core/skills/output-hygiene/reference.md +106 -0
- skilldrop_cli/data/packs/core/skills/output-hygiene/scripts/scrub.py +315 -0
- skilldrop_cli/data/packs/data-analytics/pack.json +57 -0
- skilldrop_cli/data/packs/data-analytics/skills/dashboard-spec/SKILL.md +83 -0
- skilldrop_cli/data/packs/data-analytics/skills/dashboard-spec/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/data-analytics/skills/dashboard-spec/evals/evals.json +19 -0
- skilldrop_cli/data/packs/data-analytics/skills/dashboard-spec/examples/support-staffing.md +84 -0
- skilldrop_cli/data/packs/data-analytics/skills/dashboard-spec/manifest.json +40 -0
- skilldrop_cli/data/packs/data-analytics/skills/dashboard-spec/reference.md +45 -0
- skilldrop_cli/data/packs/data-analytics/skills/dashboard-spec/templates/dashboard-spec.md +55 -0
- skilldrop_cli/data/packs/data-analytics/skills/metric-definition/SKILL.md +84 -0
- skilldrop_cli/data/packs/data-analytics/skills/metric-definition/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/data-analytics/skills/metric-definition/evals/evals.json +19 -0
- skilldrop_cli/data/packs/data-analytics/skills/metric-definition/examples/refund-rate.md +104 -0
- skilldrop_cli/data/packs/data-analytics/skills/metric-definition/manifest.json +41 -0
- skilldrop_cli/data/packs/data-analytics/skills/metric-definition/reference.md +67 -0
- skilldrop_cli/data/packs/data-analytics/skills/metric-definition/templates/metric-spec.md +70 -0
- skilldrop_cli/data/packs/data-analytics/skills/sql-review/SKILL.md +83 -0
- skilldrop_cli/data/packs/data-analytics/skills/sql-review/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/data-analytics/skills/sql-review/evals/evals.json +19 -0
- skilldrop_cli/data/packs/data-analytics/skills/sql-review/examples/revenue-by-region.md +174 -0
- skilldrop_cli/data/packs/data-analytics/skills/sql-review/manifest.json +42 -0
- skilldrop_cli/data/packs/data-analytics/skills/sql-review/reference.md +84 -0
- skilldrop_cli/data/packs/data-analytics/skills/sql-review/scripts/sql_lint.py +461 -0
- skilldrop_cli/data/packs/design/pack.json +60 -0
- skilldrop_cli/data/packs/design/skills/brand-kit/SKILL.md +105 -0
- skilldrop_cli/data/packs/design/skills/brand-kit/evals/eval_queries.json +30 -0
- skilldrop_cli/data/packs/design/skills/brand-kit/evals/evals.json +18 -0
- skilldrop_cli/data/packs/design/skills/brand-kit/evals/files/1/brand/northwind-logo-white.png +0 -0
- skilldrop_cli/data/packs/design/skills/brand-kit/evals/files/1/brand/northwind-logo.png +0 -0
- skilldrop_cli/data/packs/design/skills/brand-kit/examples/northwind-brand.md +48 -0
- skilldrop_cli/data/packs/design/skills/brand-kit/manifest.json +45 -0
- skilldrop_cli/data/packs/design/skills/brand-kit/scripts/check_brand.py +114 -0
- skilldrop_cli/data/packs/design/skills/brand-kit/templates/brand.json +54 -0
- skilldrop_cli/data/packs/design/skills/deck-builder/SKILL.md +201 -0
- skilldrop_cli/data/packs/design/skills/deck-builder/evals/eval_queries.json +14 -0
- skilldrop_cli/data/packs/design/skills/deck-builder/evals/evals.json +40 -0
- skilldrop_cli/data/packs/design/skills/deck-builder/examples/exec-board-update.md +108 -0
- skilldrop_cli/data/packs/design/skills/deck-builder/examples/templated-brand-deck.md +148 -0
- skilldrop_cli/data/packs/design/skills/deck-builder/manifest.json +18 -0
- skilldrop_cli/data/packs/design/skills/deck-builder/reference.md +180 -0
- skilldrop_cli/data/packs/design/skills/deck-builder/requirements.txt +3 -0
- skilldrop_cli/data/packs/design/skills/deck-builder/scripts/build_deck.py +1134 -0
- skilldrop_cli/data/packs/design/skills/deck-builder/templates/deck-spec.json +168 -0
- skilldrop_cli/data/packs/design/skills/deck-builder/templates/palettes.json +59 -0
- skilldrop_cli/data/packs/design/skills/marketing-flyer/SKILL.md +113 -0
- skilldrop_cli/data/packs/design/skills/marketing-flyer/evals/eval_queries.json +30 -0
- skilldrop_cli/data/packs/design/skills/marketing-flyer/evals/evals.json +18 -0
- skilldrop_cli/data/packs/design/skills/marketing-flyer/evals/files/1/brand/brand.json +80 -0
- skilldrop_cli/data/packs/design/skills/marketing-flyer/evals/files/1/brand/logo-white.png +0 -0
- skilldrop_cli/data/packs/design/skills/marketing-flyer/evals/files/1/brand/logo.png +0 -0
- skilldrop_cli/data/packs/design/skills/marketing-flyer/evals/files/1/brand/mark.png +0 -0
- skilldrop_cli/data/packs/design/skills/marketing-flyer/examples/community-health-fair.md +68 -0
- skilldrop_cli/data/packs/design/skills/marketing-flyer/manifest.json +40 -0
- skilldrop_cli/data/packs/design/skills/marketing-flyer/reference.md +54 -0
- skilldrop_cli/data/packs/design/skills/marketing-flyer/scripts/build_flyer.py +323 -0
- skilldrop_cli/data/packs/design/skills/marketing-flyer/templates/flyer-spec.json +26 -0
- skilldrop_cli/data/packs/design/skills/slide-outliner/SKILL.md +58 -0
- skilldrop_cli/data/packs/design/skills/slide-outliner/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/design/skills/slide-outliner/evals/evals.json +16 -0
- skilldrop_cli/data/packs/design/skills/slide-outliner/manifest.json +11 -0
- skilldrop_cli/data/packs/design/skills/slide-outliner/templates/deck-outline.md +131 -0
- skilldrop_cli/data/packs/dev-team/loops/build/LOOP.md +80 -0
- skilldrop_cli/data/packs/dev-team/loops/build/evals/eval_queries.json +30 -0
- skilldrop_cli/data/packs/dev-team/loops/build/evals/evals.json +27 -0
- skilldrop_cli/data/packs/dev-team/loops/build/loop.json +48 -0
- skilldrop_cli/data/packs/dev-team/loops/release/LOOP.md +91 -0
- skilldrop_cli/data/packs/dev-team/loops/release/loop.json +47 -0
- skilldrop_cli/data/packs/dev-team/pack.json +56 -0
- skilldrop_cli/data/packs/dev-team/skills/accessibility-audit/SKILL.md +74 -0
- skilldrop_cli/data/packs/dev-team/skills/accessibility-audit/evals/eval_queries.json +30 -0
- skilldrop_cli/data/packs/dev-team/skills/accessibility-audit/evals/evals.json +19 -0
- skilldrop_cli/data/packs/dev-team/skills/accessibility-audit/examples/login-form.md +76 -0
- skilldrop_cli/data/packs/dev-team/skills/accessibility-audit/manifest.json +11 -0
- skilldrop_cli/data/packs/dev-team/skills/accessibility-audit/reference.md +69 -0
- skilldrop_cli/data/packs/dev-team/skills/agents-md-generator/SKILL.md +82 -0
- skilldrop_cli/data/packs/dev-team/skills/agents-md-generator/evals/eval_queries.json +15 -0
- skilldrop_cli/data/packs/dev-team/skills/agents-md-generator/evals/evals.json +50 -0
- skilldrop_cli/data/packs/dev-team/skills/agents-md-generator/evals/files/1/Makefile +5 -0
- skilldrop_cli/data/packs/dev-team/skills/agents-md-generator/evals/files/1/alembic/versions/0001_create_bookings.py +10 -0
- skilldrop_cli/data/packs/dev-team/skills/agents-md-generator/evals/files/1/booking/__init__.py +0 -0
- skilldrop_cli/data/packs/dev-team/skills/agents-md-generator/evals/files/1/booking/app.py +8 -0
- skilldrop_cli/data/packs/dev-team/skills/agents-md-generator/evals/files/1/pyproject.toml +11 -0
- skilldrop_cli/data/packs/dev-team/skills/agents-md-generator/evals/files/1/tests/test_health.py +5 -0
- skilldrop_cli/data/packs/dev-team/skills/agents-md-generator/evals/files/2/AGENTS.md +3 -0
- skilldrop_cli/data/packs/dev-team/skills/agents-md-generator/evals/files/2/package.json +12 -0
- skilldrop_cli/data/packs/dev-team/skills/agents-md-generator/evals/files/2/src/index.ts +1 -0
- skilldrop_cli/data/packs/dev-team/skills/agents-md-generator/manifest.json +11 -0
- skilldrop_cli/data/packs/dev-team/skills/agents-md-generator/reference.md +89 -0
- skilldrop_cli/data/packs/dev-team/skills/agents-md-generator/templates/agents-md.md +48 -0
- skilldrop_cli/data/packs/dev-team/skills/bug-triage/SKILL.md +67 -0
- skilldrop_cli/data/packs/dev-team/skills/bug-triage/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/dev-team/skills/bug-triage/evals/evals.json +17 -0
- skilldrop_cli/data/packs/dev-team/skills/bug-triage/manifest.json +14 -0
- skilldrop_cli/data/packs/dev-team/skills/bug-triage/templates/bug-ticket.md +86 -0
- skilldrop_cli/data/packs/dev-team/skills/contribution-wizard/SKILL.md +134 -0
- skilldrop_cli/data/packs/dev-team/skills/contribution-wizard/evals/eval_queries.json +30 -0
- skilldrop_cli/data/packs/dev-team/skills/contribution-wizard/evals/evals.json +19 -0
- skilldrop_cli/data/packs/dev-team/skills/contribution-wizard/manifest.json +11 -0
- skilldrop_cli/data/packs/dev-team/skills/devils-advocate/SKILL.md +143 -0
- skilldrop_cli/data/packs/dev-team/skills/devils-advocate/evals/eval_queries.json +38 -0
- skilldrop_cli/data/packs/dev-team/skills/devils-advocate/evals/evals.json +19 -0
- skilldrop_cli/data/packs/dev-team/skills/devils-advocate/examples/rate-limiter-review.md +46 -0
- skilldrop_cli/data/packs/dev-team/skills/devils-advocate/lenses/adversarial-review.md +88 -0
- skilldrop_cli/data/packs/dev-team/skills/devils-advocate/lenses/edge-cases.md +95 -0
- skilldrop_cli/data/packs/dev-team/skills/devils-advocate/lenses/future-proofing.md +75 -0
- skilldrop_cli/data/packs/dev-team/skills/devils-advocate/lenses/test-coverage.md +90 -0
- skilldrop_cli/data/packs/dev-team/skills/devils-advocate/manifest.json +14 -0
- skilldrop_cli/data/packs/dev-team/skills/devils-advocate/templates/challenge.md +118 -0
- skilldrop_cli/data/packs/dev-team/skills/feature-implement-loop/SKILL.md +88 -0
- skilldrop_cli/data/packs/dev-team/skills/feature-implement-loop/evals/eval_queries.json +30 -0
- skilldrop_cli/data/packs/dev-team/skills/feature-implement-loop/evals/evals.json +19 -0
- skilldrop_cli/data/packs/dev-team/skills/feature-implement-loop/manifest.json +14 -0
- skilldrop_cli/data/packs/dev-team/skills/launch-readiness/SKILL.md +95 -0
- skilldrop_cli/data/packs/dev-team/skills/launch-readiness/evals/eval_queries.json +10 -0
- skilldrop_cli/data/packs/dev-team/skills/launch-readiness/evals/evals.json +19 -0
- skilldrop_cli/data/packs/dev-team/skills/launch-readiness/examples/schema-change-revise.md +54 -0
- skilldrop_cli/data/packs/dev-team/skills/launch-readiness/manifest.json +24 -0
- skilldrop_cli/data/packs/dev-team/skills/launch-readiness/templates/readiness-report.md +41 -0
- skilldrop_cli/data/packs/dev-team/skills/migration-plan/SKILL.md +68 -0
- skilldrop_cli/data/packs/dev-team/skills/migration-plan/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/dev-team/skills/migration-plan/evals/evals.json +16 -0
- skilldrop_cli/data/packs/dev-team/skills/migration-plan/manifest.json +11 -0
- skilldrop_cli/data/packs/dev-team/skills/migration-plan/templates/migration-plan.md +68 -0
- skilldrop_cli/data/packs/dev-team/skills/pre-merge-review/SKILL.md +85 -0
- skilldrop_cli/data/packs/dev-team/skills/pre-merge-review/evals/eval_queries.json +11 -0
- skilldrop_cli/data/packs/dev-team/skills/pre-merge-review/evals/evals.json +26 -0
- skilldrop_cli/data/packs/dev-team/skills/pre-merge-review/examples/pre-merge-verdict.md +43 -0
- skilldrop_cli/data/packs/dev-team/skills/pre-merge-review/manifest.json +15 -0
- skilldrop_cli/data/packs/dev-team/skills/pre-merge-review/scripts/gate.py +189 -0
- skilldrop_cli/data/packs/dev-team/skills/release-notes/SKILL.md +61 -0
- skilldrop_cli/data/packs/dev-team/skills/release-notes/evals/eval_queries.json +30 -0
- skilldrop_cli/data/packs/dev-team/skills/release-notes/evals/evals.json +19 -0
- skilldrop_cli/data/packs/dev-team/skills/release-notes/manifest.json +11 -0
- skilldrop_cli/data/packs/dev-team/skills/release-notes/templates/release-notes.md +83 -0
- skilldrop_cli/data/packs/dev-team/skills/sonar-onboard/SKILL.md +170 -0
- skilldrop_cli/data/packs/dev-team/skills/sonar-onboard/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/dev-team/skills/sonar-onboard/evals/evals.json +16 -0
- skilldrop_cli/data/packs/dev-team/skills/sonar-onboard/manifest.json +11 -0
- skilldrop_cli/data/packs/dev-team/skills/sonar-onboard/reference.md +151 -0
- skilldrop_cli/data/packs/dev-team/skills/sonar-onboard/templates/github-actions-sonar-server.yml.tmpl +50 -0
- skilldrop_cli/data/packs/dev-team/skills/sonar-onboard/templates/github-actions-sonarcloud.yml.tmpl +53 -0
- skilldrop_cli/data/packs/dev-team/skills/sonar-onboard/templates/readme-snippet.md +38 -0
- skilldrop_cli/data/packs/dev-team/skills/sonar-onboard/templates/sonar-project.properties.tmpl +31 -0
- skilldrop_cli/data/packs/dev-team/skills/sonar-review/SKILL.md +220 -0
- skilldrop_cli/data/packs/dev-team/skills/sonar-review/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/dev-team/skills/sonar-review/evals/evals.json +16 -0
- skilldrop_cli/data/packs/dev-team/skills/sonar-review/lenses/bugs.md +48 -0
- skilldrop_cli/data/packs/dev-team/skills/sonar-review/lenses/code-smells.md +64 -0
- skilldrop_cli/data/packs/dev-team/skills/sonar-review/lenses/coverage-and-duplication.md +74 -0
- skilldrop_cli/data/packs/dev-team/skills/sonar-review/lenses/security-hotspots.md +56 -0
- skilldrop_cli/data/packs/dev-team/skills/sonar-review/lenses/vulnerabilities.md +52 -0
- skilldrop_cli/data/packs/dev-team/skills/sonar-review/manifest.json +37 -0
- skilldrop_cli/data/packs/dev-team/skills/sonar-review/reference.md +167 -0
- skilldrop_cli/data/packs/dev-team/skills/sonar-review/templates/report.md +84 -0
- skilldrop_cli/data/packs/dev-team/skills/test-plan-generator/SKILL.md +59 -0
- skilldrop_cli/data/packs/dev-team/skills/test-plan-generator/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/dev-team/skills/test-plan-generator/evals/evals.json +16 -0
- skilldrop_cli/data/packs/dev-team/skills/test-plan-generator/manifest.json +11 -0
- skilldrop_cli/data/packs/dev-team/skills/test-plan-generator/templates/test-plan.md +83 -0
- skilldrop_cli/data/packs/dev-team/skills/user-story-splitter/SKILL.md +88 -0
- skilldrop_cli/data/packs/dev-team/skills/user-story-splitter/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/dev-team/skills/user-story-splitter/evals/evals.json +16 -0
- skilldrop_cli/data/packs/dev-team/skills/user-story-splitter/examples/notifications-epic.md +123 -0
- skilldrop_cli/data/packs/dev-team/skills/user-story-splitter/manifest.json +14 -0
- skilldrop_cli/data/packs/dev-team/skills/user-story-splitter/templates/story.md +40 -0
- skilldrop_cli/data/packs/experience-design/pack.json +68 -0
- skilldrop_cli/data/packs/experience-design/skills/content-design/SKILL.md +77 -0
- skilldrop_cli/data/packs/experience-design/skills/content-design/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/experience-design/skills/content-design/evals/evals.json +18 -0
- skilldrop_cli/data/packs/experience-design/skills/content-design/examples/parking-permit-page.md +102 -0
- skilldrop_cli/data/packs/experience-design/skills/content-design/manifest.json +41 -0
- skilldrop_cli/data/packs/experience-design/skills/content-design/scripts/readability.py +115 -0
- skilldrop_cli/data/packs/experience-design/skills/content-design/templates/content-spec.md +45 -0
- skilldrop_cli/data/packs/experience-design/skills/design-system-spec/SKILL.md +79 -0
- skilldrop_cli/data/packs/experience-design/skills/design-system-spec/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/experience-design/skills/design-system-spec/evals/evals.json +19 -0
- skilldrop_cli/data/packs/experience-design/skills/design-system-spec/examples/text-field-spec.md +121 -0
- skilldrop_cli/data/packs/experience-design/skills/design-system-spec/manifest.json +46 -0
- skilldrop_cli/data/packs/experience-design/skills/design-system-spec/reference.md +66 -0
- skilldrop_cli/data/packs/experience-design/skills/design-system-spec/templates/component-spec.md +74 -0
- skilldrop_cli/data/packs/experience-design/skills/information-architecture/SKILL.md +76 -0
- skilldrop_cli/data/packs/experience-design/skills/information-architecture/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/experience-design/skills/information-architecture/evals/evals.json +19 -0
- skilldrop_cli/data/packs/experience-design/skills/information-architecture/examples/payroll-app-nav.md +127 -0
- skilldrop_cli/data/packs/experience-design/skills/information-architecture/manifest.json +46 -0
- skilldrop_cli/data/packs/experience-design/skills/information-architecture/reference.md +54 -0
- skilldrop_cli/data/packs/experience-design/skills/information-architecture/templates/ia-spec.md +77 -0
- skilldrop_cli/data/packs/experience-design/skills/service-blueprint/SKILL.md +76 -0
- skilldrop_cli/data/packs/experience-design/skills/service-blueprint/evals/eval_queries.json +30 -0
- skilldrop_cli/data/packs/experience-design/skills/service-blueprint/evals/evals.json +19 -0
- skilldrop_cli/data/packs/experience-design/skills/service-blueprint/examples/insurance-claim-blueprint.md +107 -0
- skilldrop_cli/data/packs/experience-design/skills/service-blueprint/manifest.json +45 -0
- skilldrop_cli/data/packs/experience-design/skills/service-blueprint/templates/blueprint.md +72 -0
- skilldrop_cli/data/packs/experience-design/skills/ux-writing/SKILL.md +77 -0
- skilldrop_cli/data/packs/experience-design/skills/ux-writing/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/experience-design/skills/ux-writing/evals/evals.json +19 -0
- skilldrop_cli/data/packs/experience-design/skills/ux-writing/examples/team-invite-flow.md +66 -0
- skilldrop_cli/data/packs/experience-design/skills/ux-writing/manifest.json +41 -0
- skilldrop_cli/data/packs/experience-design/skills/ux-writing/templates/string-table.md +22 -0
- skilldrop_cli/data/packs/grc/pack.json +57 -0
- skilldrop_cli/data/packs/grc/skills/dpia/SKILL.md +123 -0
- skilldrop_cli/data/packs/grc/skills/dpia/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/grc/skills/dpia/evals/evals.json +19 -0
- skilldrop_cli/data/packs/grc/skills/dpia/examples/acme-warehouse-performance.md +159 -0
- skilldrop_cli/data/packs/grc/skills/dpia/manifest.json +47 -0
- skilldrop_cli/data/packs/grc/skills/dpia/reference.md +118 -0
- skilldrop_cli/data/packs/grc/skills/dpia/templates/dpia.md +103 -0
- skilldrop_cli/data/packs/grc/skills/risk-register/SKILL.md +139 -0
- skilldrop_cli/data/packs/grc/skills/risk-register/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/grc/skills/risk-register/evals/evals.json +19 -0
- skilldrop_cli/data/packs/grc/skills/risk-register/examples/northwind-register.csv +9 -0
- skilldrop_cli/data/packs/grc/skills/risk-register/examples/northwind-register.md +127 -0
- skilldrop_cli/data/packs/grc/skills/risk-register/manifest.json +43 -0
- skilldrop_cli/data/packs/grc/skills/risk-register/reference.md +99 -0
- skilldrop_cli/data/packs/grc/skills/risk-register/scripts/check_register.py +338 -0
- skilldrop_cli/data/packs/grc/skills/risk-register/templates/risk-register.csv +2 -0
- skilldrop_cli/data/packs/grc/skills/soc2-evidence-map/SKILL.md +117 -0
- skilldrop_cli/data/packs/grc/skills/soc2-evidence-map/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/grc/skills/soc2-evidence-map/evals/evals.json +19 -0
- skilldrop_cli/data/packs/grc/skills/soc2-evidence-map/examples/northwind-evidence-map.csv +17 -0
- skilldrop_cli/data/packs/grc/skills/soc2-evidence-map/examples/northwind-type2-security.md +127 -0
- skilldrop_cli/data/packs/grc/skills/soc2-evidence-map/manifest.json +41 -0
- skilldrop_cli/data/packs/grc/skills/soc2-evidence-map/reference.md +156 -0
- skilldrop_cli/data/packs/grc/skills/soc2-evidence-map/templates/evidence-map.csv +2 -0
- skilldrop_cli/data/packs/infra-as-code/pack.json +51 -0
- skilldrop_cli/data/packs/infra-as-code/skills/terraform-module/SKILL.md +85 -0
- skilldrop_cli/data/packs/infra-as-code/skills/terraform-module/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/infra-as-code/skills/terraform-module/evals/evals.json +31 -0
- skilldrop_cli/data/packs/infra-as-code/skills/terraform-module/examples/s3-log-bucket/README.md +71 -0
- skilldrop_cli/data/packs/infra-as-code/skills/terraform-module/examples/s3-log-bucket/examples/basic/main.tf +30 -0
- skilldrop_cli/data/packs/infra-as-code/skills/terraform-module/examples/s3-log-bucket/main.tf +153 -0
- skilldrop_cli/data/packs/infra-as-code/skills/terraform-module/examples/s3-log-bucket/outputs.tf +14 -0
- skilldrop_cli/data/packs/infra-as-code/skills/terraform-module/examples/s3-log-bucket/variables.tf +71 -0
- skilldrop_cli/data/packs/infra-as-code/skills/terraform-module/examples/s3-log-bucket/versions.tf +10 -0
- skilldrop_cli/data/packs/infra-as-code/skills/terraform-module/examples/s3-log-bucket.md +50 -0
- skilldrop_cli/data/packs/infra-as-code/skills/terraform-module/manifest.json +41 -0
- skilldrop_cli/data/packs/infra-as-code/skills/terraform-module/reference.md +105 -0
- skilldrop_cli/data/packs/infra-as-code/skills/terraform-module/templates/module-readme.md +55 -0
- skilldrop_cli/data/packs/infra-as-code/skills/terraform-plan-review/SKILL.md +87 -0
- skilldrop_cli/data/packs/infra-as-code/skills/terraform-plan-review/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/infra-as-code/skills/terraform-plan-review/evals/evals.json +30 -0
- skilldrop_cli/data/packs/infra-as-code/skills/terraform-plan-review/evals/files/2/plan.json +133 -0
- skilldrop_cli/data/packs/infra-as-code/skills/terraform-plan-review/examples/northwind-orders-plan.json +174 -0
- skilldrop_cli/data/packs/infra-as-code/skills/terraform-plan-review/examples/northwind-orders.md +87 -0
- skilldrop_cli/data/packs/infra-as-code/skills/terraform-plan-review/manifest.json +48 -0
- skilldrop_cli/data/packs/infra-as-code/skills/terraform-plan-review/reference.md +77 -0
- skilldrop_cli/data/packs/infra-as-code/skills/terraform-plan-review/scripts/plan_summary.py +361 -0
- skilldrop_cli/data/packs/product-manager/loops/discover/LOOP.md +81 -0
- skilldrop_cli/data/packs/product-manager/loops/discover/evals/eval_queries.json +30 -0
- skilldrop_cli/data/packs/product-manager/loops/discover/evals/evals.json +26 -0
- skilldrop_cli/data/packs/product-manager/loops/discover/loop.json +41 -0
- skilldrop_cli/data/packs/product-manager/pack.json +61 -0
- skilldrop_cli/data/packs/product-manager/skills/business-case/SKILL.md +64 -0
- skilldrop_cli/data/packs/product-manager/skills/business-case/evals/eval_queries.json +30 -0
- skilldrop_cli/data/packs/product-manager/skills/business-case/evals/evals.json +19 -0
- skilldrop_cli/data/packs/product-manager/skills/business-case/examples/build-vs-buy-flags.md +42 -0
- skilldrop_cli/data/packs/product-manager/skills/business-case/manifest.json +11 -0
- skilldrop_cli/data/packs/product-manager/skills/business-case/templates/business-case.md +60 -0
- skilldrop_cli/data/packs/product-manager/skills/okr-cascade/SKILL.md +59 -0
- skilldrop_cli/data/packs/product-manager/skills/okr-cascade/evals/eval_queries.json +12 -0
- skilldrop_cli/data/packs/product-manager/skills/okr-cascade/evals/evals.json +28 -0
- skilldrop_cli/data/packs/product-manager/skills/okr-cascade/manifest.json +11 -0
- skilldrop_cli/data/packs/product-manager/skills/okr-cascade/templates/okr-cascade.md +46 -0
- skilldrop_cli/data/packs/product-manager/skills/prd-draft/SKILL.md +62 -0
- skilldrop_cli/data/packs/product-manager/skills/prd-draft/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/product-manager/skills/prd-draft/evals/evals.json +17 -0
- skilldrop_cli/data/packs/product-manager/skills/prd-draft/manifest.json +16 -0
- skilldrop_cli/data/packs/product-manager/skills/prd-draft/templates/prd.md +66 -0
- skilldrop_cli/data/packs/product-manager/skills/prfaq/SKILL.md +76 -0
- skilldrop_cli/data/packs/product-manager/skills/prfaq/evals/eval_queries.json +13 -0
- skilldrop_cli/data/packs/product-manager/skills/prfaq/evals/evals.json +32 -0
- skilldrop_cli/data/packs/product-manager/skills/prfaq/manifest.json +11 -0
- skilldrop_cli/data/packs/product-manager/skills/prfaq/templates/prfaq.md +60 -0
- skilldrop_cli/data/packs/product-manager/skills/requirements-interview/SKILL.md +61 -0
- skilldrop_cli/data/packs/product-manager/skills/requirements-interview/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/product-manager/skills/requirements-interview/evals/evals.json +16 -0
- skilldrop_cli/data/packs/product-manager/skills/requirements-interview/manifest.json +14 -0
- skilldrop_cli/data/packs/product-manager/skills/requirements-interview/templates/interview-kit.md +63 -0
- skilldrop_cli/data/packs/product-manager/skills/strategy-analysis/SKILL.md +63 -0
- skilldrop_cli/data/packs/product-manager/skills/strategy-analysis/evals/eval_queries.json +13 -0
- skilldrop_cli/data/packs/product-manager/skills/strategy-analysis/evals/evals.json +36 -0
- skilldrop_cli/data/packs/product-manager/skills/strategy-analysis/examples/market-entry-tows.md +42 -0
- skilldrop_cli/data/packs/product-manager/skills/strategy-analysis/manifest.json +15 -0
- skilldrop_cli/data/packs/product-manager/skills/success-metrics/SKILL.md +65 -0
- skilldrop_cli/data/packs/product-manager/skills/success-metrics/evals/eval_queries.json +11 -0
- skilldrop_cli/data/packs/product-manager/skills/success-metrics/evals/evals.json +27 -0
- skilldrop_cli/data/packs/product-manager/skills/success-metrics/manifest.json +11 -0
- skilldrop_cli/data/packs/product-manager/skills/success-metrics/templates/metrics-plan.md +55 -0
- skilldrop_cli/data/packs/product-manager/skills/user-journey-map/SKILL.md +65 -0
- skilldrop_cli/data/packs/product-manager/skills/user-journey-map/evals/eval_queries.json +12 -0
- skilldrop_cli/data/packs/product-manager/skills/user-journey-map/evals/evals.json +30 -0
- skilldrop_cli/data/packs/product-manager/skills/user-journey-map/examples/b2b-saas-onboarding.md +69 -0
- skilldrop_cli/data/packs/product-manager/skills/user-journey-map/manifest.json +15 -0
- skilldrop_cli/data/packs/product-manager/skills/user-journey-map/templates/journey-map.md +47 -0
- skilldrop_cli/data/packs/research/pack.json +52 -0
- skilldrop_cli/data/packs/research/skills/hypothesis-comparison/SKILL.md +131 -0
- skilldrop_cli/data/packs/research/skills/hypothesis-comparison/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/research/skills/hypothesis-comparison/evals/evals.json +19 -0
- skilldrop_cli/data/packs/research/skills/hypothesis-comparison/examples/conversion-drop.md +132 -0
- skilldrop_cli/data/packs/research/skills/hypothesis-comparison/manifest.json +43 -0
- skilldrop_cli/data/packs/research/skills/hypothesis-comparison/reference.md +107 -0
- skilldrop_cli/data/packs/research/skills/hypothesis-comparison/scripts/ach_matrix.py +204 -0
- skilldrop_cli/data/packs/research/skills/hypothesis-comparison/templates/hypothesis-comparison.md +61 -0
- skilldrop_cli/data/packs/research/skills/hypothesis-comparison/templates/matrix.csv +4 -0
- skilldrop_cli/data/packs/research/skills/research-plan/SKILL.md +122 -0
- skilldrop_cli/data/packs/research/skills/research-plan/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/research/skills/research-plan/evals/evals.json +28 -0
- skilldrop_cli/data/packs/research/skills/research-plan/examples/four-day-week-plan.md +97 -0
- skilldrop_cli/data/packs/research/skills/research-plan/manifest.json +47 -0
- skilldrop_cli/data/packs/research/skills/research-plan/reference.md +88 -0
- skilldrop_cli/data/packs/research/skills/research-plan/templates/research-plan.md +54 -0
- skilldrop_cli/data/packs/research/skills/source-synthesis/SKILL.md +123 -0
- skilldrop_cli/data/packs/research/skills/source-synthesis/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/research/skills/source-synthesis/evals/evals.json +19 -0
- skilldrop_cli/data/packs/research/skills/source-synthesis/examples/four-day-week.md +146 -0
- skilldrop_cli/data/packs/research/skills/source-synthesis/manifest.json +42 -0
- skilldrop_cli/data/packs/research/skills/source-synthesis/reference.md +92 -0
- skilldrop_cli/data/packs/research/skills/source-synthesis/scripts/citations.py +314 -0
- skilldrop_cli/data/packs/research/skills/source-synthesis/templates/synthesis.md +46 -0
- skilldrop_cli/data/packs/skill-engineering/pack.json +46 -0
- skilldrop_cli/data/packs/skill-engineering/skills/skill-author/SKILL.md +139 -0
- skilldrop_cli/data/packs/skill-engineering/skills/skill-author/evals/eval_queries.json +10 -0
- skilldrop_cli/data/packs/skill-engineering/skills/skill-author/evals/evals.json +19 -0
- skilldrop_cli/data/packs/skill-engineering/skills/skill-author/examples/release-notes-skill.md +185 -0
- skilldrop_cli/data/packs/skill-engineering/skills/skill-author/manifest.json +42 -0
- skilldrop_cli/data/packs/skill-engineering/skills/skill-author/reference.md +144 -0
- skilldrop_cli/data/packs/skill-engineering/skills/skill-author/templates/eval_queries.json +9 -0
- skilldrop_cli/data/packs/skill-engineering/skills/skill-author/templates/evals.json +16 -0
- skilldrop_cli/data/packs/skill-engineering/skills/skill-author/templates/skill-template.md +52 -0
- skilldrop_cli/data/packs/skill-engineering/skills/skill-review/SKILL.md +131 -0
- skilldrop_cli/data/packs/skill-engineering/skills/skill-review/evals/eval_queries.json +11 -0
- skilldrop_cli/data/packs/skill-engineering/skills/skill-review/evals/evals.json +19 -0
- skilldrop_cli/data/packs/skill-engineering/skills/skill-review/evals/files/1/skills/changelog-writer/SKILL.md +10 -0
- skilldrop_cli/data/packs/skill-engineering/skills/skill-review/evals/files/1/skills/pr-summary/SKILL.md +12 -0
- skilldrop_cli/data/packs/skill-engineering/skills/skill-review/evals/files/1/skills/pr-summary/references/tone.md +3 -0
- skilldrop_cli/data/packs/skill-engineering/skills/skill-review/evals/files/1/skills/pr-summary/scripts/collect.py +6 -0
- skilldrop_cli/data/packs/skill-engineering/skills/skill-review/examples/meeting-notes-review.md +147 -0
- skilldrop_cli/data/packs/skill-engineering/skills/skill-review/manifest.json +50 -0
- skilldrop_cli/data/packs/skill-engineering/skills/skill-review/reference.md +135 -0
- skilldrop_cli/data/packs/skill-engineering/skills/skill-review/scripts/lint_skill.py +481 -0
- skilldrop_cli/data/packs/skill-engineering/skills/skill-review/templates/review.md +43 -0
- skilldrop_cli/data/packs/solution-architect/loops/design/LOOP.md +83 -0
- skilldrop_cli/data/packs/solution-architect/loops/design/evals/eval_queries.json +30 -0
- skilldrop_cli/data/packs/solution-architect/loops/design/evals/evals.json +26 -0
- skilldrop_cli/data/packs/solution-architect/loops/design/loop.json +47 -0
- skilldrop_cli/data/packs/solution-architect/pack.json +65 -0
- skilldrop_cli/data/packs/solution-architect/skills/adr-generator/SKILL.md +50 -0
- skilldrop_cli/data/packs/solution-architect/skills/adr-generator/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/solution-architect/skills/adr-generator/evals/evals.json +17 -0
- skilldrop_cli/data/packs/solution-architect/skills/adr-generator/manifest.json +11 -0
- skilldrop_cli/data/packs/solution-architect/skills/adr-generator/templates/madr.md +56 -0
- skilldrop_cli/data/packs/solution-architect/skills/adr-generator/templates/nygard.md +19 -0
- skilldrop_cli/data/packs/solution-architect/skills/api-contract-draft/SKILL.md +69 -0
- skilldrop_cli/data/packs/solution-architect/skills/api-contract-draft/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/solution-architect/skills/api-contract-draft/evals/evals.json +18 -0
- skilldrop_cli/data/packs/solution-architect/skills/api-contract-draft/manifest.json +11 -0
- skilldrop_cli/data/packs/solution-architect/skills/api-contract-draft/reference.md +73 -0
- skilldrop_cli/data/packs/solution-architect/skills/api-contract-draft/templates/openapi-skeleton.yaml +148 -0
- skilldrop_cli/data/packs/solution-architect/skills/architecture-diagrams/SKILL.md +66 -0
- skilldrop_cli/data/packs/solution-architect/skills/architecture-diagrams/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/solution-architect/skills/architecture-diagrams/evals/evals.json +16 -0
- skilldrop_cli/data/packs/solution-architect/skills/architecture-diagrams/examples/aws-three-tier.md +44 -0
- skilldrop_cli/data/packs/solution-architect/skills/architecture-diagrams/examples/c4-container-saas.md +51 -0
- skilldrop_cli/data/packs/solution-architect/skills/architecture-diagrams/examples/microservices-sequence.md +49 -0
- skilldrop_cli/data/packs/solution-architect/skills/architecture-diagrams/manifest.json +31 -0
- skilldrop_cli/data/packs/solution-architect/skills/architecture-diagrams/templates/c4-container.puml +31 -0
- skilldrop_cli/data/packs/solution-architect/skills/architecture-diagrams/templates/mermaid-aws.md +52 -0
- skilldrop_cli/data/packs/solution-architect/skills/architecture-diagrams/templates/mermaid-flowchart.md +37 -0
- skilldrop_cli/data/packs/solution-architect/skills/architecture-diagrams/templates/mermaid-sequence.md +39 -0
- skilldrop_cli/data/packs/solution-architect/skills/data-contract/SKILL.md +67 -0
- skilldrop_cli/data/packs/solution-architect/skills/data-contract/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/solution-architect/skills/data-contract/evals/evals.json +16 -0
- skilldrop_cli/data/packs/solution-architect/skills/data-contract/manifest.json +11 -0
- skilldrop_cli/data/packs/solution-architect/skills/data-contract/reference.md +46 -0
- skilldrop_cli/data/packs/solution-architect/skills/data-contract/templates/data-contract.md +69 -0
- skilldrop_cli/data/packs/solution-architect/skills/db-schema-design/SKILL.md +68 -0
- skilldrop_cli/data/packs/solution-architect/skills/db-schema-design/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/solution-architect/skills/db-schema-design/evals/evals.json +16 -0
- skilldrop_cli/data/packs/solution-architect/skills/db-schema-design/manifest.json +11 -0
- skilldrop_cli/data/packs/solution-architect/skills/db-schema-design/reference.md +56 -0
- skilldrop_cli/data/packs/solution-architect/skills/db-schema-design/templates/schema-design.md +75 -0
- skilldrop_cli/data/packs/solution-architect/skills/design-doc/SKILL.md +49 -0
- skilldrop_cli/data/packs/solution-architect/skills/design-doc/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/solution-architect/skills/design-doc/evals/evals.json +17 -0
- skilldrop_cli/data/packs/solution-architect/skills/design-doc/manifest.json +14 -0
- skilldrop_cli/data/packs/solution-architect/skills/design-doc/templates/design-doc.md +98 -0
- skilldrop_cli/data/packs/solution-architect/skills/figma-diagrams/SKILL.md +87 -0
- skilldrop_cli/data/packs/solution-architect/skills/figma-diagrams/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/solution-architect/skills/figma-diagrams/evals/evals.json +15 -0
- skilldrop_cli/data/packs/solution-architect/skills/figma-diagrams/manifest.json +36 -0
- skilldrop_cli/data/packs/solution-architect/skills/figma-diagrams/reference.md +91 -0
- skilldrop_cli/data/packs/solution-architect/skills/figma-diagrams/requirements.txt +3 -0
- skilldrop_cli/data/packs/solution-architect/skills/figma-diagrams/scripts/_figma_client.py +71 -0
- skilldrop_cli/data/packs/solution-architect/skills/figma-diagrams/scripts/frame_to_mermaid.py +102 -0
- skilldrop_cli/data/packs/solution-architect/skills/figma-diagrams/scripts/inspect_file.py +46 -0
- skilldrop_cli/data/packs/solution-architect/skills/figma-diagrams/scripts/list_comments.py +35 -0
- skilldrop_cli/data/packs/solution-architect/skills/figma-diagrams/scripts/post_comment.py +52 -0
- skilldrop_cli/data/packs/solution-architect/skills/figma-diagrams/templates/figjam-import.json +20 -0
- skilldrop_cli/data/packs/solution-architect/skills/nfr-spec/SKILL.md +63 -0
- skilldrop_cli/data/packs/solution-architect/skills/nfr-spec/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/solution-architect/skills/nfr-spec/evals/evals.json +16 -0
- skilldrop_cli/data/packs/solution-architect/skills/nfr-spec/manifest.json +16 -0
- skilldrop_cli/data/packs/solution-architect/skills/nfr-spec/reference.md +74 -0
- skilldrop_cli/data/packs/solution-architect/skills/nfr-spec/templates/nfr-spec.md +56 -0
- skilldrop_cli/data/packs/solution-architect/skills/reverse-architecture/SKILL.md +103 -0
- skilldrop_cli/data/packs/solution-architect/skills/reverse-architecture/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/solution-architect/skills/reverse-architecture/evals/evals.json +16 -0
- skilldrop_cli/data/packs/solution-architect/skills/reverse-architecture/manifest.json +11 -0
- skilldrop_cli/data/packs/solution-architect/skills/reverse-architecture/reference.md +150 -0
- skilldrop_cli/data/packs/solution-architect/skills/reverse-architecture/templates/description.md +52 -0
- skilldrop_cli/data/packs/solution-architect/skills/reverse-architecture/templates/extraction.md +55 -0
- skilldrop_cli/data/packs/solution-architect/skills/tech-comparison-matrix/SKILL.md +56 -0
- skilldrop_cli/data/packs/solution-architect/skills/tech-comparison-matrix/evals/eval_queries.json +30 -0
- skilldrop_cli/data/packs/solution-architect/skills/tech-comparison-matrix/evals/evals.json +18 -0
- skilldrop_cli/data/packs/solution-architect/skills/tech-comparison-matrix/examples/queue-selection.md +41 -0
- skilldrop_cli/data/packs/solution-architect/skills/tech-comparison-matrix/manifest.json +11 -0
- skilldrop_cli/data/packs/solution-architect/skills/tech-comparison-matrix/templates/matrix.md +45 -0
- skilldrop_cli/data/packs/solution-architect/skills/threat-model/SKILL.md +65 -0
- skilldrop_cli/data/packs/solution-architect/skills/threat-model/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/solution-architect/skills/threat-model/evals/evals.json +18 -0
- skilldrop_cli/data/packs/solution-architect/skills/threat-model/examples/document-upload.md +56 -0
- skilldrop_cli/data/packs/solution-architect/skills/threat-model/manifest.json +11 -0
- skilldrop_cli/data/packs/solution-architect/skills/threat-model/reference.md +69 -0
- skilldrop_cli/data/packs/sre-oncall/loops/operate/LOOP.md +84 -0
- skilldrop_cli/data/packs/sre-oncall/loops/operate/evals/eval_queries.json +30 -0
- skilldrop_cli/data/packs/sre-oncall/loops/operate/evals/evals.json +25 -0
- skilldrop_cli/data/packs/sre-oncall/loops/operate/loop.json +41 -0
- skilldrop_cli/data/packs/sre-oncall/pack.json +59 -0
- skilldrop_cli/data/packs/sre-oncall/skills/capacity-cost-model/SKILL.md +65 -0
- skilldrop_cli/data/packs/sre-oncall/skills/capacity-cost-model/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/sre-oncall/skills/capacity-cost-model/evals/evals.json +19 -0
- skilldrop_cli/data/packs/sre-oncall/skills/capacity-cost-model/manifest.json +11 -0
- skilldrop_cli/data/packs/sre-oncall/skills/capacity-cost-model/reference.md +54 -0
- skilldrop_cli/data/packs/sre-oncall/skills/capacity-cost-model/templates/cost-model.md +68 -0
- skilldrop_cli/data/packs/sre-oncall/skills/cloud-cost-review/SKILL.md +121 -0
- skilldrop_cli/data/packs/sre-oncall/skills/cloud-cost-review/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/sre-oncall/skills/cloud-cost-review/evals/evals.json +29 -0
- skilldrop_cli/data/packs/sre-oncall/skills/cloud-cost-review/examples/acme-aws-september.md +247 -0
- skilldrop_cli/data/packs/sre-oncall/skills/cloud-cost-review/examples/acme-cur-2026-08-09.csv +1085 -0
- skilldrop_cli/data/packs/sre-oncall/skills/cloud-cost-review/manifest.json +49 -0
- skilldrop_cli/data/packs/sre-oncall/skills/cloud-cost-review/reference.md +100 -0
- skilldrop_cli/data/packs/sre-oncall/skills/cloud-cost-review/scripts/cost_summary.py +630 -0
- skilldrop_cli/data/packs/sre-oncall/skills/cloud-cost-review/templates/cost-review.md +36 -0
- skilldrop_cli/data/packs/sre-oncall/skills/delivery-metrics-report/SKILL.md +114 -0
- skilldrop_cli/data/packs/sre-oncall/skills/delivery-metrics-report/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/sre-oncall/skills/delivery-metrics-report/evals/evals.json +28 -0
- skilldrop_cli/data/packs/sre-oncall/skills/delivery-metrics-report/evals/files/1/deploys.csv +49 -0
- skilldrop_cli/data/packs/sre-oncall/skills/delivery-metrics-report/evals/files/1/incidents.csv +7 -0
- skilldrop_cli/data/packs/sre-oncall/skills/delivery-metrics-report/evals/files/1/prs.csv +84 -0
- skilldrop_cli/data/packs/sre-oncall/skills/delivery-metrics-report/examples/checkout-api-8-weeks.md +123 -0
- skilldrop_cli/data/packs/sre-oncall/skills/delivery-metrics-report/examples/deployments.csv +49 -0
- skilldrop_cli/data/packs/sre-oncall/skills/delivery-metrics-report/examples/incidents.csv +7 -0
- skilldrop_cli/data/packs/sre-oncall/skills/delivery-metrics-report/examples/prs.csv +84 -0
- skilldrop_cli/data/packs/sre-oncall/skills/delivery-metrics-report/manifest.json +48 -0
- skilldrop_cli/data/packs/sre-oncall/skills/delivery-metrics-report/reference.md +83 -0
- skilldrop_cli/data/packs/sre-oncall/skills/delivery-metrics-report/scripts/delivery_metrics.py +566 -0
- skilldrop_cli/data/packs/sre-oncall/skills/delivery-metrics-report/templates/delivery-report.md +31 -0
- skilldrop_cli/data/packs/sre-oncall/skills/incident-comms/SKILL.md +68 -0
- skilldrop_cli/data/packs/sre-oncall/skills/incident-comms/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/sre-oncall/skills/incident-comms/evals/evals.json +16 -0
- skilldrop_cli/data/packs/sre-oncall/skills/incident-comms/manifest.json +14 -0
- skilldrop_cli/data/packs/sre-oncall/skills/incident-comms/reference.md +43 -0
- skilldrop_cli/data/packs/sre-oncall/skills/incident-comms/templates/messages.md +82 -0
- skilldrop_cli/data/packs/sre-oncall/skills/observability-plan/SKILL.md +70 -0
- skilldrop_cli/data/packs/sre-oncall/skills/observability-plan/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/sre-oncall/skills/observability-plan/evals/evals.json +16 -0
- skilldrop_cli/data/packs/sre-oncall/skills/observability-plan/manifest.json +15 -0
- skilldrop_cli/data/packs/sre-oncall/skills/observability-plan/reference.md +67 -0
- skilldrop_cli/data/packs/sre-oncall/skills/observability-plan/templates/observability-plan.md +62 -0
- skilldrop_cli/data/packs/sre-oncall/skills/postmortem-generator/SKILL.md +66 -0
- skilldrop_cli/data/packs/sre-oncall/skills/postmortem-generator/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/sre-oncall/skills/postmortem-generator/evals/evals.json +17 -0
- skilldrop_cli/data/packs/sre-oncall/skills/postmortem-generator/manifest.json +14 -0
- skilldrop_cli/data/packs/sre-oncall/skills/postmortem-generator/templates/postmortem.md +67 -0
- skilldrop_cli/data/packs/sre-oncall/skills/runbook-generator/SKILL.md +42 -0
- skilldrop_cli/data/packs/sre-oncall/skills/runbook-generator/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/sre-oncall/skills/runbook-generator/evals/evals.json +17 -0
- skilldrop_cli/data/packs/sre-oncall/skills/runbook-generator/manifest.json +11 -0
- skilldrop_cli/data/packs/sre-oncall/skills/runbook-generator/templates/runbook.md +109 -0
- skilldrop_cli/data/packs/stakeholder-comms/pack.json +60 -0
- skilldrop_cli/data/packs/stakeholder-comms/skills/audience-profile/SKILL.md +74 -0
- skilldrop_cli/data/packs/stakeholder-comms/skills/audience-profile/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/stakeholder-comms/skills/audience-profile/evals/evals.json +15 -0
- skilldrop_cli/data/packs/stakeholder-comms/skills/audience-profile/manifest.json +11 -0
- skilldrop_cli/data/packs/stakeholder-comms/skills/audience-profile/reference.md +175 -0
- skilldrop_cli/data/packs/stakeholder-comms/skills/decision-log/SKILL.md +68 -0
- skilldrop_cli/data/packs/stakeholder-comms/skills/decision-log/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/stakeholder-comms/skills/decision-log/evals/evals.json +17 -0
- skilldrop_cli/data/packs/stakeholder-comms/skills/decision-log/manifest.json +11 -0
- skilldrop_cli/data/packs/stakeholder-comms/skills/exec-summary/SKILL.md +45 -0
- skilldrop_cli/data/packs/stakeholder-comms/skills/exec-summary/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/stakeholder-comms/skills/exec-summary/evals/evals.json +17 -0
- skilldrop_cli/data/packs/stakeholder-comms/skills/exec-summary/manifest.json +11 -0
- skilldrop_cli/data/packs/stakeholder-comms/skills/exec-summary/templates/exec-summary.md +48 -0
- skilldrop_cli/data/packs/stakeholder-comms/skills/guide-builder/SKILL.md +77 -0
- skilldrop_cli/data/packs/stakeholder-comms/skills/guide-builder/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/stakeholder-comms/skills/guide-builder/evals/evals.json +18 -0
- skilldrop_cli/data/packs/stakeholder-comms/skills/guide-builder/examples/local-setup-guide.md +127 -0
- skilldrop_cli/data/packs/stakeholder-comms/skills/guide-builder/manifest.json +11 -0
- skilldrop_cli/data/packs/stakeholder-comms/skills/guide-builder/templates/api-reference.md +120 -0
- skilldrop_cli/data/packs/stakeholder-comms/skills/guide-builder/templates/design-walkthrough.md +72 -0
- skilldrop_cli/data/packs/stakeholder-comms/skills/guide-builder/templates/setup-guide.md +109 -0
- skilldrop_cli/data/packs/trackers/pack.json +61 -0
- skilldrop_cli/data/packs/trackers/skills/backlog-triage/SKILL.md +116 -0
- skilldrop_cli/data/packs/trackers/skills/backlog-triage/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/trackers/skills/backlog-triage/evals/evals.json +30 -0
- skilldrop_cli/data/packs/trackers/skills/backlog-triage/evals/files/1/examples/northwind-backlog.csv +28 -0
- skilldrop_cli/data/packs/trackers/skills/backlog-triage/evals/files/2/issues.json +6052 -0
- skilldrop_cli/data/packs/trackers/skills/backlog-triage/examples/northwind-backlog.csv +28 -0
- skilldrop_cli/data/packs/trackers/skills/backlog-triage/examples/northwind-checkout-triage.md +202 -0
- skilldrop_cli/data/packs/trackers/skills/backlog-triage/manifest.json +42 -0
- skilldrop_cli/data/packs/trackers/skills/backlog-triage/reference.md +106 -0
- skilldrop_cli/data/packs/trackers/skills/backlog-triage/scripts/triage_backlog.py +461 -0
- skilldrop_cli/data/packs/trackers/skills/backlog-triage/templates/triage-report.md +42 -0
- skilldrop_cli/data/packs/trackers/skills/team-status-report/SKILL.md +111 -0
- skilldrop_cli/data/packs/trackers/skills/team-status-report/evals/eval_queries.json +30 -0
- skilldrop_cli/data/packs/trackers/skills/team-status-report/evals/evals.json +30 -0
- skilldrop_cli/data/packs/trackers/skills/team-status-report/evals/files/1/examples/northwind-week-40.csv +16 -0
- skilldrop_cli/data/packs/trackers/skills/team-status-report/evals/files/2/issues.json +1212 -0
- skilldrop_cli/data/packs/trackers/skills/team-status-report/examples/northwind-week-40.csv +16 -0
- skilldrop_cli/data/packs/trackers/skills/team-status-report/examples/northwind-weekly-status.md +160 -0
- skilldrop_cli/data/packs/trackers/skills/team-status-report/manifest.json +33 -0
- skilldrop_cli/data/packs/trackers/skills/team-status-report/reference.md +92 -0
- skilldrop_cli/data/packs/trackers/skills/team-status-report/scripts/status_counts.py +486 -0
- skilldrop_cli/data/packs/trackers/skills/team-status-report/templates/status-report.md +42 -0
- skilldrop_cli/data/packs/trackers/skills/tracker-brief-sync/SKILL.md +116 -0
- skilldrop_cli/data/packs/trackers/skills/tracker-brief-sync/evals/eval_queries.json +34 -0
- skilldrop_cli/data/packs/trackers/skills/tracker-brief-sync/evals/evals.json +31 -0
- skilldrop_cli/data/packs/trackers/skills/tracker-brief-sync/evals/files/1/examples/prd-guest-checkout.md +53 -0
- skilldrop_cli/data/packs/trackers/skills/tracker-brief-sync/evals/files/2/examples/prd-guest-checkout.md +53 -0
- skilldrop_cli/data/packs/trackers/skills/tracker-brief-sync/evals/files/2/examples/tracker-after-two-weeks.csv +30 -0
- skilldrop_cli/data/packs/trackers/skills/tracker-brief-sync/examples/guest-checkout-spec.json +98 -0
- skilldrop_cli/data/packs/trackers/skills/tracker-brief-sync/examples/guest-checkout-sync.md +151 -0
- skilldrop_cli/data/packs/trackers/skills/tracker-brief-sync/examples/prd-guest-checkout.md +53 -0
- skilldrop_cli/data/packs/trackers/skills/tracker-brief-sync/examples/tracker-after-two-weeks.csv +30 -0
- skilldrop_cli/data/packs/trackers/skills/tracker-brief-sync/manifest.json +41 -0
- skilldrop_cli/data/packs/trackers/skills/tracker-brief-sync/reference.md +101 -0
- skilldrop_cli/data/packs/trackers/skills/tracker-brief-sync/scripts/brief_sync.py +501 -0
- skilldrop_cli/data/packs/trackers/skills/tracker-brief-sync/templates/issues-spec.json +26 -0
- skilldrop_cli/data/profiles.json +24 -0
- skilldrop_cli-0.16.3.dist-info/METADATA +91 -0
- skilldrop_cli-0.16.3.dist-info/RECORD +757 -0
- skilldrop_cli-0.16.3.dist-info/WHEEL +5 -0
- skilldrop_cli-0.16.3.dist-info/entry_points.txt +2 -0
- skilldrop_cli-0.16.3.dist-info/licenses/LICENSE +9 -0
- skilldrop_cli-0.16.3.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
# Worked example: Northwind Analytics, first SOC 2 Type II (Security)
|
|
2
|
+
|
|
3
|
+
A fictional 60-person SaaS company. The input is what its Head of Security might send; the
|
|
4
|
+
output is the summary and the CSV, shortened where rows repeat a pattern.
|
|
5
|
+
|
|
6
|
+
## Input given to the skill
|
|
7
|
+
|
|
8
|
+
> We're Northwind Analytics. A big customer wants a SOC 2 Type II, Security only, and our
|
|
9
|
+
> auditor has proposed a six-month period, 1 January to 30 June 2027. We don't have a formal
|
|
10
|
+
> controls list. What we do today:
|
|
11
|
+
> - Okta SSO with MFA for everyone. Access is requested by Jira ticket with manager approval
|
|
12
|
+
> and granted through role-based Okta groups (Dev Rao, IT Lead).
|
|
13
|
+
> - BambooHR terminations deactivate Okta automatically, within the day.
|
|
14
|
+
> - Background checks through Certn before start, KnowBe4 training within 30 days (Ola
|
|
15
|
+
> Brandt, People Ops).
|
|
16
|
+
> - Laptops in Kandji with FileVault and malware protection. Four contractors use their own
|
|
17
|
+
> laptops.
|
|
18
|
+
> - Snyk scans weekly; criticals fixed in 14 days, highs in 30 (Rui Costa, Platform Lead).
|
|
19
|
+
> - Datadog security alerts page the PagerDuty on-call.
|
|
20
|
+
> - All deploys go through GitHub PRs with one approval and CI, but two admins can bypass
|
|
21
|
+
> branch protection (Kim Novak, VP Engineering).
|
|
22
|
+
> - RDS daily backups. Never tested a restore.
|
|
23
|
+
> - We wrote security policies in 2025, CEO approved them. Nobody has acknowledged them.
|
|
24
|
+
> - Incident response plan exists, never tested. We have a vendor list in Vanta.
|
|
25
|
+
> - Engineering managers "look at" AWS and GitHub admin access now and then.
|
|
26
|
+
> - We're on AWS; no production data in the office.
|
|
27
|
+
> I'm Sam Ito, Head of Security.
|
|
28
|
+
|
|
29
|
+
No question was needed: scope, type, period, systems and most owners were given.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Scope
|
|
34
|
+
|
|
35
|
+
SOC 2 Type II, Security (common criteria CC1–CC9), Northwind Analytics production platform,
|
|
36
|
+
period 1 January 2027 to 30 June 2027. AWS is treated as a carved-out subservice
|
|
37
|
+
organisation `[assumption: confirm with the auditor]`.
|
|
38
|
+
|
|
39
|
+
> Prepared for Northwind's compliance lead and auditor to review; not audit advice. The
|
|
40
|
+
> auditor decides what evidence is sufficient.
|
|
41
|
+
|
|
42
|
+
## Coverage by criterion
|
|
43
|
+
|
|
44
|
+
| Criteria | Controls | Status |
|
|
45
|
+
|---|---|---|
|
|
46
|
+
| CC1.1, CC5.3 | GOV-01 policy approval and acknowledgement | partial |
|
|
47
|
+
| CC1.4 | HR-01 background checks and training | in place |
|
|
48
|
+
| CC1.2, CC1.3, CC1.5 | none | **gap**: GOV-02, GOV-03 proposed |
|
|
49
|
+
| CC2.1, CC2.2, CC2.3 | none (GOV-01 covers part of CC2.2) | **gap**: COM-01 proposed |
|
|
50
|
+
| CC3.1–CC3.4, CC5.1 | RISK-01 risk assessment | **gap**: RISK-01 not yet run |
|
|
51
|
+
| CC4.1, CC4.2 | none | **gap**: MON-02 proposed |
|
|
52
|
+
| CC5.2 | none mapped yet | **gap**: map once technology controls are confirmed |
|
|
53
|
+
| CC6.1 | AC-04 SSO with MFA | in place |
|
|
54
|
+
| CC6.2 | AC-01 joiners, AC-02 leavers | in place |
|
|
55
|
+
| CC6.3 | AC-01 role groups; AC-03 access review | partial (AC-03 is a gap) |
|
|
56
|
+
| CC6.4 | AWS (carved out); office holds no production data | subservice `[to confirm]` |
|
|
57
|
+
| CC6.5, CC6.6, CC6.7 | none | **gap**: EP-02, NET-01, ENC-01 proposed |
|
|
58
|
+
| CC6.8 | EP-01 managed laptops | partial |
|
|
59
|
+
| CC7.1 | VM-01 vulnerability scanning | in place |
|
|
60
|
+
| CC7.2 | MON-01 alert routing | in place |
|
|
61
|
+
| CC7.3, CC7.4 | IR-01 incident response | partial |
|
|
62
|
+
| CC7.5 | IR-01; BC-01 restore tests | partial |
|
|
63
|
+
| CC8.1 | CHG-01 pull request review | partial |
|
|
64
|
+
| CC9.1 | none | **gap**: BC-02 proposed |
|
|
65
|
+
| CC9.2 | VEN-01 vendor reviews | partial |
|
|
66
|
+
|
|
67
|
+
## Evidence map (selected rows; full set in the CSV)
|
|
68
|
+
|
|
69
|
+
| Control | Criteria | Type II population (source) | Per-sample record | System | Owner | Frequency | Status |
|
|
70
|
+
|---|---|---|---|---|---|---|---|
|
|
71
|
+
| AC-02 IT removes all access within 24 hours of termination, triggered from BambooHR | CC6.2 | All terminations in the period (BambooHR report) | Okta deactivation timestamp within 24 hours of termination date | BambooHR; Okta | IT Lead (Dev Rao) | per event | in place |
|
|
72
|
+
| AC-03 Engineering managers review AWS and GitHub admin access quarterly; removals ticketed | CC6.3 | The two quarterly reviews in the period (Jira) | Signed-off access list and a ticket per removal | Jira; AWS IAM Identity Center; GitHub | VP Engineering (Kim Novak) | quarterly | **gap** |
|
|
73
|
+
| CHG-01 Production deploys only via PR with a non-author approval and passing CI | CC8.1 | All production deployments (GitHub Actions) | PR with non-author approval and green checks | GitHub | VP Engineering (Kim Novak) | per event | partial |
|
|
74
|
+
| EP-01 All laptops managed in Kandji with encryption and malware protection | CC6.8 | Device compliance reports for the period | Sampled devices encrypted and protected | Kandji | IT Lead (Dev Rao) `[to confirm]` | continuous | partial |
|
|
75
|
+
| BC-01 Daily RDS backups; restore tested every six months | CC7.5 | Restore tests in the period (Jira) | Restore record with date and outcome | AWS RDS; Jira | Platform Lead (Rui Costa) `[to confirm]` | semi-annually | proposed |
|
|
76
|
+
|
|
77
|
+
For a **Type I** on the same scope, the CHG-01 evidence would be the branch protection
|
|
78
|
+
settings export dated on the report date plus one merged PR, with no population. Here the
|
|
79
|
+
auditor will sample deployments from all six months, so the bypass rights matter for every
|
|
80
|
+
day of the period.
|
|
81
|
+
|
|
82
|
+
## Gaps, ordered by audit risk
|
|
83
|
+
|
|
84
|
+
1. **CHG-01 branch protection bypass** (CC8.1). Every bypassed deploy is an exception the
|
|
85
|
+
auditor finds by sampling. Remove bypass rights, or log and review each bypass, before
|
|
86
|
+
1 January. *Owner: Kim Novak. Due 2026-11-15.*
|
|
87
|
+
2. **AC-03 no access review record** (CC6.3). Schedule a quarterly review ticket and run the
|
|
88
|
+
first before the period starts so Q1 and Q2 both have evidence. *Owner: Kim Novak. Due 2026-12-15.*
|
|
89
|
+
3. **RISK-01 no risk assessment** (CC3.1–CC3.4). Run one in January and minute leadership's
|
|
90
|
+
review. *Owner: Sam Ito. Due 2027-01-31.*
|
|
91
|
+
4. **GOV-01 no acknowledgements** (CC1.1). Run the acknowledgement cycle in December so every
|
|
92
|
+
person in the population has a date. *Owner: Sam Ito. Due 2026-12-15.*
|
|
93
|
+
5. **EP-01 four unmanaged contractor laptops** (CC6.8). Enrol or replace. *Owner: Dev Rao `[to confirm]`. Due 2026-11-30.*
|
|
94
|
+
6. **IR-01 untested plan, BC-01 untested restore** (CC7.4, CC7.5). Each needs one recorded
|
|
95
|
+
test inside the period. *Owners: Sam Ito, Rui Costa `[to confirm]`.*
|
|
96
|
+
7. **No control yet** for CC1.2, CC1.3, CC1.5, CC2.x, CC4.x, CC5.2, CC6.5–CC6.7 and CC9.1.
|
|
97
|
+
Proposed controls are listed below; each needs an owner from Sam Ito.
|
|
98
|
+
|
|
99
|
+
Proposed controls (`proposed` until Northwind confirms):
|
|
100
|
+
- GOV-02: leadership reviews security posture and open risks quarterly, minuted (CC1.2).
|
|
101
|
+
- GOV-03: security roles and responsibilities documented in the org chart and job descriptions; policy breaches handled under the disciplinary policy (CC1.3, CC1.5).
|
|
102
|
+
- COM-01: security commitments published to customers and in contracts; internal security updates sent quarterly (CC2.1–CC2.3).
|
|
103
|
+
- MON-02: Head of Security reviews control operation quarterly and tracks deficiencies to closure (CC4.1, CC4.2).
|
|
104
|
+
- EP-02: laptops wiped and recorded before disposal or reassignment (CC6.5).
|
|
105
|
+
- NET-01: AWS security groups and WAF rules managed in code and reviewed on change (CC6.6).
|
|
106
|
+
- ENC-01: TLS enforced on all external endpoints; data at rest encrypted with KMS (CC6.7, CC6.1).
|
|
107
|
+
- BC-02: business continuity plan reviewed annually and tested by tabletop (CC9.1).
|
|
108
|
+
|
|
109
|
+
## Vendor SOC reports to collect
|
|
110
|
+
|
|
111
|
+
- AWS SOC 2 Type II covering the period, plus a bridge letter if it ends before 30 June 2027.
|
|
112
|
+
- Okta SOC 2 Type II.
|
|
113
|
+
- Complementary user entity controls to state in the system description: customers manage
|
|
114
|
+
their own users' access and roles in Northwind's product `[to confirm]`.
|
|
115
|
+
|
|
116
|
+
## CSV
|
|
117
|
+
|
|
118
|
+
[`northwind-evidence-map.csv`](northwind-evidence-map.csv): 16 rows, one per
|
|
119
|
+
control-criterion pair, in the columns of the template.
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
**Why this is a passing output:** every common criterion is either covered or listed as a
|
|
124
|
+
gap; evidence names the population and source system for Type II; IDs used are only those in
|
|
125
|
+
the reference; owners are the people the user named, owners the skill inferred are marked
|
|
126
|
+
`[to confirm]`, and proposed controls are left for Sam to assign; the mid-period and untested controls are not marked `in place`; and AWS
|
|
127
|
+
is handled as a carve-out with the reports to collect.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "soc2-evidence-map",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Map an organisation's controls to the SOC 2 Trust Services Criteria in scope (Security always, plus Availability, Confidentiality, Processing Integrity or Privacy if chosen), and for each control list the evidence an auditor will ask for, the system it lives in, the owner, how often it is produced, and the gaps — distinguishing Type I (designed and in place at a date) from Type II (operating over a period, sampled from a full population) — as a table and a CSV the team can work from. Use when the user is preparing for a SOC 2 audit or readiness assessment, says \"SOC 2 evidence\", \"map our controls to the TSC\", \"what will the auditor ask for\", \"SOC 2 gap analysis\".",
|
|
5
|
+
"entrypoint": "SKILL.md",
|
|
6
|
+
"deps": {
|
|
7
|
+
"npm": [],
|
|
8
|
+
"pip": []
|
|
9
|
+
},
|
|
10
|
+
"env": {
|
|
11
|
+
"required": [],
|
|
12
|
+
"optional": []
|
|
13
|
+
},
|
|
14
|
+
"related": [
|
|
15
|
+
"ai-usage-policy",
|
|
16
|
+
"dpia",
|
|
17
|
+
"nfr-spec",
|
|
18
|
+
"risk-register",
|
|
19
|
+
"threat-model"
|
|
20
|
+
],
|
|
21
|
+
"handoff": [
|
|
22
|
+
{
|
|
23
|
+
"to": "risk-register",
|
|
24
|
+
"when": "the company has no risk assessment, which the risk assessment criteria expect",
|
|
25
|
+
"purpose": "Produce the scored, owned risk register the auditor will ask to see.",
|
|
26
|
+
"fallback": "If risk-register is absent, list the top risks with likelihood, impact, owner and treatment inline and mark the risk assessment control partial."
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
"tags": [
|
|
30
|
+
"soc2",
|
|
31
|
+
"audit",
|
|
32
|
+
"compliance",
|
|
33
|
+
"grc",
|
|
34
|
+
"controls",
|
|
35
|
+
"evidence"
|
|
36
|
+
],
|
|
37
|
+
"model": {
|
|
38
|
+
"tier": "standard",
|
|
39
|
+
"rationale": "Maps controls against a fixed criteria set and a known Type I vs Type II evidence pattern. Judgment is needed on coverage and gap status, but the structure is bounded by the reference."
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
# soc2-evidence-map reference
|
|
2
|
+
|
|
3
|
+
A drafting aid for SOC 2 preparation, based on the AICPA's 2017 Trust Services Criteria
|
|
4
|
+
(TSC), as revised in 2022 (the revision updated points of focus, not the criteria
|
|
5
|
+
numbering). It is not audit advice; the service auditor decides what is sufficient. Confirm
|
|
6
|
+
wording against the AICPA publication the auditor is using.
|
|
7
|
+
|
|
8
|
+
## Structure
|
|
9
|
+
|
|
10
|
+
SOC 2 reports on up to five **Trust Services Categories**:
|
|
11
|
+
|
|
12
|
+
| Category | Always in scope? | Criteria |
|
|
13
|
+
|---|---|---|
|
|
14
|
+
| Security | yes | The **common criteria**, CC1 to CC9 |
|
|
15
|
+
| Availability | optional | A1 series |
|
|
16
|
+
| Confidentiality | optional | C1 series |
|
|
17
|
+
| Processing Integrity | optional | PI1 series |
|
|
18
|
+
| Privacy | optional | The privacy criteria series |
|
|
19
|
+
|
|
20
|
+
The common criteria apply to every report. CC1 to CC5 follow the 17 principles of the COSO
|
|
21
|
+
2013 internal control framework; CC6 to CC9 add criteria specific to technology and security.
|
|
22
|
+
|
|
23
|
+
## Criteria IDs this skill uses
|
|
24
|
+
|
|
25
|
+
Use only these IDs. For any other point, describe the area in words.
|
|
26
|
+
|
|
27
|
+
**CC1 Control environment**
|
|
28
|
+
- CC1.1 commitment to integrity and ethical values
|
|
29
|
+
- CC1.2 board independence and oversight of internal control
|
|
30
|
+
- CC1.3 structures, reporting lines, authorities and responsibilities
|
|
31
|
+
- CC1.4 commitment to attract, develop and retain competent people
|
|
32
|
+
- CC1.5 holding people accountable for their internal control responsibilities
|
|
33
|
+
|
|
34
|
+
**CC2 Communication and information**
|
|
35
|
+
- CC2.1 obtaining and using relevant, quality information
|
|
36
|
+
- CC2.2 internal communication of objectives and responsibilities
|
|
37
|
+
- CC2.3 communication with external parties
|
|
38
|
+
|
|
39
|
+
**CC3 Risk assessment**
|
|
40
|
+
- CC3.1 objectives specified clearly enough to identify risks
|
|
41
|
+
- CC3.2 identifying and analysing risks
|
|
42
|
+
- CC3.3 considering the potential for fraud
|
|
43
|
+
- CC3.4 identifying and assessing changes that could affect internal control
|
|
44
|
+
|
|
45
|
+
**CC4 Monitoring activities**
|
|
46
|
+
- CC4.1 ongoing and separate evaluations of controls
|
|
47
|
+
- CC4.2 evaluating and communicating deficiencies
|
|
48
|
+
|
|
49
|
+
**CC5 Control activities**
|
|
50
|
+
- CC5.1 selecting and developing control activities
|
|
51
|
+
- CC5.2 general control activities over technology
|
|
52
|
+
- CC5.3 deploying controls through policies and procedures
|
|
53
|
+
|
|
54
|
+
**CC6 Logical and physical access controls**
|
|
55
|
+
- CC6.1 logical access security over information assets
|
|
56
|
+
- CC6.2 registering and authorising users before issuing credentials, and removing them when access is no longer authorised
|
|
57
|
+
- CC6.3 authorising, modifying and removing access based on roles, least privilege and segregation of duties
|
|
58
|
+
- CC6.4 restricting physical access to facilities and protected assets
|
|
59
|
+
- CC6.5 discontinuing protections over physical assets only after data is removed (disposal)
|
|
60
|
+
- CC6.6 protecting against threats from outside the system boundary
|
|
61
|
+
- CC6.7 restricting the transmission, movement and removal of information
|
|
62
|
+
- CC6.8 preventing or detecting unauthorised or malicious software
|
|
63
|
+
|
|
64
|
+
**CC7 System operations**
|
|
65
|
+
- CC7.1 detecting configuration changes and new vulnerabilities
|
|
66
|
+
- CC7.2 monitoring system components for anomalies
|
|
67
|
+
- CC7.3 evaluating security events to decide whether they are incidents
|
|
68
|
+
- CC7.4 responding to identified security incidents
|
|
69
|
+
- CC7.5 recovering from identified security incidents
|
|
70
|
+
|
|
71
|
+
**CC8 Change management**
|
|
72
|
+
- CC8.1 authorising, designing, developing, configuring, documenting, testing, approving and implementing changes
|
|
73
|
+
|
|
74
|
+
**CC9 Risk mitigation**
|
|
75
|
+
- CC9.1 risk mitigation for business disruption
|
|
76
|
+
- CC9.2 assessing and managing risks from vendors and business partners
|
|
77
|
+
|
|
78
|
+
**A1 Availability**
|
|
79
|
+
- A1.1 managing capacity to meet objectives
|
|
80
|
+
- A1.2 environmental protections, software, data backup and recovery infrastructure
|
|
81
|
+
- A1.3 testing recovery plan procedures
|
|
82
|
+
|
|
83
|
+
**C1 Confidentiality**
|
|
84
|
+
- C1.1 identifying and maintaining confidential information
|
|
85
|
+
- C1.2 disposing of confidential information
|
|
86
|
+
|
|
87
|
+
**Processing Integrity** (describe by area): definitions of the data processed and the
|
|
88
|
+
service's specifications; complete and accurate inputs; complete, accurate and timely
|
|
89
|
+
processing; complete and accurate outputs; and storage of inputs, items in process and
|
|
90
|
+
outputs.
|
|
91
|
+
|
|
92
|
+
**Privacy** (describe by area): notice; choice and consent; collection; use, retention and
|
|
93
|
+
disposal; access by data subjects; disclosure and notification, including breaches;
|
|
94
|
+
quality; and monitoring and enforcement.
|
|
95
|
+
|
|
96
|
+
## Baseline controls by area
|
|
97
|
+
|
|
98
|
+
A starting set for Security when the company has no controls list. Every one is written as
|
|
99
|
+
who, what, how often, with what record. Mark them `proposed` until the company confirms.
|
|
100
|
+
|
|
101
|
+
| Area | Control | Usual criteria |
|
|
102
|
+
|---|---|---|
|
|
103
|
+
| Governance | Leadership approves security policies annually; staff acknowledge them at hire and annually | CC1.1, CC5.3 |
|
|
104
|
+
| People | Background checks before start; security training at hire and annually, completion tracked | CC1.4 |
|
|
105
|
+
| Risk | Annual risk assessment with a register, reviewed by leadership | CC3.2, CC3.4 |
|
|
106
|
+
| Vendors | Critical vendors assessed at onboarding and annually; their SOC reports reviewed | CC9.2 |
|
|
107
|
+
| Joiners | Access granted by ticket with manager approval, by role | CC6.2, CC6.3 |
|
|
108
|
+
| Leavers | Access removed within a stated time of termination, triggered from HR | CC6.2 |
|
|
109
|
+
| Access review | Quarterly review of production and admin access, with removals recorded | CC6.3 |
|
|
110
|
+
| Authentication | SSO with MFA enforced for all workforce accounts | CC6.1 |
|
|
111
|
+
| Encryption | Data encrypted at rest and in transit, configured centrally | CC6.1, CC6.7 |
|
|
112
|
+
| Endpoints | Managed devices with disk encryption and malware protection | CC6.8 |
|
|
113
|
+
| Vulnerabilities | Scans on a schedule; findings fixed within SLAs by severity | CC7.1 |
|
|
114
|
+
| Monitoring | Security alerts routed to an on-call rotation | CC7.2, CC7.3 |
|
|
115
|
+
| Incidents | Incident response plan, tested annually; incidents ticketed with post-incident review | CC7.3, CC7.4, CC7.5 |
|
|
116
|
+
| Change | Production changes through pull requests with peer review and passing tests; no self-approval | CC8.1 |
|
|
117
|
+
| Backups | Automated backups; restore tested at least annually | A1.2, A1.3 (if Availability in scope), CC7.5 |
|
|
118
|
+
| Business continuity | Continuity and disaster recovery plan, reviewed and tested annually | CC9.1, A1.3 |
|
|
119
|
+
| Monitoring of controls | Internal review of control operation, deficiencies tracked to closure | CC4.1, CC4.2 |
|
|
120
|
+
|
|
121
|
+
## Type I vs Type II evidence
|
|
122
|
+
|
|
123
|
+
| | Type I | Type II |
|
|
124
|
+
|---|---|---|
|
|
125
|
+
| What the auditor opines on | Whether controls are suitably designed and implemented **as of a date** | Whether controls are suitably designed **and operated effectively throughout a period** |
|
|
126
|
+
| Period | One date | A period agreed with the auditor; commonly 6 or 12 months, sometimes 3 for a first report |
|
|
127
|
+
| Typical evidence | Policy or procedure; configuration export or dated screenshot; one example of the control running | The **full population** of occurrences in the period from the system of record, then the record for each sample the auditor picks |
|
|
128
|
+
| What fails | No design, or not implemented on the date | Missed occurrences, late occurrences, or no record for a sample |
|
|
129
|
+
|
|
130
|
+
### Populations and sampling
|
|
131
|
+
|
|
132
|
+
For Type II, the auditor needs a complete, system-generated list of every time the control
|
|
133
|
+
should have run, so it can select samples and confirm none are missing.
|
|
134
|
+
|
|
135
|
+
| Control | Population | Source | Per-sample record |
|
|
136
|
+
|---|---|---|---|
|
|
137
|
+
| Leaver access removal | All terminations in the period | HR system report | Identity provider deactivation timestamp vs termination date |
|
|
138
|
+
| Joiner access | All new accounts in the period | Identity provider | Approved access ticket before the account was created |
|
|
139
|
+
| Change management | All production deployments in the period | CI/CD or code hosting | Pull request with an approver other than the author, and passing checks |
|
|
140
|
+
| Quarterly access review | The four quarterly reviews | Ticketing or GRC tool | Review sign-off, list reviewed, removals actioned |
|
|
141
|
+
| Vulnerability remediation | All high and critical findings in the period | Scanner | Fix date within the SLA, or an approved exception |
|
|
142
|
+
|
|
143
|
+
The control's **frequency** drives how many samples the auditor draws: a per-event or daily
|
|
144
|
+
control gets more samples than a quarterly one. The auditor sets the sample sizes.
|
|
145
|
+
|
|
146
|
+
## Subservice organisations and complementary controls
|
|
147
|
+
|
|
148
|
+
- A **subservice organisation** (a cloud provider, a payment processor) runs controls the
|
|
149
|
+
company relies on. The report either **carves it out** (the usual approach: its controls
|
|
150
|
+
are excluded and the company points to the vendor's own SOC report) or includes it.
|
|
151
|
+
- For carve-outs, the report lists **complementary subservice organisation controls**: what
|
|
152
|
+
the company expects the vendor to do. Collect the vendor's current SOC 2 report and its
|
|
153
|
+
bridge letter if the period doesn't line up.
|
|
154
|
+
- **Complementary user entity controls** are controls the company expects its customers to
|
|
155
|
+
run, such as managing their own users' access in the product. List them so the system
|
|
156
|
+
description can state them.
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
control_id,control,criteria,category,type1_evidence,type2_population,type2_sample_record,system,owner,frequency,status,gap,remediation,due_date
|
|
2
|
+
AC-02,"<who> <does what> <how often>, recorded in <system>",CC6.2,Security,<policy + dated config export + one example>,<every occurrence in the period and the report it comes from>,<what each sampled item must show>,<tool the evidence is exported from>,<named person or role>,per event|daily|weekly|monthly|quarterly|annually,in place|partial|gap|proposed,<what is missing; blank if in place>,<the fix>,YYYY-MM-DD
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Terraform you can hand to another team and plans you can trust before apply: reusable modules with secure defaults, and a plan review that catches destroys, data loss, access widening and drift.",
|
|
3
|
+
"display_name": "Infrastructure as code",
|
|
4
|
+
"keywords": ["terraform", "infrastructure-as-code", "iac", "module", "plan", "aws", "gcp", "azure"],
|
|
5
|
+
"links": {
|
|
6
|
+
"documentation": "https://sananthanarayan.github.io/skilldrop/packs/infra-as-code/"
|
|
7
|
+
},
|
|
8
|
+
"maintainers": [
|
|
9
|
+
{
|
|
10
|
+
"name": "sananthanarayan"
|
|
11
|
+
}
|
|
12
|
+
],
|
|
13
|
+
"first-value": {
|
|
14
|
+
"audience-posture": "technical",
|
|
15
|
+
"prerequisites": ["A Terraform project or a described piece of infrastructure", "Terraform installed locally if you want to validate and plan the result"],
|
|
16
|
+
"starter-task": "Write a module, then review its plan before the first apply",
|
|
17
|
+
"starter-prompt": "Write a Terraform module for an S3 bucket that stores our access logs for a year. Several teams will call it. Then, once I've run terraform plan on the example, review the plan before I apply.",
|
|
18
|
+
"verification": "terraform-module writes versions.tf, variables.tf, main.tf, outputs.tf, a basic example and a README with inputs and outputs tables, with encryption on and public access off by default. terraform-plan-review returns SAFE TO APPLY, APPLY WITH CARE or DO NOT APPLY with every destroy and replace named.",
|
|
19
|
+
"recovery": "If terraform validate fails, paste the error back and ask terraform-module to fix that file. If terraform-plan-review does not activate, ask for it by name (\"use terraform-plan-review\") and give it the output of terraform show -json tfplan."
|
|
20
|
+
},
|
|
21
|
+
"requires": ["core"],
|
|
22
|
+
"journey": {
|
|
23
|
+
"when": "You need new infrastructure as a reusable Terraform module, or you have a plan in front of you and want to know whether it is safe to apply.",
|
|
24
|
+
"you_bring": [
|
|
25
|
+
"what the infrastructure is for and which cloud it runs on",
|
|
26
|
+
"who will call the module",
|
|
27
|
+
"the output of terraform plan, ideally terraform show -json tfplan",
|
|
28
|
+
"one sentence on what the change is meant to do"
|
|
29
|
+
],
|
|
30
|
+
"time": "20 to 45 minutes",
|
|
31
|
+
"steps": [
|
|
32
|
+
{
|
|
33
|
+
"skill": "terraform-module",
|
|
34
|
+
"you_do": "Describe the need, the cloud and the callers.",
|
|
35
|
+
"you_get": "A module with versions.tf, typed and validated variables, secure defaults, a tags variable, a basic example, a README, and the commands to check it."
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"skill": "terraform-plan-review",
|
|
39
|
+
"you_do": "Run terraform plan, save it with terraform show -json, and hand it over with the intent of the change.",
|
|
40
|
+
"you_get": "Counts, every destroy and replace with its cause, stateful and access changes, drift, out-of-scope changes and a verdict.",
|
|
41
|
+
"decide": "Apply, apply after the listed checks, or fix the code and re-plan."
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"skill": "doc-critique",
|
|
45
|
+
"you_do": "Optionally, run it on the module README before you publish the module to other teams.",
|
|
46
|
+
"you_get": "Severity-tagged findings on gaps and unclear inputs, with a fix for each."
|
|
47
|
+
}
|
|
48
|
+
],
|
|
49
|
+
"you_end_with": "A reusable module with safe defaults, and a reviewed plan with a clear apply decision."
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: terraform-module
|
|
3
|
+
description: Generate a Terraform module from a described need, with main.tf, variables.tf, outputs.tf and versions.tf, typed and validated variables, secure defaults (encryption on, public access off, least-privilege IAM), a merged tags variable, a basic usage example and a README with inputs and outputs tables. Use when the user says "write a terraform module for", "create terraform for an S3 bucket / VPC / database", "turn this into a reusable module", or "scaffold infrastructure as code for".
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# terraform-module
|
|
7
|
+
|
|
8
|
+
Writes a Terraform module someone else can call without reading its insides: typed inputs that reject bad values at plan time, defaults that are safe if nobody changes them, and a README that says what goes in and what comes out. The module is a reusable building block, not a root configuration with a provider and backend baked in. Reviewing the plan it produces before apply is `terraform-plan-review`. Analysing the security of the wider system is `threat-model`.
|
|
9
|
+
|
|
10
|
+
## How to respond
|
|
11
|
+
|
|
12
|
+
1. **Get the need, the cloud and the callers, asking once for what is missing.** Three inputs matter: what the infrastructure is for ("a bucket for ALB access logs, kept a year"), which provider (AWS, Google Cloud, Azure), and who calls the module (one team, many teams, a registry). Ask for any that are missing in one message, at most two questions. Default everything else and state the defaults at the top of the output: Terraform `>= 1.5.0`, the current major version of the provider as a bounded range, one module per logical resource group.
|
|
13
|
+
|
|
14
|
+
2. **Lay out the standard module structure.** Always produce these files, even when one is short:
|
|
15
|
+
- `versions.tf`: `required_version` and `required_providers` with `source` and a bounded `version` constraint. ✅ `version = ">= 5.0, < 7.0"` or `"~> 5.40"`. ❌ no constraint, or `">= 5.0"` with no upper bound, which lets a breaking major version in on the next `init`.
|
|
16
|
+
- `variables.tf`: every input.
|
|
17
|
+
- `main.tf`: resources, data sources and `locals`.
|
|
18
|
+
- `outputs.tf`: every value a caller needs, each with a `description`.
|
|
19
|
+
- `<module>/examples/basic/main.tf`: a working call to the module with a provider block, using placeholder names.
|
|
20
|
+
- `README.md`: purpose, usage snippet, inputs table, outputs table, and what it creates. Use [`templates/module-readme.md`](templates/module-readme.md).
|
|
21
|
+
No `provider` block and no `backend` block inside the module. The caller owns region, credentials and state.
|
|
22
|
+
|
|
23
|
+
3. **Type and validate every variable.** Each variable gets `type`, `description` and, where a bad value is possible, a `validation` block with an `error_message` that tells the caller how to fix it. ✅ `type = number` plus `validation { condition = var.retention_days >= 1 ... }`. ❌ `type = any`, or a string that silently takes "ture". Prefer `object({...})` with `optional()` over loose maps for structured input. Checks that span two variables go in a resource `lifecycle { precondition { ... } }`, which works on every supported Terraform version. Patterns are in [`reference.md`](reference.md).
|
|
24
|
+
|
|
25
|
+
4. **Make the defaults the secure choice.** A caller who sets only the required inputs gets: encryption at rest on, public access off, TLS required, deletion protection or `force_destroy = false` on anything stateful, versioning or backups on where the service has them, and IAM statements scoped to named actions and resources. Each insecure option is an explicit opt-in variable with a description that says what it opens. ✅ `force_destroy` default `false`. ❌ `acl = "public-read"` as a default, `Action = "*"` in a policy, `0.0.0.0/0` ingress by default. The per-cloud checklist is in [`reference.md`](reference.md).
|
|
26
|
+
|
|
27
|
+
5. **Tag everything through one variable.** Add `variable "tags"` of type `map(string)`, default `{}`, merge it over a small set of module defaults in `locals` (`merge(local.default_tags, var.tags)`, so caller values win) and apply `local.tags` to every resource that supports tags. On Google Cloud the equivalent is `labels`, which must be lowercase.
|
|
28
|
+
|
|
29
|
+
6. **Hard-code nothing environment-specific.** No account IDs, project IDs, subscription IDs, regions, ARNs, passwords, keys or tokens in the module. Look up the current account or project with a data source (`aws_caller_identity`, `google_client_config`, `azurerm_client_config`), take secrets as `sensitive = true` variables or references to a secret manager, and mark outputs that carry secrets `sensitive = true`.
|
|
30
|
+
|
|
31
|
+
7. **Tell the user how to check it.** The skill writes files; it does not claim they pass checks it did not run. If `terraform` is on `PATH`, say to run `terraform init -backend=false` and `terraform validate` in the module, and run them if the session allows shell commands. Always end with the commands to run before merging:
|
|
32
|
+
```bash
|
|
33
|
+
terraform fmt -recursive
|
|
34
|
+
terraform init -backend=false && terraform validate
|
|
35
|
+
terraform plan # from the basic example folder, against a sandbox account
|
|
36
|
+
```
|
|
37
|
+
Add `tflint` and `checkov -d .` if the user's team uses them. Recommend running the resulting plan through `terraform-plan-review` before the first apply.
|
|
38
|
+
|
|
39
|
+
8. **Emit the module in one message**: the stated defaults and assumptions, then each file in its own fenced block headed by its path, then the check commands. Follow the shape of [`examples/s3-log-bucket/`](examples/s3-log-bucket/README.md).
|
|
40
|
+
|
|
41
|
+
**Non-interactive runs** (subagent, CI, headless): a missing provider version, Terraform version or naming scheme becomes a tagged `[assumption]` listed first. A missing cloud provider or a need too vague to name a resource ("some infrastructure for the app") emits `BLOCKED: need the cloud provider and what the module must create`. Never guess the cloud.
|
|
42
|
+
|
|
43
|
+
## Useful references in this skill
|
|
44
|
+
|
|
45
|
+
- [`reference.md`](reference.md): secure defaults per cloud, variable validation patterns, version constraint rules, tagging and labelling, and the secrets checklist
|
|
46
|
+
- [`templates/module-readme.md`](templates/module-readme.md): the README skeleton with inputs and outputs tables
|
|
47
|
+
- [`examples/s3-log-bucket.md`](examples/s3-log-bucket.md): the worked example, the input prompt and the decisions behind the module
|
|
48
|
+
- [`examples/s3-log-bucket/`](examples/s3-log-bucket/README.md): the module itself, with `versions.tf`, `variables.tf`, `main.tf`, `outputs.tf`, a basic usage example and its README
|
|
49
|
+
|
|
50
|
+
## Quality bar
|
|
51
|
+
|
|
52
|
+
- **All six pieces exist**: `versions.tf`, `variables.tf`, `main.tf`, `outputs.tf`, a basic usage example, and a README with inputs and outputs tables that match the code.
|
|
53
|
+
- **Provider and Terraform versions are constrained**, with an upper bound on the provider major version.
|
|
54
|
+
- **Every variable has a type and a description**; every variable that can take a bad value has a validation block with a fixable error message.
|
|
55
|
+
- **Defaults are secure**: encryption on, public access off, least-privilege IAM, stateful resources protected from accidental destroy. Insecure options are opt-in variables.
|
|
56
|
+
- **Tags flow from one `tags` variable** merged with module defaults onto every taggable resource.
|
|
57
|
+
- **No hard-coded secrets, account IDs, project IDs, regions or ARNs** in the module.
|
|
58
|
+
- **No provider or backend block** inside the module.
|
|
59
|
+
- **The output does not claim the module was validated** unless the commands were actually run, and it shows their real output when they were.
|
|
60
|
+
|
|
61
|
+
## When to use this skill
|
|
62
|
+
|
|
63
|
+
- ✅ "Write a Terraform module for a private S3 bucket / RDS instance / GCS bucket / VNet"
|
|
64
|
+
- ✅ Turning copy-pasted resource blocks from several root configs into one reusable module
|
|
65
|
+
- ✅ Scaffolding a module with sensible secure defaults before the team fills in details
|
|
66
|
+
- ✅ Adding validation, tagging and a README to an existing module that has none
|
|
67
|
+
|
|
68
|
+
## When NOT to use this skill
|
|
69
|
+
|
|
70
|
+
- ❌ Reviewing a `terraform plan` before apply: use `terraform-plan-review`
|
|
71
|
+
- ❌ Reviewing someone's Terraform pull request for bugs: use `pre-merge-review`
|
|
72
|
+
- ❌ Modelling the threats to the system the infrastructure supports: use `threat-model`
|
|
73
|
+
- ❌ Estimating what the infrastructure will cost at expected load: use `capacity-cost-model`
|
|
74
|
+
- ❌ Moving existing infrastructure or data from one platform to another: use `migration-plan`
|
|
75
|
+
|
|
76
|
+
## Anti-patterns to avoid
|
|
77
|
+
|
|
78
|
+
- ❌ **A provider block inside the module.** It pins the region and credentials for every caller and stops the module being used with provider aliases.
|
|
79
|
+
- ❌ **`type = any` and no validation.** The first sign of a typo is a failed apply half an hour later instead of a plan-time error.
|
|
80
|
+
- ❌ **Unbounded provider versions.** `version = ">= 4.0"` builds today and breaks on the next major release, on someone else's machine.
|
|
81
|
+
- ❌ **Secure options as opt-in.** `encrypted = false` as the default with a variable to turn it on means most callers never do.
|
|
82
|
+
- ❌ **Hard-coded account IDs and ARNs.** The module works in one account and fails or, worse, grants access to the wrong one everywhere else.
|
|
83
|
+
- ❌ **Tags set resource by resource.** Half the resources end up untagged, and cost reports can't attribute them.
|
|
84
|
+
- ❌ **A README that drifts from the code.** An inputs table missing two variables is worse than none, because callers trust it.
|
|
85
|
+
- ❌ **"Validated" without running anything.** Saying the module passes `terraform validate` when no one ran it.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"query": "Write a terraform module for a private S3 bucket with encryption",
|
|
4
|
+
"should_trigger": true
|
|
5
|
+
},
|
|
6
|
+
{
|
|
7
|
+
"query": "Create Terraform for an RDS Postgres instance that other teams can reuse",
|
|
8
|
+
"should_trigger": true
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"query": "Turn these copy-pasted resource blocks into a reusable Terraform module with variables and outputs",
|
|
12
|
+
"should_trigger": true
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"query": "Scaffold infrastructure as code for a GCS bucket with a README and inputs table",
|
|
16
|
+
"should_trigger": true
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"query": "Review my terraform plan output before I apply it",
|
|
20
|
+
"should_trigger": false
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"query": "Review this pull request that changes our Terraform files",
|
|
24
|
+
"should_trigger": false
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"query": "Threat model the payments platform we are deploying to AWS",
|
|
28
|
+
"should_trigger": false
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"query": "Estimate what this infrastructure will cost per month at 10k requests per second",
|
|
32
|
+
"should_trigger": false
|
|
33
|
+
}
|
|
34
|
+
]
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill_name": "terraform-module",
|
|
3
|
+
"evals": [
|
|
4
|
+
{
|
|
5
|
+
"id": 1,
|
|
6
|
+
"prompt": "Write a Terraform module for Acme's Postgres database on AWS RDS. The payments team and the orders team will both call it. They need to pick instance class and storage size; everything else should be safe by default.",
|
|
7
|
+
"assertions": [
|
|
8
|
+
"Produces versions.tf, variables.tf, main.tf, outputs.tf, a basic usage example and a README with inputs and outputs tables",
|
|
9
|
+
"versions.tf sets required_version and a provider version constraint with an upper bound on the major version",
|
|
10
|
+
"Every variable has a type and a description, and inputs such as instance class or storage size have validation blocks with fixable error messages",
|
|
11
|
+
"Defaults set storage_encrypted = true, publicly_accessible = false, deletion_protection = true and skip_final_snapshot = false",
|
|
12
|
+
"The master password is not a literal or a variable default; it is a sensitive variable, a managed password, or a secret-manager reference",
|
|
13
|
+
"A tags variable is merged with module defaults and applied to taggable resources",
|
|
14
|
+
"The module contains no provider block, no backend block, and no hard-coded account ID, region or ARN",
|
|
15
|
+
"Does not claim terraform validate or plan was run unless it was actually run"
|
|
16
|
+
]
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"id": 2,
|
|
20
|
+
"prompt": "Turn this into a reusable module for Northwind's GCP projects: a GCS bucket for nightly exports, kept 90 days, readable by the analytics service account only.",
|
|
21
|
+
"assertions": [
|
|
22
|
+
"Uses labels with lowercase keys rather than AWS-style tags",
|
|
23
|
+
"Sets public_access_prevention to enforced and uniform_bucket_level_access to true by default",
|
|
24
|
+
"Grants access with a member-level IAM binding scoped to the named service account variable, not a project-wide or primitive role",
|
|
25
|
+
"Adds a lifecycle rule deleting objects after a retention variable defaulting to 90",
|
|
26
|
+
"Takes the project ID as a variable or data source rather than a literal",
|
|
27
|
+
"Ends with the terraform fmt, validate and plan commands for the user to run"
|
|
28
|
+
]
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
}
|
skilldrop_cli/data/packs/infra-as-code/skills/terraform-module/examples/s3-log-bucket/README.md
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# s3-log-bucket
|
|
2
|
+
|
|
3
|
+
An S3 bucket for access logs: private, encrypted, versioned, TLS-only, with lifecycle rules that move logs to STANDARD_IA and then expire them. It can receive S3 server access logs from buckets in the same account.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```hcl
|
|
8
|
+
module "access_logs" {
|
|
9
|
+
source = "../.." # or your registry / git source
|
|
10
|
+
|
|
11
|
+
bucket_name = "acme-prod-access-logs-example"
|
|
12
|
+
retention_days = 400
|
|
13
|
+
|
|
14
|
+
tags = {
|
|
15
|
+
"environment" = "prod"
|
|
16
|
+
"owner" = "platform-team"
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
A runnable version is in `examples/basic`.
|
|
22
|
+
|
|
23
|
+
## What it creates
|
|
24
|
+
|
|
25
|
+
| Resource | Why |
|
|
26
|
+
|---|---|
|
|
27
|
+
| `aws_s3_bucket.this` | The bucket. `force_destroy` is off by default so `terraform destroy` will not delete logs |
|
|
28
|
+
| `aws_s3_bucket_public_access_block.this` | All four public access settings on |
|
|
29
|
+
| `aws_s3_bucket_ownership_controls.this` | `BucketOwnerEnforced`: ACLs disabled, access by policy only |
|
|
30
|
+
| `aws_s3_bucket_server_side_encryption_configuration.this` | SSE-S3 (AES256) by default, SSE-KMS when `kms_key_arn` is set |
|
|
31
|
+
| `aws_s3_bucket_versioning.this` | Versioning on, so an overwrite or delete is recoverable for 30 days |
|
|
32
|
+
| `aws_s3_bucket_lifecycle_configuration.this` | Transition to STANDARD_IA, expire after `retention_days`, clean up noncurrent versions and incomplete uploads |
|
|
33
|
+
| `aws_s3_bucket_policy.this` | Deny any request not made over TLS; optionally allow S3 server access log delivery from this account |
|
|
34
|
+
|
|
35
|
+
## Inputs
|
|
36
|
+
|
|
37
|
+
| Name | Type | Default | Description |
|
|
38
|
+
|---|---|---|---|
|
|
39
|
+
| `bucket_name` | `string` | (required) | Globally unique bucket name, 3 to 63 lowercase characters |
|
|
40
|
+
| `retention_days` | `number` | `365` | Days before log objects expire. Must be greater than `transition_to_ia_days` |
|
|
41
|
+
| `transition_to_ia_days` | `number` | `30` | Days before objects move to STANDARD_IA. At least 30 |
|
|
42
|
+
| `kms_key_arn` | `string` | `null` | Customer-managed KMS key for SSE-KMS. Null means SSE-S3 |
|
|
43
|
+
| `allow_s3_server_access_logs` | `bool` | `true` | Allow the S3 logging service to write server access logs here |
|
|
44
|
+
| `access_log_source_bucket_arns` | `list(string)` | `[]` | Buckets allowed to deliver logs. Empty means any bucket in this account |
|
|
45
|
+
| `force_destroy` | `bool` | `false` | Let `terraform destroy` delete a non-empty bucket |
|
|
46
|
+
| `tags` | `map(string)` | `{}` | Extra tags, merged over the defaults `managed-by = terraform` and `module = s3-log-bucket` |
|
|
47
|
+
|
|
48
|
+
## Outputs
|
|
49
|
+
|
|
50
|
+
| Name | Description |
|
|
51
|
+
|---|---|
|
|
52
|
+
| `bucket_name` | Bucket name, to use as a logging target |
|
|
53
|
+
| `bucket_arn` | Bucket ARN, for IAM policies that read the logs |
|
|
54
|
+
| `bucket_regional_domain_name` | Regional domain name of the bucket |
|
|
55
|
+
|
|
56
|
+
## Notes
|
|
57
|
+
|
|
58
|
+
- Leave `kms_key_arn` null unless you know every log source supports SSE-KMS on the destination. Elastic Load Balancing access logs, for example, document SSE-S3 as the only supported option. Check the docs for each service that writes here.
|
|
59
|
+
- The account ID in the log delivery policy comes from `data.aws_caller_identity`, so nothing account-specific is hard-coded.
|
|
60
|
+
- This module does not configure a provider. The caller sets the region and credentials.
|
|
61
|
+
|
|
62
|
+
## Before you apply
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
terraform fmt -recursive
|
|
66
|
+
terraform init
|
|
67
|
+
terraform validate
|
|
68
|
+
terraform plan
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Run `tflint` and `checkov -d .` too if your team uses them.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
terraform {
|
|
2
|
+
required_version = ">= 1.5.0"
|
|
3
|
+
|
|
4
|
+
required_providers {
|
|
5
|
+
aws = {
|
|
6
|
+
source = "hashicorp/aws"
|
|
7
|
+
version = ">= 5.0, < 7.0"
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
provider "aws" {
|
|
13
|
+
region = "eu-west-1"
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
module "access_logs" {
|
|
17
|
+
source = "../.."
|
|
18
|
+
|
|
19
|
+
bucket_name = "acme-prod-access-logs-example"
|
|
20
|
+
retention_days = 400
|
|
21
|
+
|
|
22
|
+
tags = {
|
|
23
|
+
"environment" = "prod"
|
|
24
|
+
"owner" = "platform-team"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
output "log_bucket_name" {
|
|
29
|
+
value = module.access_logs.bucket_name
|
|
30
|
+
}
|