@lucasi/vibes 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +162 -0
- package/MIGRATION.md +368 -0
- package/README.md +44 -0
- package/bin/setup.js +127 -0
- package/commands/build-fix.md +56 -0
- package/commands/checkpoint.md +67 -0
- package/commands/code-review.md +68 -0
- package/commands/e2e.md +105 -0
- package/commands/eval.md +88 -0
- package/commands/evolve.md +36 -0
- package/commands/go-build.md +87 -0
- package/commands/go-review.md +71 -0
- package/commands/go-test.md +131 -0
- package/commands/harness-audit.md +73 -0
- package/commands/instinct-export.md +93 -0
- package/commands/instinct-import.md +88 -0
- package/commands/instinct-status.md +29 -0
- package/commands/learn.md +61 -0
- package/commands/loop-start.md +32 -0
- package/commands/loop-status.md +24 -0
- package/commands/model-route.md +26 -0
- package/commands/orchestrate.md +88 -0
- package/commands/plan.md +25 -0
- package/commands/projects.md +23 -0
- package/commands/promote.md +23 -0
- package/commands/quality-gate.md +29 -0
- package/commands/refactor-clean.md +102 -0
- package/commands/rust-build.md +78 -0
- package/commands/rust-review.md +65 -0
- package/commands/rust-test.md +104 -0
- package/commands/security.md +89 -0
- package/commands/setup-pm.md +67 -0
- package/commands/skill-create.md +117 -0
- package/commands/tdd.md +67 -0
- package/commands/test-coverage.md +80 -0
- package/commands/update-codemaps.md +81 -0
- package/commands/update-docs.md +67 -0
- package/commands/verify.md +67 -0
- package/instructions/INSTRUCTIONS.md +337 -0
- package/opencode.json +466 -0
- package/package.json +27 -0
- package/prompts/agents/architect.txt +175 -0
- package/prompts/agents/build-error-resolver.txt +233 -0
- package/prompts/agents/code-reviewer.txt +103 -0
- package/prompts/agents/cpp-build-resolver.txt +81 -0
- package/prompts/agents/cpp-reviewer.txt +65 -0
- package/prompts/agents/database-reviewer.txt +247 -0
- package/prompts/agents/doc-updater.txt +192 -0
- package/prompts/agents/docs-lookup.txt +57 -0
- package/prompts/agents/e2e-runner.txt +305 -0
- package/prompts/agents/go-build-resolver.txt +325 -0
- package/prompts/agents/go-reviewer.txt +241 -0
- package/prompts/agents/harness-optimizer.txt +27 -0
- package/prompts/agents/java-build-resolver.txt +123 -0
- package/prompts/agents/java-reviewer.txt +97 -0
- package/prompts/agents/kotlin-build-resolver.txt +120 -0
- package/prompts/agents/kotlin-reviewer.txt +127 -0
- package/prompts/agents/loop-operator.txt +39 -0
- package/prompts/agents/planner.txt +113 -0
- package/prompts/agents/python-reviewer.txt +85 -0
- package/prompts/agents/refactor-cleaner.txt +241 -0
- package/prompts/agents/rust-build-resolver.txt +93 -0
- package/prompts/agents/rust-reviewer.txt +61 -0
- package/prompts/agents/security-reviewer.txt +207 -0
- package/prompts/agents/tdd-guide.txt +216 -0
- package/skills/agent-eval/SKILL.md +145 -0
- package/skills/agent-harness-construction/SKILL.md +73 -0
- package/skills/agent-introspection-debugging/SKILL.md +153 -0
- package/skills/agent-payment-x402/SKILL.md +178 -0
- package/skills/agent-sort/SKILL.md +215 -0
- package/skills/agentic-engineering/SKILL.md +63 -0
- package/skills/ai-first-engineering/SKILL.md +51 -0
- package/skills/ai-regression-testing/SKILL.md +385 -0
- package/skills/android-clean-architecture/SKILL.md +339 -0
- package/skills/api-connector-builder/SKILL.md +120 -0
- package/skills/api-design/SKILL.md +523 -0
- package/skills/architecture-decision-records/SKILL.md +179 -0
- package/skills/article-writing/SKILL.md +79 -0
- package/skills/automation-audit-ops/SKILL.md +142 -0
- package/skills/autonomous-agent-harness/SKILL.md +267 -0
- package/skills/autonomous-loops/SKILL.md +610 -0
- package/skills/backend-patterns/SKILL.md +598 -0
- package/skills/benchmark/SKILL.md +93 -0
- package/skills/blueprint/SKILL.md +105 -0
- package/skills/brand-voice/SKILL.md +97 -0
- package/skills/brand-voice/references/voice-profile-schema.md +55 -0
- package/skills/browser-qa/SKILL.md +87 -0
- package/skills/bun-runtime/SKILL.md +84 -0
- package/skills/canary-watch/SKILL.md +99 -0
- package/skills/carrier-relationship-management/SKILL.md +212 -0
- package/skills/ck/SKILL.md +147 -0
- package/skills/ck/commands/forget.mjs +44 -0
- package/skills/ck/commands/info.mjs +24 -0
- package/skills/ck/commands/init.mjs +143 -0
- package/skills/ck/commands/list.mjs +40 -0
- package/skills/ck/commands/migrate.mjs +202 -0
- package/skills/ck/commands/resume.mjs +36 -0
- package/skills/ck/commands/save.mjs +210 -0
- package/skills/ck/commands/shared.mjs +387 -0
- package/skills/ck/hooks/session-start.mjs +224 -0
- package/skills/claude-api/SKILL.md +337 -0
- package/skills/claude-devfleet/SKILL.md +103 -0
- package/skills/click-path-audit/SKILL.md +244 -0
- package/skills/clickhouse-io/SKILL.md +439 -0
- package/skills/code-tour/SKILL.md +236 -0
- package/skills/codebase-onboarding/SKILL.md +233 -0
- package/skills/coding-standards/SKILL.md +549 -0
- package/skills/compose-multiplatform-patterns/SKILL.md +299 -0
- package/skills/configure-ecc/SKILL.md +367 -0
- package/skills/connections-optimizer/SKILL.md +189 -0
- package/skills/content-engine/SKILL.md +131 -0
- package/skills/content-hash-cache-pattern/SKILL.md +161 -0
- package/skills/context-budget/SKILL.md +135 -0
- package/skills/continuous-agent-loop/SKILL.md +45 -0
- package/skills/continuous-learning/SKILL.md +123 -0
- package/skills/continuous-learning/config.json +18 -0
- package/skills/continuous-learning/evaluate-session.sh +69 -0
- package/skills/continuous-learning-v2/SKILL.md +365 -0
- package/skills/continuous-learning-v2/agents/observer-loop.sh +282 -0
- package/skills/continuous-learning-v2/agents/observer.md +198 -0
- package/skills/continuous-learning-v2/agents/session-guardian.sh +150 -0
- package/skills/continuous-learning-v2/agents/start-observer.sh +244 -0
- package/skills/continuous-learning-v2/config.json +8 -0
- package/skills/continuous-learning-v2/hooks/observe.sh +428 -0
- package/skills/continuous-learning-v2/scripts/detect-project.sh +228 -0
- package/skills/continuous-learning-v2/scripts/instinct-cli.py +1426 -0
- package/skills/continuous-learning-v2/scripts/test_parse_instinct.py +984 -0
- package/skills/cost-aware-llm-pipeline/SKILL.md +183 -0
- package/skills/council/SKILL.md +203 -0
- package/skills/cpp-coding-standards/SKILL.md +723 -0
- package/skills/cpp-testing/SKILL.md +324 -0
- package/skills/crosspost/SKILL.md +111 -0
- package/skills/csharp-testing/SKILL.md +321 -0
- package/skills/customer-billing-ops/SKILL.md +140 -0
- package/skills/customs-trade-compliance/SKILL.md +263 -0
- package/skills/dart-flutter-patterns/SKILL.md +563 -0
- package/skills/dashboard-builder/SKILL.md +108 -0
- package/skills/data-scraper-agent/SKILL.md +764 -0
- package/skills/database-migrations/SKILL.md +429 -0
- package/skills/deep-research/SKILL.md +155 -0
- package/skills/defi-amm-security/SKILL.md +160 -0
- package/skills/deployment-patterns/SKILL.md +427 -0
- package/skills/design-system/SKILL.md +82 -0
- package/skills/django-patterns/SKILL.md +734 -0
- package/skills/django-security/SKILL.md +593 -0
- package/skills/django-tdd/SKILL.md +729 -0
- package/skills/django-verification/SKILL.md +469 -0
- package/skills/dmux-workflows/SKILL.md +191 -0
- package/skills/docker-patterns/SKILL.md +364 -0
- package/skills/documentation-lookup/SKILL.md +90 -0
- package/skills/dotnet-patterns/SKILL.md +321 -0
- package/skills/e2e-testing/SKILL.md +326 -0
- package/skills/ecc-tools-cost-audit/SKILL.md +160 -0
- package/skills/email-ops/SKILL.md +121 -0
- package/skills/energy-procurement/SKILL.md +228 -0
- package/skills/enterprise-agent-ops/SKILL.md +50 -0
- package/skills/eval-harness/SKILL.md +270 -0
- package/skills/evm-token-decimals/SKILL.md +130 -0
- package/skills/exa-search/SKILL.md +103 -0
- package/skills/fal-ai-media/SKILL.md +284 -0
- package/skills/finance-billing-ops/SKILL.md +127 -0
- package/skills/flutter-dart-code-review/SKILL.md +435 -0
- package/skills/foundation-models-on-device/SKILL.md +243 -0
- package/skills/frontend-design/SKILL.md +145 -0
- package/skills/frontend-patterns/SKILL.md +642 -0
- package/skills/frontend-slides/SKILL.md +184 -0
- package/skills/frontend-slides/STYLE_PRESETS.md +330 -0
- package/skills/gan-style-harness/SKILL.md +278 -0
- package/skills/git-workflow/SKILL.md +715 -0
- package/skills/github-ops/SKILL.md +144 -0
- package/skills/golang-patterns/SKILL.md +674 -0
- package/skills/golang-testing/SKILL.md +720 -0
- package/skills/google-workspace-ops/SKILL.md +95 -0
- package/skills/healthcare-cdss-patterns/SKILL.md +245 -0
- package/skills/healthcare-emr-patterns/SKILL.md +159 -0
- package/skills/healthcare-eval-harness/SKILL.md +207 -0
- package/skills/healthcare-phi-compliance/SKILL.md +145 -0
- package/skills/hexagonal-architecture/SKILL.md +276 -0
- package/skills/hipaa-compliance/SKILL.md +78 -0
- package/skills/hookify-rules/SKILL.md +128 -0
- package/skills/inventory-demand-planning/SKILL.md +247 -0
- package/skills/investor-materials/SKILL.md +96 -0
- package/skills/investor-outreach/SKILL.md +91 -0
- package/skills/iterative-retrieval/SKILL.md +211 -0
- package/skills/java-coding-standards/SKILL.md +147 -0
- package/skills/jira-integration/SKILL.md +293 -0
- package/skills/jpa-patterns/SKILL.md +151 -0
- package/skills/knowledge-ops/SKILL.md +154 -0
- package/skills/kotlin-coroutines-flows/SKILL.md +284 -0
- package/skills/kotlin-exposed-patterns/SKILL.md +719 -0
- package/skills/kotlin-ktor-patterns/SKILL.md +689 -0
- package/skills/kotlin-patterns/SKILL.md +711 -0
- package/skills/kotlin-testing/SKILL.md +824 -0
- package/skills/laravel-patterns/SKILL.md +415 -0
- package/skills/laravel-plugin-discovery/SKILL.md +229 -0
- package/skills/laravel-security/SKILL.md +285 -0
- package/skills/laravel-tdd/SKILL.md +283 -0
- package/skills/laravel-verification/SKILL.md +179 -0
- package/skills/lead-intelligence/SKILL.md +321 -0
- package/skills/lead-intelligence/agents/enrichment-agent.md +85 -0
- package/skills/lead-intelligence/agents/mutual-mapper.md +75 -0
- package/skills/lead-intelligence/agents/outreach-drafter.md +98 -0
- package/skills/lead-intelligence/agents/signal-scorer.md +60 -0
- package/skills/liquid-glass-design/SKILL.md +279 -0
- package/skills/llm-trading-agent-security/SKILL.md +146 -0
- package/skills/logistics-exception-management/SKILL.md +222 -0
- package/skills/manim-video/SKILL.md +89 -0
- package/skills/manim-video/assets/network_graph_scene.py +52 -0
- package/skills/market-research/SKILL.md +75 -0
- package/skills/mcp-server-patterns/SKILL.md +69 -0
- package/skills/messages-ops/SKILL.md +104 -0
- package/skills/nanoclaw-repl/SKILL.md +33 -0
- package/skills/nestjs-patterns/SKILL.md +230 -0
- package/skills/nextjs-turbopack/SKILL.md +44 -0
- package/skills/nodejs-keccak256/SKILL.md +102 -0
- package/skills/nutrient-document-processing/SKILL.md +167 -0
- package/skills/nuxt4-patterns/SKILL.md +100 -0
- package/skills/openclaw-persona-forge/SKILL.md +296 -0
- package/skills/openclaw-persona-forge/gacha.py +224 -0
- package/skills/openclaw-persona-forge/gacha.sh +5 -0
- package/skills/openclaw-persona-forge/references/avatar-style.md +124 -0
- package/skills/openclaw-persona-forge/references/boundary-rules.md +53 -0
- package/skills/openclaw-persona-forge/references/error-handling.md +53 -0
- package/skills/openclaw-persona-forge/references/identity-tension.md +48 -0
- package/skills/openclaw-persona-forge/references/naming-system.md +39 -0
- package/skills/openclaw-persona-forge/references/output-template.md +166 -0
- package/skills/opensource-pipeline/SKILL.md +255 -0
- package/skills/pencil-design/SKILL.md +175 -0
- package/skills/perl-patterns/SKILL.md +504 -0
- package/skills/perl-security/SKILL.md +503 -0
- package/skills/perl-testing/SKILL.md +475 -0
- package/skills/plankton-code-quality/SKILL.md +236 -0
- package/skills/postgres-patterns/SKILL.md +147 -0
- package/skills/product-capability/SKILL.md +141 -0
- package/skills/product-lens/SKILL.md +92 -0
- package/skills/production-scheduling/SKILL.md +238 -0
- package/skills/project-flow-ops/SKILL.md +111 -0
- package/skills/prompt-optimizer/SKILL.md +397 -0
- package/skills/python-patterns/SKILL.md +750 -0
- package/skills/python-testing/SKILL.md +816 -0
- package/skills/pytorch-patterns/SKILL.md +396 -0
- package/skills/quality-nonconformance/SKILL.md +260 -0
- package/skills/ralphinho-rfc-pipeline/SKILL.md +67 -0
- package/skills/regex-vs-llm-structured-text/SKILL.md +220 -0
- package/skills/remotion-video-creation/SKILL.md +43 -0
- package/skills/remotion-video-creation/rules/3d.md +86 -0
- package/skills/remotion-video-creation/rules/animations.md +29 -0
- package/skills/remotion-video-creation/rules/assets/charts-bar-chart.tsx +173 -0
- package/skills/remotion-video-creation/rules/assets/text-animations-typewriter.tsx +100 -0
- package/skills/remotion-video-creation/rules/assets/text-animations-word-highlight.tsx +108 -0
- package/skills/remotion-video-creation/rules/assets.md +78 -0
- package/skills/remotion-video-creation/rules/audio.md +172 -0
- package/skills/remotion-video-creation/rules/calculate-metadata.md +104 -0
- package/skills/remotion-video-creation/rules/can-decode.md +75 -0
- package/skills/remotion-video-creation/rules/charts.md +58 -0
- package/skills/remotion-video-creation/rules/compositions.md +146 -0
- package/skills/remotion-video-creation/rules/display-captions.md +126 -0
- package/skills/remotion-video-creation/rules/extract-frames.md +229 -0
- package/skills/remotion-video-creation/rules/fonts.md +152 -0
- package/skills/remotion-video-creation/rules/get-audio-duration.md +58 -0
- package/skills/remotion-video-creation/rules/get-video-dimensions.md +68 -0
- package/skills/remotion-video-creation/rules/get-video-duration.md +58 -0
- package/skills/remotion-video-creation/rules/gifs.md +138 -0
- package/skills/remotion-video-creation/rules/images.md +130 -0
- package/skills/remotion-video-creation/rules/import-srt-captions.md +67 -0
- package/skills/remotion-video-creation/rules/lottie.md +67 -0
- package/skills/remotion-video-creation/rules/measuring-dom-nodes.md +34 -0
- package/skills/remotion-video-creation/rules/measuring-text.md +143 -0
- package/skills/remotion-video-creation/rules/sequencing.md +106 -0
- package/skills/remotion-video-creation/rules/tailwind.md +11 -0
- package/skills/remotion-video-creation/rules/text-animations.md +20 -0
- package/skills/remotion-video-creation/rules/timing.md +179 -0
- package/skills/remotion-video-creation/rules/transcribe-captions.md +19 -0
- package/skills/remotion-video-creation/rules/transitions.md +122 -0
- package/skills/remotion-video-creation/rules/trimming.md +52 -0
- package/skills/remotion-video-creation/rules/videos.md +171 -0
- package/skills/repo-scan/SKILL.md +78 -0
- package/skills/research-ops/SKILL.md +112 -0
- package/skills/returns-reverse-logistics/SKILL.md +240 -0
- package/skills/rules-distill/SKILL.md +264 -0
- package/skills/rules-distill/scripts/scan-rules.sh +58 -0
- package/skills/rules-distill/scripts/scan-skills.sh +129 -0
- package/skills/rust-patterns/SKILL.md +499 -0
- package/skills/rust-testing/SKILL.md +500 -0
- package/skills/safety-guard/SKILL.md +75 -0
- package/skills/santa-method/SKILL.md +306 -0
- package/skills/search-first/SKILL.md +161 -0
- package/skills/security-bounty-hunter/SKILL.md +99 -0
- package/skills/security-review/SKILL.md +495 -0
- package/skills/security-review/cloud-infrastructure-security.md +361 -0
- package/skills/security-scan/SKILL.md +165 -0
- package/skills/seo/SKILL.md +154 -0
- package/skills/skill-comply/SKILL.md +58 -0
- package/skills/skill-comply/fixtures/compliant_trace.jsonl +5 -0
- package/skills/skill-comply/fixtures/noncompliant_trace.jsonl +3 -0
- package/skills/skill-comply/fixtures/tdd_spec.yaml +44 -0
- package/skills/skill-comply/prompts/classifier.md +24 -0
- package/skills/skill-comply/prompts/scenario_generator.md +62 -0
- package/skills/skill-comply/prompts/spec_generator.md +42 -0
- package/skills/skill-comply/pyproject.toml +15 -0
- package/skills/skill-comply/scripts/__init__.py +0 -0
- package/skills/skill-comply/scripts/classifier.py +85 -0
- package/skills/skill-comply/scripts/grader.py +122 -0
- package/skills/skill-comply/scripts/parser.py +107 -0
- package/skills/skill-comply/scripts/report.py +170 -0
- package/skills/skill-comply/scripts/run.py +127 -0
- package/skills/skill-comply/scripts/runner.py +161 -0
- package/skills/skill-comply/scripts/scenario_generator.py +70 -0
- package/skills/skill-comply/scripts/spec_generator.py +72 -0
- package/skills/skill-comply/scripts/utils.py +13 -0
- package/skills/skill-comply/tests/test_grader.py +137 -0
- package/skills/skill-comply/tests/test_parser.py +90 -0
- package/skills/skill-stocktake/SKILL.md +193 -0
- package/skills/skill-stocktake/scripts/quick-diff.sh +87 -0
- package/skills/skill-stocktake/scripts/save-results.sh +56 -0
- package/skills/skill-stocktake/scripts/scan.sh +170 -0
- package/skills/social-graph-ranker/SKILL.md +154 -0
- package/skills/springboot-patterns/SKILL.md +314 -0
- package/skills/springboot-security/SKILL.md +272 -0
- package/skills/springboot-tdd/SKILL.md +158 -0
- package/skills/springboot-verification/SKILL.md +231 -0
- package/skills/strategic-compact/SKILL.md +131 -0
- package/skills/strategic-compact/suggest-compact.sh +54 -0
- package/skills/swift-actor-persistence/SKILL.md +143 -0
- package/skills/swift-concurrency-6-2/SKILL.md +216 -0
- package/skills/swift-protocol-di-testing/SKILL.md +190 -0
- package/skills/swiftui-patterns/SKILL.md +259 -0
- package/skills/tdd-workflow/SKILL.md +463 -0
- package/skills/team-builder/SKILL.md +168 -0
- package/skills/terminal-ops/SKILL.md +109 -0
- package/skills/token-budget-advisor/SKILL.md +133 -0
- package/skills/ui-demo/SKILL.md +465 -0
- package/skills/unified-notifications-ops/SKILL.md +187 -0
- package/skills/verification-loop/SKILL.md +126 -0
- package/skills/video-editing/SKILL.md +310 -0
- package/skills/videodb/SKILL.md +374 -0
- package/skills/videodb/reference/api-reference.md +550 -0
- package/skills/videodb/reference/capture-reference.md +407 -0
- package/skills/videodb/reference/capture.md +101 -0
- package/skills/videodb/reference/editor.md +443 -0
- package/skills/videodb/reference/generative.md +331 -0
- package/skills/videodb/reference/rtstream-reference.md +564 -0
- package/skills/videodb/reference/rtstream.md +65 -0
- package/skills/videodb/reference/search.md +230 -0
- package/skills/videodb/reference/streaming.md +406 -0
- package/skills/videodb/reference/use-cases.md +118 -0
- package/skills/videodb/scripts/ws_listener.py +282 -0
- package/skills/visa-doc-translate/README.md +86 -0
- package/skills/visa-doc-translate/SKILL.md +117 -0
- package/skills/workspace-surface-audit/SKILL.md +125 -0
- package/skills/x-api/SKILL.md +230 -0
- package/tools/changed-files.ts +83 -0
- package/tools/check-coverage.ts +172 -0
- package/tools/format-code.ts +70 -0
- package/tools/git-summary.ts +56 -0
- package/tools/index.ts +14 -0
- package/tools/lint-check.ts +87 -0
- package/tools/run-tests.ts +141 -0
- package/tools/security-audit.ts +279 -0
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
| name | description |
|
|
2
|
+
|------|-------------|
|
|
3
|
+
| cloud-infrastructure-security | Use this skill when deploying to cloud platforms, configuring infrastructure, managing IAM policies, setting up logging/monitoring, or implementing CI/CD pipelines. Provides cloud security checklist aligned with best practices. |
|
|
4
|
+
|
|
5
|
+
# Cloud & Infrastructure Security Skill
|
|
6
|
+
|
|
7
|
+
This skill ensures cloud infrastructure, CI/CD pipelines, and deployment configurations follow security best practices and comply with industry standards.
|
|
8
|
+
|
|
9
|
+
## When to Activate
|
|
10
|
+
|
|
11
|
+
- Deploying applications to cloud platforms (AWS, Vercel, Railway, Cloudflare)
|
|
12
|
+
- Configuring IAM roles and permissions
|
|
13
|
+
- Setting up CI/CD pipelines
|
|
14
|
+
- Implementing infrastructure as code (Terraform, CloudFormation)
|
|
15
|
+
- Configuring logging and monitoring
|
|
16
|
+
- Managing secrets in cloud environments
|
|
17
|
+
- Setting up CDN and edge security
|
|
18
|
+
- Implementing disaster recovery and backup strategies
|
|
19
|
+
|
|
20
|
+
## Cloud Security Checklist
|
|
21
|
+
|
|
22
|
+
### 1. IAM & Access Control
|
|
23
|
+
|
|
24
|
+
#### Principle of Least Privilege
|
|
25
|
+
|
|
26
|
+
```yaml
|
|
27
|
+
# PASS: CORRECT: Minimal permissions
|
|
28
|
+
iam_role:
|
|
29
|
+
permissions:
|
|
30
|
+
- s3:GetObject # Only read access
|
|
31
|
+
- s3:ListBucket
|
|
32
|
+
resources:
|
|
33
|
+
- arn:aws:s3:::my-bucket/* # Specific bucket only
|
|
34
|
+
|
|
35
|
+
# FAIL: WRONG: Overly broad permissions
|
|
36
|
+
iam_role:
|
|
37
|
+
permissions:
|
|
38
|
+
- s3:* # All S3 actions
|
|
39
|
+
resources:
|
|
40
|
+
- "*" # All resources
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
#### Multi-Factor Authentication (MFA)
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
# ALWAYS enable MFA for root/admin accounts
|
|
47
|
+
aws iam enable-mfa-device \
|
|
48
|
+
--user-name admin \
|
|
49
|
+
--serial-number arn:aws:iam::123456789:mfa/admin \
|
|
50
|
+
--authentication-code1 123456 \
|
|
51
|
+
--authentication-code2 789012
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
#### Verification Steps
|
|
55
|
+
|
|
56
|
+
- [ ] No root account usage in production
|
|
57
|
+
- [ ] MFA enabled for all privileged accounts
|
|
58
|
+
- [ ] Service accounts use roles, not long-lived credentials
|
|
59
|
+
- [ ] IAM policies follow least privilege
|
|
60
|
+
- [ ] Regular access reviews conducted
|
|
61
|
+
- [ ] Unused credentials rotated or removed
|
|
62
|
+
|
|
63
|
+
### 2. Secrets Management
|
|
64
|
+
|
|
65
|
+
#### Cloud Secrets Managers
|
|
66
|
+
|
|
67
|
+
```typescript
|
|
68
|
+
// PASS: CORRECT: Use cloud secrets manager
|
|
69
|
+
import { SecretsManager } from '@aws-sdk/client-secrets-manager';
|
|
70
|
+
|
|
71
|
+
const client = new SecretsManager({ region: 'us-east-1' });
|
|
72
|
+
const secret = await client.getSecretValue({ SecretId: 'prod/api-key' });
|
|
73
|
+
const apiKey = JSON.parse(secret.SecretString).key;
|
|
74
|
+
|
|
75
|
+
// FAIL: WRONG: Hardcoded or in environment variables only
|
|
76
|
+
const apiKey = process.env.API_KEY; // Not rotated, not audited
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
#### Secrets Rotation
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
# Set up automatic rotation for database credentials
|
|
83
|
+
aws secretsmanager rotate-secret \
|
|
84
|
+
--secret-id prod/db-password \
|
|
85
|
+
--rotation-lambda-arn arn:aws:lambda:region:account:function:rotate \
|
|
86
|
+
--rotation-rules AutomaticallyAfterDays=30
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
#### Verification Steps
|
|
90
|
+
|
|
91
|
+
- [ ] All secrets stored in cloud secrets manager (AWS Secrets Manager, Vercel Secrets)
|
|
92
|
+
- [ ] Automatic rotation enabled for database credentials
|
|
93
|
+
- [ ] API keys rotated at least quarterly
|
|
94
|
+
- [ ] No secrets in code, logs, or error messages
|
|
95
|
+
- [ ] Audit logging enabled for secret access
|
|
96
|
+
|
|
97
|
+
### 3. Network Security
|
|
98
|
+
|
|
99
|
+
#### VPC and Firewall Configuration
|
|
100
|
+
|
|
101
|
+
```terraform
|
|
102
|
+
# PASS: CORRECT: Restricted security group
|
|
103
|
+
resource "aws_security_group" "app" {
|
|
104
|
+
name = "app-sg"
|
|
105
|
+
|
|
106
|
+
ingress {
|
|
107
|
+
from_port = 443
|
|
108
|
+
to_port = 443
|
|
109
|
+
protocol = "tcp"
|
|
110
|
+
cidr_blocks = ["10.0.0.0/16"] # Internal VPC only
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
egress {
|
|
114
|
+
from_port = 443
|
|
115
|
+
to_port = 443
|
|
116
|
+
protocol = "tcp"
|
|
117
|
+
cidr_blocks = ["0.0.0.0/0"] # Only HTTPS outbound
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
# FAIL: WRONG: Open to the internet
|
|
122
|
+
resource "aws_security_group" "bad" {
|
|
123
|
+
ingress {
|
|
124
|
+
from_port = 0
|
|
125
|
+
to_port = 65535
|
|
126
|
+
protocol = "tcp"
|
|
127
|
+
cidr_blocks = ["0.0.0.0/0"] # All ports, all IPs!
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
#### Verification Steps
|
|
133
|
+
|
|
134
|
+
- [ ] Database not publicly accessible
|
|
135
|
+
- [ ] SSH/RDP ports restricted to VPN/bastion only
|
|
136
|
+
- [ ] Security groups follow least privilege
|
|
137
|
+
- [ ] Network ACLs configured
|
|
138
|
+
- [ ] VPC flow logs enabled
|
|
139
|
+
|
|
140
|
+
### 4. Logging & Monitoring
|
|
141
|
+
|
|
142
|
+
#### CloudWatch/Logging Configuration
|
|
143
|
+
|
|
144
|
+
```typescript
|
|
145
|
+
// PASS: CORRECT: Comprehensive logging
|
|
146
|
+
import { CloudWatchLogsClient, CreateLogStreamCommand } from '@aws-sdk/client-cloudwatch-logs';
|
|
147
|
+
|
|
148
|
+
const logSecurityEvent = async (event: SecurityEvent) => {
|
|
149
|
+
await cloudwatch.putLogEvents({
|
|
150
|
+
logGroupName: '/aws/security/events',
|
|
151
|
+
logStreamName: 'authentication',
|
|
152
|
+
logEvents: [{
|
|
153
|
+
timestamp: Date.now(),
|
|
154
|
+
message: JSON.stringify({
|
|
155
|
+
type: event.type,
|
|
156
|
+
userId: event.userId,
|
|
157
|
+
ip: event.ip,
|
|
158
|
+
result: event.result,
|
|
159
|
+
// Never log sensitive data
|
|
160
|
+
})
|
|
161
|
+
}]
|
|
162
|
+
});
|
|
163
|
+
};
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
#### Verification Steps
|
|
167
|
+
|
|
168
|
+
- [ ] CloudWatch/logging enabled for all services
|
|
169
|
+
- [ ] Failed authentication attempts logged
|
|
170
|
+
- [ ] Admin actions audited
|
|
171
|
+
- [ ] Log retention configured (90+ days for compliance)
|
|
172
|
+
- [ ] Alerts configured for suspicious activity
|
|
173
|
+
- [ ] Logs centralized and tamper-proof
|
|
174
|
+
|
|
175
|
+
### 5. CI/CD Pipeline Security
|
|
176
|
+
|
|
177
|
+
#### Secure Pipeline Configuration
|
|
178
|
+
|
|
179
|
+
```yaml
|
|
180
|
+
# PASS: CORRECT: Secure GitHub Actions workflow
|
|
181
|
+
name: Deploy
|
|
182
|
+
|
|
183
|
+
on:
|
|
184
|
+
push:
|
|
185
|
+
branches: [main]
|
|
186
|
+
|
|
187
|
+
jobs:
|
|
188
|
+
deploy:
|
|
189
|
+
runs-on: ubuntu-latest
|
|
190
|
+
permissions:
|
|
191
|
+
contents: read # Minimal permissions
|
|
192
|
+
|
|
193
|
+
steps:
|
|
194
|
+
- uses: actions/checkout@v4
|
|
195
|
+
|
|
196
|
+
# Scan for secrets
|
|
197
|
+
- name: Secret scanning
|
|
198
|
+
uses: trufflesecurity/trufflehog@main
|
|
199
|
+
|
|
200
|
+
# Dependency audit
|
|
201
|
+
- name: Audit dependencies
|
|
202
|
+
run: npm audit --audit-level=high
|
|
203
|
+
|
|
204
|
+
# Use OIDC, not long-lived tokens
|
|
205
|
+
- name: Configure AWS credentials
|
|
206
|
+
uses: aws-actions/configure-aws-credentials@v4
|
|
207
|
+
with:
|
|
208
|
+
role-to-assume: arn:aws:iam::123456789:role/GitHubActionsRole
|
|
209
|
+
aws-region: us-east-1
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
#### Supply Chain Security
|
|
213
|
+
|
|
214
|
+
```json
|
|
215
|
+
// package.json - Use lock files and integrity checks
|
|
216
|
+
{
|
|
217
|
+
"scripts": {
|
|
218
|
+
"install": "npm ci", // Use ci for reproducible builds
|
|
219
|
+
"audit": "npm audit --audit-level=moderate",
|
|
220
|
+
"check": "npm outdated"
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
#### Verification Steps
|
|
226
|
+
|
|
227
|
+
- [ ] OIDC used instead of long-lived credentials
|
|
228
|
+
- [ ] Secrets scanning in pipeline
|
|
229
|
+
- [ ] Dependency vulnerability scanning
|
|
230
|
+
- [ ] Container image scanning (if applicable)
|
|
231
|
+
- [ ] Branch protection rules enforced
|
|
232
|
+
- [ ] Code review required before merge
|
|
233
|
+
- [ ] Signed commits enforced
|
|
234
|
+
|
|
235
|
+
### 6. Cloudflare & CDN Security
|
|
236
|
+
|
|
237
|
+
#### Cloudflare Security Configuration
|
|
238
|
+
|
|
239
|
+
```typescript
|
|
240
|
+
// PASS: CORRECT: Cloudflare Workers with security headers
|
|
241
|
+
export default {
|
|
242
|
+
async fetch(request: Request): Promise<Response> {
|
|
243
|
+
const response = await fetch(request);
|
|
244
|
+
|
|
245
|
+
// Add security headers
|
|
246
|
+
const headers = new Headers(response.headers);
|
|
247
|
+
headers.set('X-Frame-Options', 'DENY');
|
|
248
|
+
headers.set('X-Content-Type-Options', 'nosniff');
|
|
249
|
+
headers.set('Referrer-Policy', 'strict-origin-when-cross-origin');
|
|
250
|
+
headers.set('Permissions-Policy', 'geolocation=(), microphone=()');
|
|
251
|
+
|
|
252
|
+
return new Response(response.body, {
|
|
253
|
+
status: response.status,
|
|
254
|
+
headers
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
};
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
#### WAF Rules
|
|
261
|
+
|
|
262
|
+
```bash
|
|
263
|
+
# Enable Cloudflare WAF managed rules
|
|
264
|
+
# - OWASP Core Ruleset
|
|
265
|
+
# - Cloudflare Managed Ruleset
|
|
266
|
+
# - Rate limiting rules
|
|
267
|
+
# - Bot protection
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
#### Verification Steps
|
|
271
|
+
|
|
272
|
+
- [ ] WAF enabled with OWASP rules
|
|
273
|
+
- [ ] Rate limiting configured
|
|
274
|
+
- [ ] Bot protection active
|
|
275
|
+
- [ ] DDoS protection enabled
|
|
276
|
+
- [ ] Security headers configured
|
|
277
|
+
- [ ] SSL/TLS strict mode enabled
|
|
278
|
+
|
|
279
|
+
### 7. Backup & Disaster Recovery
|
|
280
|
+
|
|
281
|
+
#### Automated Backups
|
|
282
|
+
|
|
283
|
+
```terraform
|
|
284
|
+
# PASS: CORRECT: Automated RDS backups
|
|
285
|
+
resource "aws_db_instance" "main" {
|
|
286
|
+
allocated_storage = 20
|
|
287
|
+
engine = "postgres"
|
|
288
|
+
|
|
289
|
+
backup_retention_period = 30 # 30 days retention
|
|
290
|
+
backup_window = "03:00-04:00"
|
|
291
|
+
maintenance_window = "mon:04:00-mon:05:00"
|
|
292
|
+
|
|
293
|
+
enabled_cloudwatch_logs_exports = ["postgresql"]
|
|
294
|
+
|
|
295
|
+
deletion_protection = true # Prevent accidental deletion
|
|
296
|
+
}
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
#### Verification Steps
|
|
300
|
+
|
|
301
|
+
- [ ] Automated daily backups configured
|
|
302
|
+
- [ ] Backup retention meets compliance requirements
|
|
303
|
+
- [ ] Point-in-time recovery enabled
|
|
304
|
+
- [ ] Backup testing performed quarterly
|
|
305
|
+
- [ ] Disaster recovery plan documented
|
|
306
|
+
- [ ] RPO and RTO defined and tested
|
|
307
|
+
|
|
308
|
+
## Pre-Deployment Cloud Security Checklist
|
|
309
|
+
|
|
310
|
+
Before ANY production cloud deployment:
|
|
311
|
+
|
|
312
|
+
- [ ] **IAM**: Root account not used, MFA enabled, least privilege policies
|
|
313
|
+
- [ ] **Secrets**: All secrets in cloud secrets manager with rotation
|
|
314
|
+
- [ ] **Network**: Security groups restricted, no public databases
|
|
315
|
+
- [ ] **Logging**: CloudWatch/logging enabled with retention
|
|
316
|
+
- [ ] **Monitoring**: Alerts configured for anomalies
|
|
317
|
+
- [ ] **CI/CD**: OIDC auth, secrets scanning, dependency audits
|
|
318
|
+
- [ ] **CDN/WAF**: Cloudflare WAF enabled with OWASP rules
|
|
319
|
+
- [ ] **Encryption**: Data encrypted at rest and in transit
|
|
320
|
+
- [ ] **Backups**: Automated backups with tested recovery
|
|
321
|
+
- [ ] **Compliance**: GDPR/HIPAA requirements met (if applicable)
|
|
322
|
+
- [ ] **Documentation**: Infrastructure documented, runbooks created
|
|
323
|
+
- [ ] **Incident Response**: Security incident plan in place
|
|
324
|
+
|
|
325
|
+
## Common Cloud Security Misconfigurations
|
|
326
|
+
|
|
327
|
+
### S3 Bucket Exposure
|
|
328
|
+
|
|
329
|
+
```bash
|
|
330
|
+
# FAIL: WRONG: Public bucket
|
|
331
|
+
aws s3api put-bucket-acl --bucket my-bucket --acl public-read
|
|
332
|
+
|
|
333
|
+
# PASS: CORRECT: Private bucket with specific access
|
|
334
|
+
aws s3api put-bucket-acl --bucket my-bucket --acl private
|
|
335
|
+
aws s3api put-bucket-policy --bucket my-bucket --policy file://policy.json
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
### RDS Public Access
|
|
339
|
+
|
|
340
|
+
```terraform
|
|
341
|
+
# FAIL: WRONG
|
|
342
|
+
resource "aws_db_instance" "bad" {
|
|
343
|
+
publicly_accessible = true # NEVER do this!
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
# PASS: CORRECT
|
|
347
|
+
resource "aws_db_instance" "good" {
|
|
348
|
+
publicly_accessible = false
|
|
349
|
+
vpc_security_group_ids = [aws_security_group.db.id]
|
|
350
|
+
}
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
## Resources
|
|
354
|
+
|
|
355
|
+
- [AWS Security Best Practices](https://aws.amazon.com/security/best-practices/)
|
|
356
|
+
- [CIS AWS Foundations Benchmark](https://www.cisecurity.org/benchmark/amazon_web_services)
|
|
357
|
+
- [Cloudflare Security Documentation](https://developers.cloudflare.com/security/)
|
|
358
|
+
- [OWASP Cloud Security](https://owasp.org/www-project-cloud-security/)
|
|
359
|
+
- [Terraform Security Best Practices](https://www.terraform.io/docs/cloud/guides/recommended-practices/)
|
|
360
|
+
|
|
361
|
+
**Remember**: Cloud misconfigurations are the leading cause of data breaches. A single exposed S3 bucket or overly permissive IAM policy can compromise your entire infrastructure. Always follow the principle of least privilege and defense in depth.
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: security-scan
|
|
3
|
+
description: Scan your Claude Code configuration (.claude/ directory) for security vulnerabilities, misconfigurations, and injection risks using AgentShield. Checks CLAUDE.md, settings.json, MCP servers, hooks, and agent definitions.
|
|
4
|
+
origin: ECC
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Security Scan Skill
|
|
8
|
+
|
|
9
|
+
Audit your Claude Code configuration for security issues using [AgentShield](https://github.com/affaan-m/agentshield).
|
|
10
|
+
|
|
11
|
+
## When to Activate
|
|
12
|
+
|
|
13
|
+
- Setting up a new Claude Code project
|
|
14
|
+
- After modifying `.claude/settings.json`, `CLAUDE.md`, or MCP configs
|
|
15
|
+
- Before committing configuration changes
|
|
16
|
+
- When onboarding to a new repository with existing Claude Code configs
|
|
17
|
+
- Periodic security hygiene checks
|
|
18
|
+
|
|
19
|
+
## What It Scans
|
|
20
|
+
|
|
21
|
+
| File | Checks |
|
|
22
|
+
|------|--------|
|
|
23
|
+
| `CLAUDE.md` | Hardcoded secrets, auto-run instructions, prompt injection patterns |
|
|
24
|
+
| `settings.json` | Overly permissive allow lists, missing deny lists, dangerous bypass flags |
|
|
25
|
+
| `mcp.json` | Risky MCP servers, hardcoded env secrets, npx supply chain risks |
|
|
26
|
+
| `hooks/` | Command injection via interpolation, data exfiltration, silent error suppression |
|
|
27
|
+
| `agents/*.md` | Unrestricted tool access, prompt injection surface, missing model specs |
|
|
28
|
+
|
|
29
|
+
## Prerequisites
|
|
30
|
+
|
|
31
|
+
AgentShield must be installed. Check and install if needed:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# Check if installed
|
|
35
|
+
npx ecc-agentshield --version
|
|
36
|
+
|
|
37
|
+
# Install globally (recommended)
|
|
38
|
+
npm install -g ecc-agentshield
|
|
39
|
+
|
|
40
|
+
# Or run directly via npx (no install needed)
|
|
41
|
+
npx ecc-agentshield scan .
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Usage
|
|
45
|
+
|
|
46
|
+
### Basic Scan
|
|
47
|
+
|
|
48
|
+
Run against the current project's `.claude/` directory:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
# Scan current project
|
|
52
|
+
npx ecc-agentshield scan
|
|
53
|
+
|
|
54
|
+
# Scan a specific path
|
|
55
|
+
npx ecc-agentshield scan --path /path/to/.claude
|
|
56
|
+
|
|
57
|
+
# Scan with minimum severity filter
|
|
58
|
+
npx ecc-agentshield scan --min-severity medium
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Output Formats
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# Terminal output (default) — colored report with grade
|
|
65
|
+
npx ecc-agentshield scan
|
|
66
|
+
|
|
67
|
+
# JSON — for CI/CD integration
|
|
68
|
+
npx ecc-agentshield scan --format json
|
|
69
|
+
|
|
70
|
+
# Markdown — for documentation
|
|
71
|
+
npx ecc-agentshield scan --format markdown
|
|
72
|
+
|
|
73
|
+
# HTML — self-contained dark-theme report
|
|
74
|
+
npx ecc-agentshield scan --format html > security-report.html
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Auto-Fix
|
|
78
|
+
|
|
79
|
+
Apply safe fixes automatically (only fixes marked as auto-fixable):
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
npx ecc-agentshield scan --fix
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
This will:
|
|
86
|
+
- Replace hardcoded secrets with environment variable references
|
|
87
|
+
- Tighten wildcard permissions to scoped alternatives
|
|
88
|
+
- Never modify manual-only suggestions
|
|
89
|
+
|
|
90
|
+
### Opus 4.6 Deep Analysis
|
|
91
|
+
|
|
92
|
+
Run the adversarial three-agent pipeline for deeper analysis:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
# Requires ANTHROPIC_API_KEY
|
|
96
|
+
export ANTHROPIC_API_KEY=your-key
|
|
97
|
+
npx ecc-agentshield scan --opus --stream
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
This runs:
|
|
101
|
+
1. **Attacker (Red Team)** — finds attack vectors
|
|
102
|
+
2. **Defender (Blue Team)** — recommends hardening
|
|
103
|
+
3. **Auditor (Final Verdict)** — synthesizes both perspectives
|
|
104
|
+
|
|
105
|
+
### Initialize Secure Config
|
|
106
|
+
|
|
107
|
+
Scaffold a new secure `.claude/` configuration from scratch:
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
npx ecc-agentshield init
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Creates:
|
|
114
|
+
- `settings.json` with scoped permissions and deny list
|
|
115
|
+
- `CLAUDE.md` with security best practices
|
|
116
|
+
- `mcp.json` placeholder
|
|
117
|
+
|
|
118
|
+
### GitHub Action
|
|
119
|
+
|
|
120
|
+
Add to your CI pipeline:
|
|
121
|
+
|
|
122
|
+
```yaml
|
|
123
|
+
- uses: affaan-m/agentshield@v1
|
|
124
|
+
with:
|
|
125
|
+
path: '.'
|
|
126
|
+
min-severity: 'medium'
|
|
127
|
+
fail-on-findings: true
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## Severity Levels
|
|
131
|
+
|
|
132
|
+
| Grade | Score | Meaning |
|
|
133
|
+
|-------|-------|---------|
|
|
134
|
+
| A | 90-100 | Secure configuration |
|
|
135
|
+
| B | 75-89 | Minor issues |
|
|
136
|
+
| C | 60-74 | Needs attention |
|
|
137
|
+
| D | 40-59 | Significant risks |
|
|
138
|
+
| F | 0-39 | Critical vulnerabilities |
|
|
139
|
+
|
|
140
|
+
## Interpreting Results
|
|
141
|
+
|
|
142
|
+
### Critical Findings (fix immediately)
|
|
143
|
+
- Hardcoded API keys or tokens in config files
|
|
144
|
+
- `Bash(*)` in the allow list (unrestricted shell access)
|
|
145
|
+
- Command injection in hooks via `${file}` interpolation
|
|
146
|
+
- Shell-running MCP servers
|
|
147
|
+
|
|
148
|
+
### High Findings (fix before production)
|
|
149
|
+
- Auto-run instructions in CLAUDE.md (prompt injection vector)
|
|
150
|
+
- Missing deny lists in permissions
|
|
151
|
+
- Agents with unnecessary Bash access
|
|
152
|
+
|
|
153
|
+
### Medium Findings (recommended)
|
|
154
|
+
- Silent error suppression in hooks (`2>/dev/null`, `|| true`)
|
|
155
|
+
- Missing PreToolUse security hooks
|
|
156
|
+
- `npx -y` auto-install in MCP server configs
|
|
157
|
+
|
|
158
|
+
### Info Findings (awareness)
|
|
159
|
+
- Missing descriptions on MCP servers
|
|
160
|
+
- Prohibitive instructions correctly flagged as good practice
|
|
161
|
+
|
|
162
|
+
## Links
|
|
163
|
+
|
|
164
|
+
- **GitHub**: [github.com/affaan-m/agentshield](https://github.com/affaan-m/agentshield)
|
|
165
|
+
- **npm**: [npmjs.com/package/ecc-agentshield](https://www.npmjs.com/package/ecc-agentshield)
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: seo
|
|
3
|
+
description: Audit, plan, and implement SEO improvements across technical SEO, on-page optimization, structured data, Core Web Vitals, and content strategy. Use when the user wants better search visibility, SEO remediation, schema markup, sitemap/robots work, or keyword mapping.
|
|
4
|
+
origin: ECC
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# SEO
|
|
8
|
+
|
|
9
|
+
Improve search visibility through technical correctness, performance, and content relevance, not gimmicks.
|
|
10
|
+
|
|
11
|
+
## When to Use
|
|
12
|
+
|
|
13
|
+
Use this skill when:
|
|
14
|
+
- auditing crawlability, indexability, canonicals, or redirects
|
|
15
|
+
- improving title tags, meta descriptions, and heading structure
|
|
16
|
+
- adding or validating structured data
|
|
17
|
+
- improving Core Web Vitals
|
|
18
|
+
- doing keyword research and mapping keywords to URLs
|
|
19
|
+
- planning internal linking or sitemap / robots changes
|
|
20
|
+
|
|
21
|
+
## How It Works
|
|
22
|
+
|
|
23
|
+
### Principles
|
|
24
|
+
|
|
25
|
+
1. Fix technical blockers before content optimization.
|
|
26
|
+
2. One page should have one clear primary search intent.
|
|
27
|
+
3. Prefer long-term quality signals over manipulative patterns.
|
|
28
|
+
4. Mobile-first assumptions matter because indexing is mobile-first.
|
|
29
|
+
5. Recommendations should be page-specific and implementable.
|
|
30
|
+
|
|
31
|
+
### Technical SEO checklist
|
|
32
|
+
|
|
33
|
+
#### Crawlability
|
|
34
|
+
|
|
35
|
+
- `robots.txt` should allow important pages and block low-value surfaces
|
|
36
|
+
- no important page should be unintentionally `noindex`
|
|
37
|
+
- important pages should be reachable within a shallow click depth
|
|
38
|
+
- avoid redirect chains longer than two hops
|
|
39
|
+
- canonical tags should be self-consistent and non-looping
|
|
40
|
+
|
|
41
|
+
#### Indexability
|
|
42
|
+
|
|
43
|
+
- preferred URL format should be consistent
|
|
44
|
+
- multilingual pages need correct hreflang if used
|
|
45
|
+
- sitemaps should reflect the intended public surface
|
|
46
|
+
- no duplicate URLs should compete without canonical control
|
|
47
|
+
|
|
48
|
+
#### Performance
|
|
49
|
+
|
|
50
|
+
- LCP < 2.5s
|
|
51
|
+
- INP < 200ms
|
|
52
|
+
- CLS < 0.1
|
|
53
|
+
- common fixes: preload hero assets, reduce render-blocking work, reserve layout space, trim heavy JS
|
|
54
|
+
|
|
55
|
+
#### Structured data
|
|
56
|
+
|
|
57
|
+
- homepage: organization or business schema where appropriate
|
|
58
|
+
- editorial pages: `Article` / `BlogPosting`
|
|
59
|
+
- product pages: `Product` and `Offer`
|
|
60
|
+
- interior pages: `BreadcrumbList`
|
|
61
|
+
- Q&A sections: `FAQPage` only when the content truly matches
|
|
62
|
+
|
|
63
|
+
### On-page rules
|
|
64
|
+
|
|
65
|
+
#### Title tags
|
|
66
|
+
|
|
67
|
+
- aim for roughly 50-60 characters
|
|
68
|
+
- put the primary keyword or concept near the front
|
|
69
|
+
- make the title legible to humans, not stuffed for bots
|
|
70
|
+
|
|
71
|
+
#### Meta descriptions
|
|
72
|
+
|
|
73
|
+
- aim for roughly 120-160 characters
|
|
74
|
+
- describe the page honestly
|
|
75
|
+
- include the main topic naturally
|
|
76
|
+
|
|
77
|
+
#### Heading structure
|
|
78
|
+
|
|
79
|
+
- one clear `H1`
|
|
80
|
+
- `H2` and `H3` should reflect actual content hierarchy
|
|
81
|
+
- do not skip structure just for visual styling
|
|
82
|
+
|
|
83
|
+
### Keyword mapping
|
|
84
|
+
|
|
85
|
+
1. define the search intent
|
|
86
|
+
2. gather realistic keyword variants
|
|
87
|
+
3. prioritize by intent match, likely value, and competition
|
|
88
|
+
4. map one primary keyword/theme to one URL
|
|
89
|
+
5. detect and avoid cannibalization
|
|
90
|
+
|
|
91
|
+
### Internal linking
|
|
92
|
+
|
|
93
|
+
- link from strong pages to pages you want to rank
|
|
94
|
+
- use descriptive anchor text
|
|
95
|
+
- avoid generic anchors when a more specific one is possible
|
|
96
|
+
- backfill links from new pages to relevant existing ones
|
|
97
|
+
|
|
98
|
+
## Examples
|
|
99
|
+
|
|
100
|
+
### Title formula
|
|
101
|
+
|
|
102
|
+
```text
|
|
103
|
+
Primary Topic - Specific Modifier | Brand
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Meta description formula
|
|
107
|
+
|
|
108
|
+
```text
|
|
109
|
+
Action + topic + value proposition + one supporting detail
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### JSON-LD example
|
|
113
|
+
|
|
114
|
+
```json
|
|
115
|
+
{
|
|
116
|
+
"@context": "https://schema.org",
|
|
117
|
+
"@type": "Article",
|
|
118
|
+
"headline": "Page Title Here",
|
|
119
|
+
"author": {
|
|
120
|
+
"@type": "Person",
|
|
121
|
+
"name": "Author Name"
|
|
122
|
+
},
|
|
123
|
+
"publisher": {
|
|
124
|
+
"@type": "Organization",
|
|
125
|
+
"name": "Brand Name"
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Audit output shape
|
|
131
|
+
|
|
132
|
+
```text
|
|
133
|
+
[HIGH] Duplicate title tags on product pages
|
|
134
|
+
Location: src/routes/products/[slug].tsx
|
|
135
|
+
Issue: Dynamic titles collapse to the same default string, which weakens relevance and creates duplicate signals.
|
|
136
|
+
Fix: Generate a unique title per product using the product name and primary category.
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## Anti-Patterns
|
|
140
|
+
|
|
141
|
+
| Anti-pattern | Fix |
|
|
142
|
+
| --- | --- |
|
|
143
|
+
| keyword stuffing | write for users first |
|
|
144
|
+
| thin near-duplicate pages | consolidate or differentiate them |
|
|
145
|
+
| schema for content that is not actually present | match schema to reality |
|
|
146
|
+
| content advice without checking the actual page | read the real page first |
|
|
147
|
+
| generic “improve SEO” outputs | tie every recommendation to a page or asset |
|
|
148
|
+
|
|
149
|
+
## Related Skills
|
|
150
|
+
|
|
151
|
+
- `seo-specialist`
|
|
152
|
+
- `frontend-patterns`
|
|
153
|
+
- `brand-voice`
|
|
154
|
+
- `market-research`
|