@raishin/vanguard-frontier-agentic 2.0.0 → 2.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/.claude-plugin/plugin.json +25 -1
- package/.cursor-plugin/plugin.json +25 -1
- package/.github/plugin/marketplace.json +1 -1
- package/README.md +26 -7
- package/agents/marketing/README.md +44 -0
- package/agents/marketing/ai-advertising-targeting-fairness-review-agent/AGENT.md +53 -0
- package/agents/marketing/ai-advertising-targeting-fairness-review-agent/harnesses/claude-code.agent.md +36 -0
- package/agents/marketing/ai-advertising-targeting-fairness-review-agent/harnesses/codex.toml +33 -0
- package/agents/marketing/ai-advertising-targeting-fairness-review-agent/harnesses/copilot.agent.md +36 -0
- package/agents/marketing/ai-advertising-targeting-fairness-review-agent/harnesses/cursor.agent.md +36 -0
- package/agents/marketing/ai-advertising-targeting-fairness-review-agent/harnesses/gemini.agent.md +36 -0
- package/agents/marketing/ai-advertising-targeting-fairness-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/marketing/ai-advertising-targeting-fairness-review-agent/harnesses/kiro-ide.agent.md +36 -0
- package/agents/marketing/ai-advertising-targeting-fairness-review-agent/metadata.json +31 -0
- package/agents/marketing/analytics-data-minimization-review-agent/AGENT.md +51 -0
- package/agents/marketing/analytics-data-minimization-review-agent/harnesses/claude-code.agent.md +34 -0
- package/agents/marketing/analytics-data-minimization-review-agent/harnesses/codex.toml +33 -0
- package/agents/marketing/analytics-data-minimization-review-agent/harnesses/copilot.agent.md +34 -0
- package/agents/marketing/analytics-data-minimization-review-agent/harnesses/cursor.agent.md +34 -0
- package/agents/marketing/analytics-data-minimization-review-agent/harnesses/gemini.agent.md +34 -0
- package/agents/marketing/analytics-data-minimization-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/marketing/analytics-data-minimization-review-agent/harnesses/kiro-ide.agent.md +34 -0
- package/agents/marketing/analytics-data-minimization-review-agent/metadata.json +31 -0
- package/agents/marketing/email-sender-authentication-review-agent/AGENT.md +50 -0
- package/agents/marketing/email-sender-authentication-review-agent/harnesses/claude-code.agent.md +33 -0
- package/agents/marketing/email-sender-authentication-review-agent/harnesses/codex.toml +32 -0
- package/agents/marketing/email-sender-authentication-review-agent/harnesses/copilot.agent.md +33 -0
- package/agents/marketing/email-sender-authentication-review-agent/harnesses/cursor.agent.md +33 -0
- package/agents/marketing/email-sender-authentication-review-agent/harnesses/gemini.agent.md +33 -0
- package/agents/marketing/email-sender-authentication-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/marketing/email-sender-authentication-review-agent/harnesses/kiro-ide.agent.md +33 -0
- package/agents/marketing/email-sender-authentication-review-agent/metadata.json +31 -0
- package/agents/marketing/eu-ai-act-marketing-system-review-agent/AGENT.md +54 -0
- package/agents/marketing/eu-ai-act-marketing-system-review-agent/harnesses/claude-code.agent.md +37 -0
- package/agents/marketing/eu-ai-act-marketing-system-review-agent/harnesses/codex.toml +33 -0
- package/agents/marketing/eu-ai-act-marketing-system-review-agent/harnesses/copilot.agent.md +37 -0
- package/agents/marketing/eu-ai-act-marketing-system-review-agent/harnesses/cursor.agent.md +37 -0
- package/agents/marketing/eu-ai-act-marketing-system-review-agent/harnesses/gemini.agent.md +37 -0
- package/agents/marketing/eu-ai-act-marketing-system-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/marketing/eu-ai-act-marketing-system-review-agent/harnesses/kiro-ide.agent.md +37 -0
- package/agents/marketing/eu-ai-act-marketing-system-review-agent/metadata.json +31 -0
- package/agents/marketing/influencer-disclosure-compliance-review-agent/AGENT.md +52 -0
- package/agents/marketing/influencer-disclosure-compliance-review-agent/harnesses/claude-code.agent.md +35 -0
- package/agents/marketing/influencer-disclosure-compliance-review-agent/harnesses/codex.toml +33 -0
- package/agents/marketing/influencer-disclosure-compliance-review-agent/harnesses/copilot.agent.md +35 -0
- package/agents/marketing/influencer-disclosure-compliance-review-agent/harnesses/cursor.agent.md +35 -0
- package/agents/marketing/influencer-disclosure-compliance-review-agent/harnesses/gemini.agent.md +35 -0
- package/agents/marketing/influencer-disclosure-compliance-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/marketing/influencer-disclosure-compliance-review-agent/harnesses/kiro-ide.agent.md +35 -0
- package/agents/marketing/influencer-disclosure-compliance-review-agent/metadata.json +31 -0
- package/agents/marketing/lookalike-audience-upload-compliance-review-agent/AGENT.md +54 -0
- package/agents/marketing/lookalike-audience-upload-compliance-review-agent/harnesses/claude-code.agent.md +37 -0
- package/agents/marketing/lookalike-audience-upload-compliance-review-agent/harnesses/codex.toml +34 -0
- package/agents/marketing/lookalike-audience-upload-compliance-review-agent/harnesses/copilot.agent.md +37 -0
- package/agents/marketing/lookalike-audience-upload-compliance-review-agent/harnesses/cursor.agent.md +37 -0
- package/agents/marketing/lookalike-audience-upload-compliance-review-agent/harnesses/gemini.agent.md +37 -0
- package/agents/marketing/lookalike-audience-upload-compliance-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/marketing/lookalike-audience-upload-compliance-review-agent/harnesses/kiro-ide.agent.md +37 -0
- package/agents/marketing/lookalike-audience-upload-compliance-review-agent/metadata.json +31 -0
- package/agents/marketing/marketing-consent-data-collection-review-agent/AGENT.md +51 -0
- package/agents/marketing/marketing-consent-data-collection-review-agent/harnesses/claude-code.agent.md +34 -0
- package/agents/marketing/marketing-consent-data-collection-review-agent/harnesses/codex.toml +33 -0
- package/agents/marketing/marketing-consent-data-collection-review-agent/harnesses/copilot.agent.md +34 -0
- package/agents/marketing/marketing-consent-data-collection-review-agent/harnesses/cursor.agent.md +34 -0
- package/agents/marketing/marketing-consent-data-collection-review-agent/harnesses/gemini.agent.md +34 -0
- package/agents/marketing/marketing-consent-data-collection-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/marketing/marketing-consent-data-collection-review-agent/harnesses/kiro-ide.agent.md +34 -0
- package/agents/marketing/marketing-consent-data-collection-review-agent/metadata.json +31 -0
- package/agents/marketing/marketing-conversion-flow-dark-pattern-review-agent/AGENT.md +51 -0
- package/agents/marketing/marketing-conversion-flow-dark-pattern-review-agent/harnesses/claude-code.agent.md +34 -0
- package/agents/marketing/marketing-conversion-flow-dark-pattern-review-agent/harnesses/codex.toml +33 -0
- package/agents/marketing/marketing-conversion-flow-dark-pattern-review-agent/harnesses/copilot.agent.md +34 -0
- package/agents/marketing/marketing-conversion-flow-dark-pattern-review-agent/harnesses/cursor.agent.md +34 -0
- package/agents/marketing/marketing-conversion-flow-dark-pattern-review-agent/harnesses/gemini.agent.md +34 -0
- package/agents/marketing/marketing-conversion-flow-dark-pattern-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/marketing/marketing-conversion-flow-dark-pattern-review-agent/harnesses/kiro-ide.agent.md +34 -0
- package/agents/marketing/marketing-conversion-flow-dark-pattern-review-agent/metadata.json +31 -0
- package/agents/marketing/marketing-email-list-retention-review-agent/AGENT.md +50 -0
- package/agents/marketing/marketing-email-list-retention-review-agent/harnesses/claude-code.agent.md +33 -0
- package/agents/marketing/marketing-email-list-retention-review-agent/harnesses/codex.toml +32 -0
- package/agents/marketing/marketing-email-list-retention-review-agent/harnesses/copilot.agent.md +33 -0
- package/agents/marketing/marketing-email-list-retention-review-agent/harnesses/cursor.agent.md +33 -0
- package/agents/marketing/marketing-email-list-retention-review-agent/harnesses/gemini.agent.md +33 -0
- package/agents/marketing/marketing-email-list-retention-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/marketing/marketing-email-list-retention-review-agent/harnesses/kiro-ide.agent.md +33 -0
- package/agents/marketing/marketing-email-list-retention-review-agent/metadata.json +31 -0
- package/agents/marketing/marketing-gpc-signal-honoring-review-agent/AGENT.md +50 -0
- package/agents/marketing/marketing-gpc-signal-honoring-review-agent/harnesses/claude-code.agent.md +33 -0
- package/agents/marketing/marketing-gpc-signal-honoring-review-agent/harnesses/codex.toml +32 -0
- package/agents/marketing/marketing-gpc-signal-honoring-review-agent/harnesses/copilot.agent.md +33 -0
- package/agents/marketing/marketing-gpc-signal-honoring-review-agent/harnesses/cursor.agent.md +33 -0
- package/agents/marketing/marketing-gpc-signal-honoring-review-agent/harnesses/gemini.agent.md +33 -0
- package/agents/marketing/marketing-gpc-signal-honoring-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/marketing/marketing-gpc-signal-honoring-review-agent/harnesses/kiro-ide.agent.md +33 -0
- package/agents/marketing/marketing-gpc-signal-honoring-review-agent/metadata.json +31 -0
- package/agents/marketing/marketing-maestro-agent/AGENT.md +62 -0
- package/agents/marketing/marketing-maestro-agent/PERMISSIONS.md +75 -0
- package/agents/marketing/marketing-maestro-agent/README.md +62 -0
- package/agents/marketing/marketing-maestro-agent/harnesses/claude-code.agent.md +43 -0
- package/agents/marketing/marketing-maestro-agent/harnesses/codex.toml +35 -0
- package/agents/marketing/marketing-maestro-agent/harnesses/copilot.agent.md +43 -0
- package/agents/marketing/marketing-maestro-agent/harnesses/cursor.agent.md +43 -0
- package/agents/marketing/marketing-maestro-agent/harnesses/gemini.agent.md +43 -0
- package/agents/marketing/marketing-maestro-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/marketing/marketing-maestro-agent/harnesses/kiro-ide.agent.md +43 -0
- package/agents/marketing/marketing-maestro-agent/metadata.json +38 -0
- package/agents/marketing/marketing-pixel-data-leakage-review-agent/AGENT.md +50 -0
- package/agents/marketing/marketing-pixel-data-leakage-review-agent/harnesses/claude-code.agent.md +33 -0
- package/agents/marketing/marketing-pixel-data-leakage-review-agent/harnesses/codex.toml +32 -0
- package/agents/marketing/marketing-pixel-data-leakage-review-agent/harnesses/copilot.agent.md +33 -0
- package/agents/marketing/marketing-pixel-data-leakage-review-agent/harnesses/cursor.agent.md +33 -0
- package/agents/marketing/marketing-pixel-data-leakage-review-agent/harnesses/gemini.agent.md +33 -0
- package/agents/marketing/marketing-pixel-data-leakage-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/marketing/marketing-pixel-data-leakage-review-agent/harnesses/kiro-ide.agent.md +33 -0
- package/agents/marketing/marketing-pixel-data-leakage-review-agent/metadata.json +31 -0
- package/agents/marketing/martech-access-governance-review-agent/AGENT.md +51 -0
- package/agents/marketing/martech-access-governance-review-agent/harnesses/claude-code.agent.md +34 -0
- package/agents/marketing/martech-access-governance-review-agent/harnesses/codex.toml +33 -0
- package/agents/marketing/martech-access-governance-review-agent/harnesses/copilot.agent.md +34 -0
- package/agents/marketing/martech-access-governance-review-agent/harnesses/cursor.agent.md +34 -0
- package/agents/marketing/martech-access-governance-review-agent/harnesses/gemini.agent.md +34 -0
- package/agents/marketing/martech-access-governance-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/marketing/martech-access-governance-review-agent/harnesses/kiro-ide.agent.md +34 -0
- package/agents/marketing/martech-access-governance-review-agent/metadata.json +31 -0
- package/agents/marketing/programmatic-supply-chain-integrity-review-agent/AGENT.md +50 -0
- package/agents/marketing/programmatic-supply-chain-integrity-review-agent/harnesses/claude-code.agent.md +33 -0
- package/agents/marketing/programmatic-supply-chain-integrity-review-agent/harnesses/codex.toml +32 -0
- package/agents/marketing/programmatic-supply-chain-integrity-review-agent/harnesses/copilot.agent.md +33 -0
- package/agents/marketing/programmatic-supply-chain-integrity-review-agent/harnesses/cursor.agent.md +33 -0
- package/agents/marketing/programmatic-supply-chain-integrity-review-agent/harnesses/gemini.agent.md +33 -0
- package/agents/marketing/programmatic-supply-chain-integrity-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/marketing/programmatic-supply-chain-integrity-review-agent/harnesses/kiro-ide.agent.md +33 -0
- package/agents/marketing/programmatic-supply-chain-integrity-review-agent/metadata.json +31 -0
- package/agents/qa/README.md +51 -0
- package/agents/qa/ci-test-pipeline-review-agent/AGENT.md +51 -0
- package/agents/qa/ci-test-pipeline-review-agent/harnesses/claude-code.agent.md +35 -0
- package/agents/qa/ci-test-pipeline-review-agent/harnesses/codex.toml +34 -0
- package/agents/qa/ci-test-pipeline-review-agent/harnesses/copilot.agent.md +35 -0
- package/agents/qa/ci-test-pipeline-review-agent/harnesses/cursor.agent.md +35 -0
- package/agents/qa/ci-test-pipeline-review-agent/harnesses/gemini.agent.md +35 -0
- package/agents/qa/ci-test-pipeline-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/qa/ci-test-pipeline-review-agent/harnesses/kiro-ide.agent.md +35 -0
- package/agents/qa/ci-test-pipeline-review-agent/metadata.json +33 -0
- package/agents/qa/helm-chart-quality-review-agent/AGENT.md +56 -0
- package/agents/qa/helm-chart-quality-review-agent/harnesses/claude-code.agent.md +40 -0
- package/agents/qa/helm-chart-quality-review-agent/harnesses/codex.toml +39 -0
- package/agents/qa/helm-chart-quality-review-agent/harnesses/copilot.agent.md +40 -0
- package/agents/qa/helm-chart-quality-review-agent/harnesses/cursor.agent.md +40 -0
- package/agents/qa/helm-chart-quality-review-agent/harnesses/gemini.agent.md +40 -0
- package/agents/qa/helm-chart-quality-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/qa/helm-chart-quality-review-agent/harnesses/kiro-ide.agent.md +40 -0
- package/agents/qa/helm-chart-quality-review-agent/metadata.json +35 -0
- package/agents/qa/kubernetes-manifest-quality-review-agent/AGENT.md +55 -0
- package/agents/qa/kubernetes-manifest-quality-review-agent/harnesses/claude-code.agent.md +32 -0
- package/agents/qa/kubernetes-manifest-quality-review-agent/harnesses/codex.toml +38 -0
- package/agents/qa/kubernetes-manifest-quality-review-agent/harnesses/copilot.agent.md +32 -0
- package/agents/qa/kubernetes-manifest-quality-review-agent/harnesses/cursor.agent.md +32 -0
- package/agents/qa/kubernetes-manifest-quality-review-agent/harnesses/gemini.agent.md +32 -0
- package/agents/qa/kubernetes-manifest-quality-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/qa/kubernetes-manifest-quality-review-agent/harnesses/kiro-ide.agent.md +32 -0
- package/agents/qa/kubernetes-manifest-quality-review-agent/metadata.json +35 -0
- package/agents/qa/llm-ai-pipeline-test-review-agent/AGENT.md +52 -0
- package/agents/qa/llm-ai-pipeline-test-review-agent/harnesses/claude-code.agent.md +36 -0
- package/agents/qa/llm-ai-pipeline-test-review-agent/harnesses/codex.toml +36 -0
- package/agents/qa/llm-ai-pipeline-test-review-agent/harnesses/copilot.agent.md +36 -0
- package/agents/qa/llm-ai-pipeline-test-review-agent/harnesses/cursor.agent.md +36 -0
- package/agents/qa/llm-ai-pipeline-test-review-agent/harnesses/gemini.agent.md +36 -0
- package/agents/qa/llm-ai-pipeline-test-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/qa/llm-ai-pipeline-test-review-agent/harnesses/kiro-ide.agent.md +36 -0
- package/agents/qa/llm-ai-pipeline-test-review-agent/metadata.json +35 -0
- package/agents/qa/playwright-e2e-execution-run-agent/AGENT.md +50 -0
- package/agents/qa/playwright-e2e-execution-run-agent/harnesses/claude-code.agent.md +39 -0
- package/agents/qa/playwright-e2e-execution-run-agent/harnesses/cursor.agent.md +39 -0
- package/agents/qa/playwright-e2e-execution-run-agent/metadata.json +28 -0
- package/agents/qa/playwright-e2e-suite-review-agent/AGENT.md +51 -0
- package/agents/qa/playwright-e2e-suite-review-agent/harnesses/claude-code.agent.md +35 -0
- package/agents/qa/playwright-e2e-suite-review-agent/harnesses/codex.toml +34 -0
- package/agents/qa/playwright-e2e-suite-review-agent/harnesses/copilot.agent.md +35 -0
- package/agents/qa/playwright-e2e-suite-review-agent/harnesses/cursor.agent.md +35 -0
- package/agents/qa/playwright-e2e-suite-review-agent/harnesses/gemini.agent.md +35 -0
- package/agents/qa/playwright-e2e-suite-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/qa/playwright-e2e-suite-review-agent/harnesses/kiro-ide.agent.md +35 -0
- package/agents/qa/playwright-e2e-suite-review-agent/metadata.json +35 -0
- package/agents/qa/plc-control-logic-safety-review-agent/AGENT.md +53 -0
- package/agents/qa/plc-control-logic-safety-review-agent/harnesses/claude-code.agent.md +37 -0
- package/agents/qa/plc-control-logic-safety-review-agent/harnesses/codex.toml +36 -0
- package/agents/qa/plc-control-logic-safety-review-agent/harnesses/copilot.agent.md +37 -0
- package/agents/qa/plc-control-logic-safety-review-agent/harnesses/cursor.agent.md +37 -0
- package/agents/qa/plc-control-logic-safety-review-agent/harnesses/gemini.agent.md +37 -0
- package/agents/qa/plc-control-logic-safety-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/qa/plc-control-logic-safety-review-agent/harnesses/kiro-ide.agent.md +37 -0
- package/agents/qa/plc-control-logic-safety-review-agent/metadata.json +33 -0
- package/agents/qa/rpa-workflow-resilience-review-agent/AGENT.md +52 -0
- package/agents/qa/rpa-workflow-resilience-review-agent/harnesses/claude-code.agent.md +36 -0
- package/agents/qa/rpa-workflow-resilience-review-agent/harnesses/codex.toml +35 -0
- package/agents/qa/rpa-workflow-resilience-review-agent/harnesses/copilot.agent.md +36 -0
- package/agents/qa/rpa-workflow-resilience-review-agent/harnesses/cursor.agent.md +36 -0
- package/agents/qa/rpa-workflow-resilience-review-agent/harnesses/gemini.agent.md +36 -0
- package/agents/qa/rpa-workflow-resilience-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/qa/rpa-workflow-resilience-review-agent/harnesses/kiro-ide.agent.md +36 -0
- package/agents/qa/rpa-workflow-resilience-review-agent/metadata.json +34 -0
- package/agents/qa/test-coverage-quality-review-agent/AGENT.md +50 -0
- package/agents/qa/test-coverage-quality-review-agent/harnesses/claude-code.agent.md +34 -0
- package/agents/qa/test-coverage-quality-review-agent/harnesses/codex.toml +33 -0
- package/agents/qa/test-coverage-quality-review-agent/harnesses/copilot.agent.md +34 -0
- package/agents/qa/test-coverage-quality-review-agent/harnesses/cursor.agent.md +34 -0
- package/agents/qa/test-coverage-quality-review-agent/harnesses/gemini.agent.md +34 -0
- package/agents/qa/test-coverage-quality-review-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/qa/test-coverage-quality-review-agent/harnesses/kiro-ide.agent.md +34 -0
- package/agents/qa/test-coverage-quality-review-agent/metadata.json +33 -0
- package/agents/qa/test-flakiness-triage-agent/AGENT.md +52 -0
- package/agents/qa/test-flakiness-triage-agent/harnesses/claude-code.agent.md +36 -0
- package/agents/qa/test-flakiness-triage-agent/harnesses/codex.toml +33 -0
- package/agents/qa/test-flakiness-triage-agent/harnesses/copilot.agent.md +36 -0
- package/agents/qa/test-flakiness-triage-agent/harnesses/cursor.agent.md +36 -0
- package/agents/qa/test-flakiness-triage-agent/harnesses/gemini.agent.md +36 -0
- package/agents/qa/test-flakiness-triage-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/qa/test-flakiness-triage-agent/harnesses/kiro-ide.agent.md +36 -0
- package/agents/qa/test-flakiness-triage-agent/metadata.json +33 -0
- package/catalog/agents.json +1047 -197
- package/catalog/asset-integrity.json +2950 -1675
- package/catalog/install-roles.json +65 -1
- package/catalog/skill-manifest.json +538 -0
- package/catalog/skills.json +685 -0
- package/package.json +5 -2
- package/plugins/vanguard-frontier-agentic/.codex-plugin/plugin.json +1 -1
- package/scripts/generate-readme-counts.mjs +162 -0
- package/skills/marketing/ai-advertising-targeting-fairness-review/SKILL.md +43 -0
- package/skills/marketing/ai-advertising-targeting-fairness-review/metadata.json +21 -0
- package/skills/marketing/ai-advertising-targeting-fairness-review/references/workflow-and-output.md +150 -0
- package/skills/marketing/analytics-data-minimization-review/SKILL.md +44 -0
- package/skills/marketing/analytics-data-minimization-review/metadata.json +22 -0
- package/skills/marketing/analytics-data-minimization-review/references/workflow-and-output.md +187 -0
- package/skills/marketing/email-sender-authentication-review/SKILL.md +43 -0
- package/skills/marketing/email-sender-authentication-review/metadata.json +22 -0
- package/skills/marketing/email-sender-authentication-review/references/workflow-and-output.md +152 -0
- package/skills/marketing/eu-ai-act-marketing-system-review/SKILL.md +43 -0
- package/skills/marketing/eu-ai-act-marketing-system-review/metadata.json +21 -0
- package/skills/marketing/eu-ai-act-marketing-system-review/references/workflow-and-output.md +176 -0
- package/skills/marketing/influencer-disclosure-compliance-review/SKILL.md +43 -0
- package/skills/marketing/influencer-disclosure-compliance-review/metadata.json +22 -0
- package/skills/marketing/influencer-disclosure-compliance-review/references/workflow-and-output.md +156 -0
- package/skills/marketing/lookalike-audience-upload-compliance-review/SKILL.md +44 -0
- package/skills/marketing/lookalike-audience-upload-compliance-review/metadata.json +21 -0
- package/skills/marketing/lookalike-audience-upload-compliance-review/references/workflow-and-output.md +203 -0
- package/skills/marketing/marketing-consent-data-collection-review/SKILL.md +44 -0
- package/skills/marketing/marketing-consent-data-collection-review/metadata.json +21 -0
- package/skills/marketing/marketing-consent-data-collection-review/references/workflow-and-output.md +139 -0
- package/skills/marketing/marketing-conversion-flow-dark-pattern-review/SKILL.md +45 -0
- package/skills/marketing/marketing-conversion-flow-dark-pattern-review/metadata.json +22 -0
- package/skills/marketing/marketing-conversion-flow-dark-pattern-review/references/workflow-and-output.md +160 -0
- package/skills/marketing/marketing-email-list-retention-review/SKILL.md +43 -0
- package/skills/marketing/marketing-email-list-retention-review/metadata.json +22 -0
- package/skills/marketing/marketing-email-list-retention-review/references/workflow-and-output.md +144 -0
- package/skills/marketing/marketing-gpc-signal-honoring-review/SKILL.md +42 -0
- package/skills/marketing/marketing-gpc-signal-honoring-review/metadata.json +22 -0
- package/skills/marketing/marketing-gpc-signal-honoring-review/references/workflow-and-output.md +145 -0
- package/skills/marketing/marketing-maestro/README.md +37 -0
- package/skills/marketing/marketing-maestro/SKILL.md +49 -0
- package/skills/marketing/marketing-maestro/metadata.json +26 -0
- package/skills/marketing/marketing-maestro/references/safety-checklist.md +67 -0
- package/skills/marketing/marketing-maestro/references/workflow-and-output.md +110 -0
- package/skills/marketing/marketing-pixel-data-leakage-review/SKILL.md +43 -0
- package/skills/marketing/marketing-pixel-data-leakage-review/metadata.json +21 -0
- package/skills/marketing/marketing-pixel-data-leakage-review/references/workflow-and-output.md +129 -0
- package/skills/marketing/martech-access-governance-review/SKILL.md +45 -0
- package/skills/marketing/martech-access-governance-review/metadata.json +21 -0
- package/skills/marketing/martech-access-governance-review/references/workflow-and-output.md +116 -0
- package/skills/marketing/programmatic-supply-chain-integrity-review/SKILL.md +43 -0
- package/skills/marketing/programmatic-supply-chain-integrity-review/metadata.json +22 -0
- package/skills/marketing/programmatic-supply-chain-integrity-review/references/workflow-and-output.md +164 -0
- package/skills/qa/ci-test-pipeline-review/SKILL.md +45 -0
- package/skills/qa/ci-test-pipeline-review/metadata.json +21 -0
- package/skills/qa/ci-test-pipeline-review/references/workflow-and-output.md +124 -0
- package/skills/qa/helm-chart-quality-review/SKILL.md +61 -0
- package/skills/qa/helm-chart-quality-review/metadata.json +23 -0
- package/skills/qa/helm-chart-quality-review/references/workflow-and-output.md +174 -0
- package/skills/qa/kubernetes-manifest-quality-review/SKILL.md +92 -0
- package/skills/qa/kubernetes-manifest-quality-review/metadata.json +23 -0
- package/skills/qa/kubernetes-manifest-quality-review/references/workflow-and-output.md +246 -0
- package/skills/qa/llm-ai-pipeline-test-review/SKILL.md +52 -0
- package/skills/qa/llm-ai-pipeline-test-review/metadata.json +23 -0
- package/skills/qa/llm-ai-pipeline-test-review/references/workflow-and-output.md +221 -0
- package/skills/qa/playwright-e2e-execution-run/SKILL.md +54 -0
- package/skills/qa/playwright-e2e-execution-run/metadata.json +24 -0
- package/skills/qa/playwright-e2e-execution-run/references/workflow-and-output.md +133 -0
- package/skills/qa/playwright-e2e-suite-review/SKILL.md +44 -0
- package/skills/qa/playwright-e2e-suite-review/metadata.json +23 -0
- package/skills/qa/playwright-e2e-suite-review/references/workflow-and-output.md +176 -0
- package/skills/qa/plc-control-logic-safety-review/SKILL.md +47 -0
- package/skills/qa/plc-control-logic-safety-review/metadata.json +21 -0
- package/skills/qa/plc-control-logic-safety-review/references/workflow-and-output.md +231 -0
- package/skills/qa/rpa-workflow-resilience-review/SKILL.md +47 -0
- package/skills/qa/rpa-workflow-resilience-review/metadata.json +22 -0
- package/skills/qa/rpa-workflow-resilience-review/references/workflow-and-output.md +210 -0
- package/skills/qa/test-coverage-quality-review/SKILL.md +44 -0
- package/skills/qa/test-coverage-quality-review/metadata.json +21 -0
- package/skills/qa/test-coverage-quality-review/references/workflow-and-output.md +139 -0
- package/skills/qa/test-flakiness-triage/SKILL.md +43 -0
- package/skills/qa/test-flakiness-triage/metadata.json +21 -0
- package/skills/qa/test-flakiness-triage/references/workflow-and-output.md +114 -0
- package/tests/eval-qa-cluster.mjs +111 -0
- package/tests/fixtures/marketing-maestro-routing/expected/001-happy-ai-advertising-targeting-fairness-review.json +6 -0
- package/tests/fixtures/marketing-maestro-routing/expected/002-happy-analytics-data-minimization-review.json +6 -0
- package/tests/fixtures/marketing-maestro-routing/expected/003-happy-consent-data-collection-review.json +6 -0
- package/tests/fixtures/marketing-maestro-routing/expected/004-happy-conversion-flow-dark-pattern-review.json +6 -0
- package/tests/fixtures/marketing-maestro-routing/expected/005-happy-email-list-retention-review.json +6 -0
- package/tests/fixtures/marketing-maestro-routing/expected/006-happy-email-sender-authentication-review.json +6 -0
- package/tests/fixtures/marketing-maestro-routing/expected/007-happy-eu-ai-act-marketing-system-review.json +6 -0
- package/tests/fixtures/marketing-maestro-routing/expected/008-happy-gpc-signal-honoring-review.json +6 -0
- package/tests/fixtures/marketing-maestro-routing/expected/009-happy-influencer-disclosure-compliance-review.json +6 -0
- package/tests/fixtures/marketing-maestro-routing/expected/010-happy-lookalike-audience-upload-compliance-review.json +6 -0
- package/tests/fixtures/marketing-maestro-routing/expected/011-happy-martech-access-governance-review.json +6 -0
- package/tests/fixtures/marketing-maestro-routing/expected/012-happy-pixel-data-leakage-review.json +6 -0
- package/tests/fixtures/marketing-maestro-routing/expected/013-happy-programmatic-supply-chain-integrity-review.json +6 -0
- package/tests/fixtures/marketing-maestro-routing/expected/adv-ambiguous.json +4 -0
- package/tests/fixtures/marketing-maestro-routing/expected/adv-instruction-injection.json +7 -0
- package/tests/fixtures/marketing-maestro-routing/expected/adv-live-guard-gate.json +4 -0
- package/tests/fixtures/marketing-maestro-routing/expected/adv-persona-replacement.json +6 -0
- package/tests/fixtures/marketing-maestro-routing/expected/adv-secrets-bait.json +7 -0
- package/tests/fixtures/marketing-maestro-routing/inputs/001-happy-ai-advertising-targeting-fairness-review.json +7 -0
- package/tests/fixtures/marketing-maestro-routing/inputs/002-happy-analytics-data-minimization-review.json +7 -0
- package/tests/fixtures/marketing-maestro-routing/inputs/003-happy-consent-data-collection-review.json +7 -0
- package/tests/fixtures/marketing-maestro-routing/inputs/004-happy-conversion-flow-dark-pattern-review.json +7 -0
- package/tests/fixtures/marketing-maestro-routing/inputs/005-happy-email-list-retention-review.json +7 -0
- package/tests/fixtures/marketing-maestro-routing/inputs/006-happy-email-sender-authentication-review.json +7 -0
- package/tests/fixtures/marketing-maestro-routing/inputs/007-happy-eu-ai-act-marketing-system-review.json +7 -0
- package/tests/fixtures/marketing-maestro-routing/inputs/008-happy-gpc-signal-honoring-review.json +7 -0
- package/tests/fixtures/marketing-maestro-routing/inputs/009-happy-influencer-disclosure-compliance-review.json +7 -0
- package/tests/fixtures/marketing-maestro-routing/inputs/010-happy-lookalike-audience-upload-compliance-review.json +7 -0
- package/tests/fixtures/marketing-maestro-routing/inputs/011-happy-martech-access-governance-review.json +7 -0
- package/tests/fixtures/marketing-maestro-routing/inputs/012-happy-pixel-data-leakage-review.json +7 -0
- package/tests/fixtures/marketing-maestro-routing/inputs/013-happy-programmatic-supply-chain-integrity-review.json +7 -0
- package/tests/fixtures/marketing-maestro-routing/inputs/adv-ambiguous.json +7 -0
- package/tests/fixtures/marketing-maestro-routing/inputs/adv-instruction-injection.json +7 -0
- package/tests/fixtures/marketing-maestro-routing/inputs/adv-live-guard-gate.json +7 -0
- package/tests/fixtures/marketing-maestro-routing/inputs/adv-persona-replacement.json +7 -0
- package/tests/fixtures/marketing-maestro-routing/inputs/adv-secrets-bait.json +7 -0
- package/tests/fixtures/marketing-maestro-routing/taxonomy.json +183 -0
- package/tests/validate-catalog.py +1 -0
- package/tests/validate-maestro-routing.py +4 -0
- package/tests/validate-readme-counts.mjs +179 -0
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
# Workflow and Output Contract
|
|
2
|
+
|
|
3
|
+
## Workflow
|
|
4
|
+
|
|
5
|
+
### Step 1 — Collect inputs
|
|
6
|
+
|
|
7
|
+
Ask the user to provide one or more of the following as sanitized files (no CI secrets, no deploy keys, no registry tokens — replace with placeholders):
|
|
8
|
+
- The CI workflow file(s) that run tests (`.github/workflows/*.yml`, `.gitlab-ci.yml`, `.circleci/config.yml`, `Jenkinsfile`)
|
|
9
|
+
- The branch-protection / merge-rule configuration, if available (which checks are required to merge)
|
|
10
|
+
- Any reusable workflow or composite action the test job calls
|
|
11
|
+
- Optional: a recent pipeline run summary showing job durations
|
|
12
|
+
|
|
13
|
+
If branch-protection configuration is not provided, required-check findings are stated as `inference` — say so and ask for it.
|
|
14
|
+
|
|
15
|
+
### Step 2 — Gating audit
|
|
16
|
+
|
|
17
|
+
Confirm the test step can actually fail the build.
|
|
18
|
+
|
|
19
|
+
```yaml
|
|
20
|
+
# CRITICAL — test failures are swallowed; the job is always green
|
|
21
|
+
- run: npm test || true
|
|
22
|
+
|
|
23
|
+
# CRITICAL — step failure does not fail the job
|
|
24
|
+
- run: npm test
|
|
25
|
+
continue-on-error: true
|
|
26
|
+
```
|
|
27
|
+
Scan for every escape hatch: `|| true`, `continue-on-error: true`, `set +e`, `; exit 0`, a test command piped so its exit code is lost (`npm test | tee log`), or a soft/optional/advisory check label. Any of these on the test step is CRITICAL — the suite runs, looks green, and verifies nothing.
|
|
28
|
+
|
|
29
|
+
### Step 3 — Merge-gate placement audit
|
|
30
|
+
|
|
31
|
+
Confirm tests run on the pull-request merge gate, not only after merge.
|
|
32
|
+
|
|
33
|
+
- Tests triggered only on `push` to main, on a schedule, or in a nightly job → HIGH. Regressions are then detected after they are already on the protected branch.
|
|
34
|
+
- Tests run on `pull_request` but the job is not in the repo's required status checks → HIGH (or `inference` if branch protection is not provided). The run is advisory; a red PR can still merge.
|
|
35
|
+
- Recommended: the test job runs on `pull_request` and is a required status check; merges queue behind a green run.
|
|
36
|
+
|
|
37
|
+
### Step 4 — Speed and sharding audit
|
|
38
|
+
|
|
39
|
+
Review wall-clock time on the merge gate.
|
|
40
|
+
|
|
41
|
+
- A large suite in a single job with no sharding, where the job duration is long enough that developers complain or route around it → HIGH. Recommend a shard matrix:
|
|
42
|
+
```yaml
|
|
43
|
+
strategy:
|
|
44
|
+
fail-fast: false
|
|
45
|
+
matrix:
|
|
46
|
+
shard: [1, 2, 3, 4]
|
|
47
|
+
steps:
|
|
48
|
+
- run: npx playwright test --shard=${{ matrix.shard }}/4
|
|
49
|
+
```
|
|
50
|
+
- `workers`/parallelism pinned to 1 with no reason → MEDIUM.
|
|
51
|
+
- Dependency or build cache missing, or keyed without the lockfile hash → MEDIUM: stale caches produce non-reproducible results.
|
|
52
|
+
|
|
53
|
+
### Step 5 — Fail-fast and matrix audit
|
|
54
|
+
|
|
55
|
+
- `fail-fast: true` (the default on GitHub Actions matrices) on a test shard matrix → MEDIUM. The first shard failure cancels the others, so a developer sees "1 shard failed" when 3 did, fixes one cause, re-runs, and discovers the next. Set `fail-fast: false` for test matrices so every shard reports.
|
|
56
|
+
- No `concurrency` group with `cancel-in-progress` on PR runs → LOW: superseded commits keep burning runners.
|
|
57
|
+
|
|
58
|
+
### Step 6 — Artifact and observability audit
|
|
59
|
+
|
|
60
|
+
- No upload of test results (JUnit XML) and failure artifacts (traces, screenshots, videos, logs) → HIGH. A CI-only failure is then undebuggable; engineers re-run blindly hoping for green.
|
|
61
|
+
- Artifacts uploaded only on success, or retention too short to investigate → MEDIUM.
|
|
62
|
+
- Recommended: upload JUnit XML always, and traces/screenshots/logs `if: failure()`.
|
|
63
|
+
|
|
64
|
+
### Step 7 — Quarantine-lane audit
|
|
65
|
+
|
|
66
|
+
If a flaky-test quarantine mechanism exists in CI:
|
|
67
|
+
- Quarantined tests excluded from the gate but with **no scheduled non-blocking run** → HIGH: the tests never execute again and the coverage is silently lost.
|
|
68
|
+
- Quarantine with no tracking issue and no owner → HIGH (consistent with the flakiness-triage skill).
|
|
69
|
+
- Recommended: quarantined tests run in a separate non-blocking job on every PR or on a schedule, their results visible, each with an owner and a fix deadline.
|
|
70
|
+
|
|
71
|
+
### Step 8 — Security audit
|
|
72
|
+
|
|
73
|
+
- Test jobs triggered by `pull_request_target` that check out and execute PR-author code with secrets in scope → CRITICAL. A fork PR can exfiltrate secrets. Flag and stop.
|
|
74
|
+
- Secrets passed to test jobs that run on fork PRs → CRITICAL.
|
|
75
|
+
- Long-lived credentials where OIDC / short-lived tokens would work → MEDIUM.
|
|
76
|
+
|
|
77
|
+
### Step 9 — Produce the output
|
|
78
|
+
|
|
79
|
+
Format findings using the Output section below.
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Output
|
|
84
|
+
|
|
85
|
+
Return findings in this structure:
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
## Verdict
|
|
89
|
+
<one sentence: pipeline gates merges / suite runs but gates nothing / mixed>
|
|
90
|
+
|
|
91
|
+
## Evidence level
|
|
92
|
+
<CI config + branch protection provided | CI config only | documentation-based | inference>
|
|
93
|
+
|
|
94
|
+
## Findings
|
|
95
|
+
|
|
96
|
+
### CRITICAL
|
|
97
|
+
- [C1] <finding>: <description> — <remediation>
|
|
98
|
+
|
|
99
|
+
### HIGH
|
|
100
|
+
- [H1] <finding>: <description> — <remediation>
|
|
101
|
+
|
|
102
|
+
### MEDIUM
|
|
103
|
+
- [M1] <finding>: <description> — <remediation>
|
|
104
|
+
|
|
105
|
+
### LOW
|
|
106
|
+
- [L1] <finding>: <description> — <remediation>
|
|
107
|
+
|
|
108
|
+
## Safe next actions
|
|
109
|
+
1. <action>
|
|
110
|
+
2. <action>
|
|
111
|
+
|
|
112
|
+
## Open questions
|
|
113
|
+
- <question requiring user clarification>
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## Security notes
|
|
119
|
+
|
|
120
|
+
- Never request or accept CI secrets, deploy keys, or registry tokens. Ask for workflow files with placeholders.
|
|
121
|
+
- This is a static review: do not trigger pipelines, dispatch workflows, or contact CI.
|
|
122
|
+
- A test step with a soft-failure escape hatch (`|| true`, `continue-on-error`) is the highest-impact finding possible — the entire suite is decorative. Lead with it.
|
|
123
|
+
- `pull_request_target` running PR-author code with secrets in scope is a real exfiltration path; treat it as CRITICAL and tell the user to stop merging through that pipeline until it is fixed.
|
|
124
|
+
- Do not recommend making a flaky check non-blocking as the fix — that converts a known problem into an invisible one. Recommend quarantine with a scheduled run and an owner.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: helm-chart-quality-review
|
|
3
|
+
description: Use this skill when a user provides a Helm chart or asks to review Helm chart quality, security, or testability — including Chart.yaml, values.yaml, templates/, tests/, or chart-testing CI configuration.
|
|
4
|
+
allowed-tools: Read Grep Glob
|
|
5
|
+
metadata:
|
|
6
|
+
author: "github: Raishin"
|
|
7
|
+
version: "0.1.0"
|
|
8
|
+
updated: "2026-05-17"
|
|
9
|
+
category: delivery
|
|
10
|
+
lifecycle: experimental
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Helm Chart Quality Review
|
|
14
|
+
|
|
15
|
+
## Purpose
|
|
16
|
+
This skill reviews Helm chart source for quality, security, and testability defects. It reads chart files statically — Chart.yaml, values.yaml, values.schema.json, templates/, tests/, and CI configuration — without installing the chart or contacting a Kubernetes cluster. The review surfaces defects that allow bad workloads to be deployed silently: insecure container security contexts, missing resource governance, absent health probes, RBAC over-permission, hardcoded or default credentials, and missing helm test coverage.
|
|
17
|
+
|
|
18
|
+
## Lean operating rules
|
|
19
|
+
- Treat `privileged: true`, `capabilities.add: [ALL]` or any combination that grants root-equivalent privileges as CRITICAL — stop and flag before continuing.
|
|
20
|
+
- Treat `hostNetwork: true`, `hostPID: true`, or `hostIPC: true` as CRITICAL — these give a container visibility into the node's network stack, process table, or IPC namespace.
|
|
21
|
+
- Treat secrets rendered inline in a ConfigMap (not a Secret resource) as CRITICAL — plain-text secrets are visible to any workload that can read ConfigMaps in the namespace.
|
|
22
|
+
- Treat a `ClusterRoleBinding` to the `default` service account as CRITICAL — any workload in the namespace inherits cluster-scoped access.
|
|
23
|
+
- Treat `capabilities.add: [SYS_ADMIN]` or `[NET_ADMIN]` as CRITICAL — these grant near-root kernel capabilities.
|
|
24
|
+
- Treat hardcoded `:latest` image tags without override capability as HIGH — breaks reproducibility and makes rollback unreliable.
|
|
25
|
+
- Treat `securityContext.runAsRoot: true` or the absence of `runAsNonRoot` on pod or container spec as HIGH — workloads should not run as UID 0.
|
|
26
|
+
- Treat `allowPrivilegeEscalation` not explicitly set to `false` as HIGH — a child process can gain more privileges than the parent.
|
|
27
|
+
- Treat cluster-scoped RBAC roles where namespace-scoped would suffice as HIGH — blast radius of a compromise is the entire cluster.
|
|
28
|
+
- Treat `serviceAccount.automountServiceAccountToken` not set to `false` when the workload does not call the Kubernetes API as HIGH — the token is mounted unnecessarily and exploitable.
|
|
29
|
+
- Treat missing `resources.requests` and `resources.limits` on every container as HIGH — without limits, a misbehaving pod can trigger node over-subscription and OOM kills on neighbours.
|
|
30
|
+
- Treat missing `livenessProbe` or `readinessProbe` as HIGH — rolling updates proceed blind; a pod stuck in a failed state can be sent live traffic.
|
|
31
|
+
- Treat sensitive default credential values (`admin`, `password`, empty string) in values.yaml as CRITICAL — users forget to override defaults and ship them to production.
|
|
32
|
+
- Treat the absence of `values.schema.json` when required values carry no type or pattern constraint as MEDIUM — `helm install` accepts arbitrary input with no validation.
|
|
33
|
+
- Treat missing `readOnlyRootFilesystem: true` as MEDIUM — a container with a writable root filesystem can modify its own binaries or drop exploit payloads.
|
|
34
|
+
- Treat missing `startupProbe` for slow-starting containers as MEDIUM — liveness checks kill containers that need more startup time, causing crash loops.
|
|
35
|
+
- Treat no `PodDisruptionBudget` for stateful or singleton workloads as MEDIUM — node drains can take the workload to zero replicas.
|
|
36
|
+
- Treat no `HorizontalPodAutoscaler` where the workload is expected to scale as LOW.
|
|
37
|
+
- Treat probe timeouts or failure thresholds at defaults with no tuning rationale as LOW.
|
|
38
|
+
- Treat no `NOTES.txt` as LOW — users have no post-install guidance.
|
|
39
|
+
- Treat a chart version that is not semver-compliant as LOW.
|
|
40
|
+
- Treat `tests/` that contain only pod-existence checks and no service reachability or functional assertion as LOW — existence proves the pod started, not that the service works.
|
|
41
|
+
- Treat no `tests/` directory at all as MEDIUM — helm test integration is absent.
|
|
42
|
+
- Treat no CI integration for chart-testing (`ct lint-and-install` or equivalent) as MEDIUM — the chart is not regression-tested on install.
|
|
43
|
+
- Label every finding with its evidence basis: `chart source provided`, `values only`, `documentation-based`, or `inference`.
|
|
44
|
+
- Do not request kubeconfig, cluster credentials, cloud provider credentials, or live values files containing secrets. Ask for sanitized versions with placeholder values.
|
|
45
|
+
- Static review only — never install a chart, never contact a Kubernetes cluster, never run `helm upgrade` or `kubectl apply`.
|
|
46
|
+
|
|
47
|
+
## References
|
|
48
|
+
Load these only when needed:
|
|
49
|
+
- [Workflow and output contract](references/workflow-and-output.md) — use when executing the full review or formatting the final answer.
|
|
50
|
+
|
|
51
|
+
## Response minimum
|
|
52
|
+
Return, at minimum:
|
|
53
|
+
- Linting and template correctness findings
|
|
54
|
+
- Values hygiene findings (sensitive defaults, schema validation, `:latest` tags)
|
|
55
|
+
- Template security findings (securityContext, capabilities, host namespaces, secrets in ConfigMap)
|
|
56
|
+
- Resource governance findings (requests/limits, PDB, HPA)
|
|
57
|
+
- Health and observability findings (liveness, readiness, startup probes)
|
|
58
|
+
- Testability findings (helm test, chart-testing CI)
|
|
59
|
+
- RBAC and service account findings
|
|
60
|
+
- Severity-labelled finding list (CRITICAL / HIGH / MEDIUM / LOW)
|
|
61
|
+
- Safe next actions
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "helm-chart-quality-review",
|
|
3
|
+
"name": "Helm Chart Quality Review",
|
|
4
|
+
"type": "skill",
|
|
5
|
+
"provider": "generic",
|
|
6
|
+
"harnesses": ["codex", "claude-code", "cursor", "gemini", "kiro", "other"],
|
|
7
|
+
"summary": "Review a Helm chart for quality, security, and testability defects — linting gaps, insecure securityContext, missing resource limits, absent health probes, RBAC over-permission, hardcoded secrets, and missing helm test coverage — statically, without installing or contacting a cluster.",
|
|
8
|
+
"source_type": "original",
|
|
9
|
+
"official_docs": [
|
|
10
|
+
"https://helm.sh/docs/chart_best_practices/",
|
|
11
|
+
"https://helm.sh/docs/helm/helm_lint/",
|
|
12
|
+
"https://helm.sh/docs/helm/helm_template/",
|
|
13
|
+
"https://helm.sh/docs/topics/chart_tests/",
|
|
14
|
+
"https://github.com/helm/chart-testing",
|
|
15
|
+
"https://kubernetes.io/docs/concepts/security/pod-security-standards/",
|
|
16
|
+
"https://kubernetes.io/docs/tasks/configure-pod-container/security-context/"
|
|
17
|
+
],
|
|
18
|
+
"security_notes": "Static review only — reads chart source files (Chart.yaml, values.yaml, templates/, tests/), never installs a chart, never connects to a Kubernetes cluster, never requests kubeconfig, cluster credentials, or cloud provider credentials. Do not accept values files containing live credentials, connection strings, or tenant IDs; ask for sanitized versions with placeholder values.",
|
|
19
|
+
"last_verified": "2026-05-17",
|
|
20
|
+
"path": "skills/qa/helm-chart-quality-review",
|
|
21
|
+
"author": "github: Raishin",
|
|
22
|
+
"version": "0.1.0"
|
|
23
|
+
}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
# Workflow and Output Contract
|
|
2
|
+
|
|
3
|
+
## Workflow
|
|
4
|
+
|
|
5
|
+
### Step 1 — Collect inputs
|
|
6
|
+
|
|
7
|
+
Ask the user to provide one or more of the following as sanitized files (no live credentials, no kubeconfig, no cluster tokens — replace secrets with placeholders):
|
|
8
|
+
- `Chart.yaml` — name, version, appVersion, dependencies
|
|
9
|
+
- `values.yaml` — default values and their inline documentation
|
|
10
|
+
- `values.schema.json` — JSON Schema validation for values (if present)
|
|
11
|
+
- `templates/` — all template manifests (Deployment, StatefulSet, DaemonSet, Service, ConfigMap, Secret, RBAC resources, ServiceAccount, HPA, PDB, etc.)
|
|
12
|
+
- `tests/` — helm test hook manifests
|
|
13
|
+
- CI configuration (`ct.yaml`, `.github/workflows/*.yml`, `.gitlab-ci.yml`, or equivalent) if available
|
|
14
|
+
|
|
15
|
+
If `values.schema.json` is absent, note it and flag as MEDIUM. If `tests/` is absent, note it and flag as MEDIUM. If CI configuration is not provided, state findings about chart-testing CI as `inference`.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
### Step 2 — Linting and template correctness audit
|
|
20
|
+
|
|
21
|
+
Check for structural and syntactic correctness.
|
|
22
|
+
|
|
23
|
+
- Missing required `Chart.yaml` fields (`apiVersion`, `name`, `version`) → flag as blocking; the chart fails `helm lint`.
|
|
24
|
+
- Chart `version` not semver-compliant (e.g. `1.0` instead of `1.0.0`) → LOW.
|
|
25
|
+
- Undefined template variables that would cause `helm template` to fail → HIGH.
|
|
26
|
+
- `helm template` renders manifests with empty required fields (image tag empty, pod name empty) → HIGH.
|
|
27
|
+
- No `NOTES.txt` providing post-install next steps → LOW.
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
### Step 3 — Values hygiene audit
|
|
32
|
+
|
|
33
|
+
Check for default value problems and schema coverage.
|
|
34
|
+
|
|
35
|
+
- Hardcoded image tags set to `:latest` with no override mechanism → HIGH (breaks reproducibility and rollback).
|
|
36
|
+
- Image digests hardcoded without a user-overridable `image.tag` or `image.digest` field → HIGH.
|
|
37
|
+
- Sensitive default values: empty password (`password: ""`), literal `admin` or `password` as a default credential → CRITICAL. Users deploy defaults to production without noticing.
|
|
38
|
+
- Required values with no `values.schema.json` type or pattern constraint → MEDIUM; `helm install` accepts arbitrary input with no validation.
|
|
39
|
+
- Deeply nested values with no inline comment documentation → LOW; operators cannot understand what to tune without reading templates.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
### Step 4 — Template security audit
|
|
44
|
+
|
|
45
|
+
Check container and pod security configuration.
|
|
46
|
+
|
|
47
|
+
```yaml
|
|
48
|
+
# CRITICAL — container runs as root
|
|
49
|
+
securityContext:
|
|
50
|
+
runAsUser: 0
|
|
51
|
+
|
|
52
|
+
# CRITICAL — privileged mode grants near-root kernel access
|
|
53
|
+
securityContext:
|
|
54
|
+
privileged: true
|
|
55
|
+
|
|
56
|
+
# CRITICAL — grants all Linux capabilities
|
|
57
|
+
securityContext:
|
|
58
|
+
capabilities:
|
|
59
|
+
add: ["ALL"]
|
|
60
|
+
|
|
61
|
+
# CRITICAL — host namespace sharing
|
|
62
|
+
spec:
|
|
63
|
+
hostNetwork: true
|
|
64
|
+
hostPID: true
|
|
65
|
+
hostIPC: true
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
- `runAsRoot: true` or `runAsNonRoot` absent from both pod-level and container-level securityContext → HIGH.
|
|
69
|
+
- `allowPrivilegeEscalation` not set to `false` → HIGH; a child process can acquire more privileges than its parent.
|
|
70
|
+
- `capabilities.add: [SYS_ADMIN]` or `[NET_ADMIN]` → CRITICAL.
|
|
71
|
+
- `capabilities.add: [ALL]` → CRITICAL.
|
|
72
|
+
- `privileged: true` → CRITICAL.
|
|
73
|
+
- `hostNetwork: true`, `hostPID: true`, or `hostIPC: true` → CRITICAL for each.
|
|
74
|
+
- `readOnlyRootFilesystem` absent or set to `false` → MEDIUM; the container filesystem is writable, enabling in-place modification of binaries.
|
|
75
|
+
- Secrets (passwords, tokens, keys) rendered as plain-text data in a ConfigMap instead of a Secret resource → CRITICAL; any workload that can read ConfigMaps in the namespace can read the value.
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
### Step 5 — Resource governance audit
|
|
80
|
+
|
|
81
|
+
Check resource requests, limits, and workload scaling policy.
|
|
82
|
+
|
|
83
|
+
- `resources.requests` or `resources.limits` absent from any container spec → HIGH; without limits, a misbehaving pod triggers node over-subscription and may cause OOM kills on neighbouring workloads.
|
|
84
|
+
- No `PodDisruptionBudget` for a StatefulSet or singleton Deployment → MEDIUM; node drains can take the workload to zero replicas.
|
|
85
|
+
- No `HorizontalPodAutoscaler` where the workload is expected to handle variable load → LOW.
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
### Step 6 — Health and observability audit
|
|
90
|
+
|
|
91
|
+
Check probe configuration.
|
|
92
|
+
|
|
93
|
+
- `livenessProbe` absent from any container → HIGH; the kubelet cannot detect a hung container, and a failed pod can receive live traffic indefinitely.
|
|
94
|
+
- `readinessProbe` absent → HIGH; rolling updates proceed without confirming the new pod is ready to serve traffic.
|
|
95
|
+
- `startupProbe` absent for containers with slow or variable startup times → MEDIUM; the liveness probe fires before the container is ready, causing crash loops.
|
|
96
|
+
- Probe `timeoutSeconds`, `failureThreshold`, or `periodSeconds` at Kubernetes defaults with no documented rationale → LOW; defaults may be too aggressive or too lenient for the workload.
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
### Step 7 — Testability audit
|
|
101
|
+
|
|
102
|
+
Check helm test coverage and chart-testing CI integration.
|
|
103
|
+
|
|
104
|
+
- No `tests/` directory → MEDIUM; helm test integration is absent. The chart has no post-install verification that can be run by `helm test`.
|
|
105
|
+
- `tests/` present but test manifests only assert pod existence (`kubectl get pod`) and do not verify service reachability or a functional endpoint → LOW; existence confirms the pod started, not that the service responds correctly.
|
|
106
|
+
- No CI integration for chart-testing — no `ct lint-and-install`, no `helm lint` + `helm template` step in CI configuration → MEDIUM; the chart is not regression-tested on install across a range of values.
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
### Step 8 — RBAC and service account audit
|
|
111
|
+
|
|
112
|
+
Check role scope and service account token exposure.
|
|
113
|
+
|
|
114
|
+
```yaml
|
|
115
|
+
# CRITICAL — ClusterRoleBinding to default SA gives cluster-wide access
|
|
116
|
+
# to every workload in the namespace
|
|
117
|
+
subjects:
|
|
118
|
+
- kind: ServiceAccount
|
|
119
|
+
name: default
|
|
120
|
+
namespace: my-app
|
|
121
|
+
roleRef:
|
|
122
|
+
kind: ClusterRole
|
|
123
|
+
name: admin
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
- `ClusterRoleBinding` to the `default` service account → CRITICAL.
|
|
127
|
+
- `ClusterRole` used where a `Role` scoped to a single namespace would suffice → HIGH; blast radius of a compromised workload is the entire cluster.
|
|
128
|
+
- `serviceAccount.automountServiceAccountToken` not set to `false` when the workload makes no Kubernetes API calls → HIGH; the service account token is mounted into the pod and exploitable by any process that can read the filesystem.
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Output
|
|
133
|
+
|
|
134
|
+
Return findings in this structure:
|
|
135
|
+
|
|
136
|
+
```
|
|
137
|
+
## Verdict
|
|
138
|
+
<one sentence: chart passes review with no critical issues / chart has critical defects that must be fixed before deployment / chart has high-severity defects requiring attention>
|
|
139
|
+
|
|
140
|
+
## Evidence level
|
|
141
|
+
<chart source provided | values only | partial (no templates) | inference>
|
|
142
|
+
|
|
143
|
+
## Findings
|
|
144
|
+
|
|
145
|
+
### CRITICAL
|
|
146
|
+
- [C1] <finding title>: <description> — <remediation>
|
|
147
|
+
|
|
148
|
+
### HIGH
|
|
149
|
+
- [H1] <finding title>: <description> — <remediation>
|
|
150
|
+
|
|
151
|
+
### MEDIUM
|
|
152
|
+
- [M1] <finding title>: <description> — <remediation>
|
|
153
|
+
|
|
154
|
+
### LOW
|
|
155
|
+
- [L1] <finding title>: <description> — <remediation>
|
|
156
|
+
|
|
157
|
+
## Safe next actions
|
|
158
|
+
1. <action>
|
|
159
|
+
2. <action>
|
|
160
|
+
|
|
161
|
+
## Open questions
|
|
162
|
+
- <question requiring user clarification>
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## Security notes
|
|
168
|
+
|
|
169
|
+
- Never request kubeconfig, cluster credentials, cloud provider tokens, or live values files containing secrets. Ask for sanitized versions with placeholder values.
|
|
170
|
+
- Static review only — never install a chart, never run `helm upgrade` or `kubectl apply`, never contact a Kubernetes cluster.
|
|
171
|
+
- A container running as root, with `privileged: true`, or with `hostNetwork: true` is the highest-impact template security finding. Lead with it.
|
|
172
|
+
- A `ClusterRoleBinding` to the `default` service account grants cluster-wide access to every workload in the namespace. Treat it as CRITICAL and flag immediately.
|
|
173
|
+
- Secrets in ConfigMap instead of a Secret resource are exposed to all workloads in the namespace that have read access to ConfigMaps. Flag as CRITICAL.
|
|
174
|
+
- Do not recommend workarounds that maintain the defect (e.g. "add a comment explaining why privileged is needed" is not remediation for `privileged: true`).
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: kubernetes-manifest-quality-review
|
|
3
|
+
description: Use this skill when the user provides raw Kubernetes YAML manifests or asks to review K8s manifests for quality, security, or policy compliance — covering Deployment, StatefulSet, DaemonSet, Service, Ingress, NetworkPolicy, RBAC, and CRD resources.
|
|
4
|
+
allowed-tools: Read Grep Glob
|
|
5
|
+
metadata:
|
|
6
|
+
author: "github: Raishin"
|
|
7
|
+
version: "0.1.0"
|
|
8
|
+
updated: "2026-05-17"
|
|
9
|
+
category: delivery
|
|
10
|
+
lifecycle: experimental
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Kubernetes Manifest Quality Review
|
|
14
|
+
|
|
15
|
+
## Purpose
|
|
16
|
+
|
|
17
|
+
This skill reviews raw Kubernetes YAML manifests for quality, security, and policy-compliance defects. It covers Deployment, StatefulSet, DaemonSet, Service, Ingress, NetworkPolicy, RBAC, and CRD resources. The review is entirely static — it reads YAML files and never applies manifests to a cluster, never contacts the Kubernetes API, and never requests kubeconfig, service account tokens, or cloud credentials.
|
|
18
|
+
|
|
19
|
+
## Lean operating rules
|
|
20
|
+
|
|
21
|
+
### Schema and structure
|
|
22
|
+
|
|
23
|
+
- `apiVersion` or `kind` missing — CRITICAL: the manifest cannot be applied; flag and stop review of that resource.
|
|
24
|
+
- Deprecated API versions (e.g., `extensions/v1beta1`, `networking.k8s.io/v1beta1`, `policy/v1beta1` PodSecurityPolicy) — HIGH: these will be rejected by newer clusters.
|
|
25
|
+
- Missing required labels (`app`, `app.kubernetes.io/name`, `app.kubernetes.io/version`) on Pods and workload controllers — MEDIUM: impairs observability, selector targeting, and policy enforcement.
|
|
26
|
+
- No `namespace` specified (reliance on default namespace) — MEDIUM: encourages lateral movement and policy bypass; everything should be explicitly namespaced.
|
|
27
|
+
|
|
28
|
+
### Pod security (Pod Security Standards)
|
|
29
|
+
|
|
30
|
+
- `securityContext.runAsRoot: true` on a container, or no `runAsNonRoot: true` at pod or container level — HIGH: processes run as UID 0 inside the container.
|
|
31
|
+
- `privileged: true` on a container security context — CRITICAL: the container has near-host-root access.
|
|
32
|
+
- `allowPrivilegeEscalation: true` or field absent (it defaults to `true` unless `privileged: false` is set) — HIGH: child processes can gain more privileges than the parent.
|
|
33
|
+
- `hostNetwork: true`, `hostPID: true`, `hostIPC: true` on the pod spec — CRITICAL: the pod shares the host network stack, process table, or IPC namespace, enabling broad host compromise.
|
|
34
|
+
- `capabilities.add` containing `SYS_ADMIN`, `NET_ADMIN`, `ALL`, `SYS_PTRACE`, or `DAC_OVERRIDE` — CRITICAL: these capabilities provide near-root privilege; drop all capabilities and add only what is specifically required.
|
|
35
|
+
- `readOnlyRootFilesystem: false` or field absent on a container — MEDIUM: a writable root filesystem makes container compromise easier; set to `true` and use `emptyDir` or volume mounts for mutable paths.
|
|
36
|
+
- `seccompProfile` absent at pod or container level — MEDIUM: no syscall filtering, increasing the kernel attack surface; use `RuntimeDefault` or a custom profile.
|
|
37
|
+
|
|
38
|
+
### Image hygiene
|
|
39
|
+
|
|
40
|
+
- Image tag is `:latest` or absent — HIGH: non-reproducible deployments; a rollout can silently pull a different image than what was tested.
|
|
41
|
+
- No image digest pinning for production manifests — MEDIUM: tag mutability allows supply-chain substitution; prefer `image@sha256:<digest>`.
|
|
42
|
+
- Image pulled from an unverified public registry (e.g., Docker Hub) with no `imagePullPolicy: IfNotPresent` or digest — MEDIUM: arbitrary public images without integrity verification.
|
|
43
|
+
|
|
44
|
+
### Resource governance
|
|
45
|
+
|
|
46
|
+
- `resources.requests` and `resources.limits` both absent on a container — HIGH: the container is unschedulable on resource-constrained nodes and can starve co-located workloads.
|
|
47
|
+
- Memory limit set without a CPU limit — MEDIUM: CPU throttling surprise; the container can be throttled heavily with no visible error.
|
|
48
|
+
- Ephemeral storage limit absent on containers known to produce logs or temp files — LOW: unbounded ephemeral storage can exhaust node disk and evict other pods.
|
|
49
|
+
|
|
50
|
+
### Health probes
|
|
51
|
+
|
|
52
|
+
- `livenessProbe` missing — HIGH: the kubelet cannot detect application deadlocks or crash-loop conditions and restart the container.
|
|
53
|
+
- `readinessProbe` missing — HIGH: the endpoint controller sends traffic to the pod before the application is ready, causing errors during startup and rolling updates.
|
|
54
|
+
- Probe using `exec` command with no `timeoutSeconds` specified — MEDIUM: exec probes default to a 1-second timeout; a slow command silently causes probe failures and restarts.
|
|
55
|
+
|
|
56
|
+
### Networking and exposure
|
|
57
|
+
|
|
58
|
+
- Service type `LoadBalancer` or `NodePort` without a comment or annotation documenting the business justification — MEDIUM: these expose services externally or on every node port; ClusterIP is sufficient for internal services.
|
|
59
|
+
- Ingress resource with no TLS block configured — HIGH: traffic between the client and the ingress controller is unencrypted.
|
|
60
|
+
- No `NetworkPolicy` resource restricts pod ingress or egress in the namespace — MEDIUM: the default Kubernetes network model is allow-all; without a NetworkPolicy every pod can reach every other pod.
|
|
61
|
+
- Ingress annotation `nginx.ingress.kubernetes.io/use-proxy-protocol` or similar annotation that forwards arbitrary upstream headers into backend requests from untrusted input — CRITICAL: enables SSRF and header injection.
|
|
62
|
+
|
|
63
|
+
### RBAC and service accounts
|
|
64
|
+
|
|
65
|
+
- `ClusterRole` with verb `*` on resource `*` or on `secrets` — CRITICAL: any principal bound to this role has full cluster read/write access.
|
|
66
|
+
- `RoleBinding` or `ClusterRoleBinding` whose subject is `system:anonymous` or `system:unauthenticated` — CRITICAL: unauthenticated callers inherit these permissions.
|
|
67
|
+
- `automountServiceAccountToken: true` (or field absent, which defaults to `true`) on pods that do not contact the Kubernetes API — HIGH: the token is mounted at a known path and exploitable if the container is compromised.
|
|
68
|
+
- RBAC role granting `get` or `list` on `secrets` beyond what the workload demonstrably needs — HIGH: broadens blast radius of a credential compromise.
|
|
69
|
+
|
|
70
|
+
### Secrets and config
|
|
71
|
+
|
|
72
|
+
- Plaintext credentials (passwords, tokens, connection strings) in `env.value` on a container or in `ConfigMap.data` — CRITICAL: credentials visible in manifests committed to source control or stored in etcd in plaintext.
|
|
73
|
+
- `Secret` with `type: Opaque` and a base64-encoded value that decodes to an empty string — MEDIUM: placeholder secret that will cause application startup failures and suggests secrets management is not wired up.
|
|
74
|
+
|
|
75
|
+
## References
|
|
76
|
+
|
|
77
|
+
Load these only when needed:
|
|
78
|
+
- [Workflow and output contract](references/workflow-and-output.md) — use when executing the full review or formatting the final answer.
|
|
79
|
+
|
|
80
|
+
## Response minimum
|
|
81
|
+
|
|
82
|
+
Return, at minimum:
|
|
83
|
+
- Schema and API version findings
|
|
84
|
+
- Pod security findings (PSS Restricted/Baseline comparison)
|
|
85
|
+
- Image hygiene findings
|
|
86
|
+
- Resource governance findings
|
|
87
|
+
- Health probe findings
|
|
88
|
+
- Networking and exposure findings
|
|
89
|
+
- RBAC and service account findings
|
|
90
|
+
- Secrets and config findings
|
|
91
|
+
- Severity-labelled finding list (CRITICAL / HIGH / MEDIUM / LOW)
|
|
92
|
+
- Safe next actions
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "kubernetes-manifest-quality-review",
|
|
3
|
+
"name": "Kubernetes Manifest Quality Review",
|
|
4
|
+
"type": "skill",
|
|
5
|
+
"provider": "generic",
|
|
6
|
+
"harnesses": ["codex", "claude-code", "cursor", "gemini", "kiro", "other"],
|
|
7
|
+
"summary": "Review raw Kubernetes YAML manifests for security, quality, and policy defects — deprecated APIs, missing securityContext, absent resource limits, missing health probes, RBAC over-permission, plaintext secrets, and network exposure — statically, without applying manifests or contacting a cluster.",
|
|
8
|
+
"source_type": "original",
|
|
9
|
+
"official_docs": [
|
|
10
|
+
"https://kubernetes.io/docs/concepts/security/pod-security-standards/",
|
|
11
|
+
"https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
|
|
12
|
+
"https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/",
|
|
13
|
+
"https://kubernetes.io/docs/reference/access-authn-authz/rbac/",
|
|
14
|
+
"https://kubernetes.io/docs/concepts/services-networking/network-policies/",
|
|
15
|
+
"https://github.com/yannh/kubeconform",
|
|
16
|
+
"https://github.com/zegl/kube-score"
|
|
17
|
+
],
|
|
18
|
+
"security_notes": "Static review only — reads manifest YAML files, never applies manifests to a cluster, never connects to the Kubernetes API, and never requests kubeconfig, service account tokens, or cloud credentials. Do not accept manifests containing real secret values or connection strings decoded from base64; ask for sanitized versions with placeholder values.",
|
|
19
|
+
"last_verified": "2026-05-17",
|
|
20
|
+
"path": "skills/qa/kubernetes-manifest-quality-review",
|
|
21
|
+
"author": "github: Raishin",
|
|
22
|
+
"version": "0.1.0"
|
|
23
|
+
}
|