ma-agents 2.20.0 → 2.20.1
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/package.json +1 -1
- package/.cline/clinerules.md +0 -14
- package/.cline/skills/.ma-agents.json +0 -199
- package/.cline/skills/MANIFEST.yaml +0 -204
- package/.cline/skills/ai-audit-trail/SKILL.md +0 -23
- package/.cline/skills/cmake-best-practices/SKILL.md +0 -64
- package/.cline/skills/cmake-best-practices/examples/cmake.md +0 -59
- package/.cline/skills/code-documentation/SKILL.md +0 -57
- package/.cline/skills/code-documentation/examples/cpp.md +0 -29
- package/.cline/skills/code-documentation/examples/csharp.md +0 -28
- package/.cline/skills/code-documentation/examples/javascript_typescript.md +0 -28
- package/.cline/skills/code-documentation/examples/python.md +0 -57
- package/.cline/skills/code-review/SKILL.md +0 -59
- package/.cline/skills/commit-message/SKILL.md +0 -79
- package/.cline/skills/cpp-concurrency-safety/SKILL.md +0 -60
- package/.cline/skills/cpp-concurrency-safety/examples/concurrency.md +0 -73
- package/.cline/skills/cpp-const-correctness/SKILL.md +0 -63
- package/.cline/skills/cpp-const-correctness/examples/const_correctness.md +0 -54
- package/.cline/skills/cpp-memory-handling/SKILL.md +0 -42
- package/.cline/skills/cpp-memory-handling/examples/modern-cpp.md +0 -49
- package/.cline/skills/cpp-memory-handling/examples/smart-pointers.md +0 -46
- package/.cline/skills/cpp-modern-composition/SKILL.md +0 -64
- package/.cline/skills/cpp-modern-composition/examples/composition.md +0 -51
- package/.cline/skills/cpp-robust-interfaces/SKILL.md +0 -55
- package/.cline/skills/cpp-robust-interfaces/examples/interfaces.md +0 -56
- package/.cline/skills/create-hardened-docker-skill/SKILL.md +0 -637
- package/.cline/skills/create-hardened-docker-skill/scripts/create-all.sh +0 -489
- package/.cline/skills/docker-hardening-verification/SKILL.md +0 -28
- package/.cline/skills/docker-hardening-verification/scripts/verify-hardening.sh +0 -39
- package/.cline/skills/docker-image-signing/SKILL.md +0 -28
- package/.cline/skills/docker-image-signing/scripts/sign-image.sh +0 -33
- package/.cline/skills/document-revision-history/SKILL.md +0 -104
- package/.cline/skills/git-workflow-skill/SKILL.md +0 -194
- package/.cline/skills/git-workflow-skill/hooks/commit-msg +0 -61
- package/.cline/skills/git-workflow-skill/hooks/pre-commit +0 -38
- package/.cline/skills/git-workflow-skill/hooks/prepare-commit-msg +0 -56
- package/.cline/skills/git-workflow-skill/scripts/finish-feature.sh +0 -192
- package/.cline/skills/git-workflow-skill/scripts/install-hooks.sh +0 -55
- package/.cline/skills/git-workflow-skill/scripts/start-feature.sh +0 -110
- package/.cline/skills/git-workflow-skill/scripts/validate-workflow.sh +0 -229
- package/.cline/skills/js-ts-dependency-mgmt/SKILL.md +0 -49
- package/.cline/skills/js-ts-dependency-mgmt/examples/dependency_mgmt.md +0 -60
- package/.cline/skills/js-ts-security-skill/SKILL.md +0 -64
- package/.cline/skills/js-ts-security-skill/scripts/verify-security.sh +0 -136
- package/.cline/skills/logging-best-practices/SKILL.md +0 -50
- package/.cline/skills/logging-best-practices/docs/logging-standards.md +0 -29
- package/.cline/skills/logging-best-practices/examples/cpp.md +0 -36
- package/.cline/skills/logging-best-practices/examples/csharp.md +0 -49
- package/.cline/skills/logging-best-practices/examples/javascript.md +0 -77
- package/.cline/skills/logging-best-practices/examples/python.md +0 -57
- package/.cline/skills/opentelemetry-best-practices/SKILL.md +0 -34
- package/.cline/skills/opentelemetry-best-practices/docs/otel-standards.md +0 -37
- package/.cline/skills/opentelemetry-best-practices/examples/go.md +0 -32
- package/.cline/skills/opentelemetry-best-practices/examples/javascript.md +0 -58
- package/.cline/skills/opentelemetry-best-practices/examples/python.md +0 -37
- package/.cline/skills/python-dependency-mgmt/SKILL.md +0 -42
- package/.cline/skills/python-dependency-mgmt/examples/dependency_mgmt.md +0 -67
- package/.cline/skills/python-security-skill/SKILL.md +0 -56
- package/.cline/skills/python-security-skill/examples/security.md +0 -56
- package/.cline/skills/self-signed-cert/SKILL.md +0 -42
- package/.cline/skills/self-signed-cert/scripts/generate-cert.ps1 +0 -45
- package/.cline/skills/self-signed-cert/scripts/generate-cert.sh +0 -43
- package/.cline/skills/skill-creator/SKILL.md +0 -196
- package/.cline/skills/skill-creator/docs/output-patterns.md +0 -82
- package/.cline/skills/skill-creator/docs/workflows.md +0 -28
- package/.cline/skills/skill-creator/scripts/init_skill.py +0 -208
- package/.cline/skills/skill-creator/scripts/package_skill.py +0 -99
- package/.cline/skills/skill-creator/scripts/quick_validate.py +0 -113
- package/.cline/skills/test-accompanied-development/SKILL.md +0 -50
- package/.cline/skills/test-generator/SKILL.md +0 -73
- package/.cline/skills/vercel-react-best-practices/SKILL.md +0 -109
- package/.cline/skills/verify-hardened-docker-skill/SKILL.md +0 -442
- package/.cline/skills/verify-hardened-docker-skill/scripts/verify-docker-hardening.sh +0 -439
- package/.clinerules +0 -14
- package/.cursor/cursor.md +0 -14
- package/.cursor/skills/.ma-agents.json +0 -199
- package/.cursor/skills/MANIFEST.yaml +0 -204
- package/.cursor/skills/ai-audit-trail/SKILL.md +0 -23
- package/.cursor/skills/cmake-best-practices/SKILL.md +0 -64
- package/.cursor/skills/cmake-best-practices/examples/cmake.md +0 -59
- package/.cursor/skills/code-documentation/SKILL.md +0 -57
- package/.cursor/skills/code-documentation/examples/cpp.md +0 -29
- package/.cursor/skills/code-documentation/examples/csharp.md +0 -28
- package/.cursor/skills/code-documentation/examples/javascript_typescript.md +0 -28
- package/.cursor/skills/code-documentation/examples/python.md +0 -57
- package/.cursor/skills/code-review/SKILL.md +0 -43
- package/.cursor/skills/commit-message/SKILL.md +0 -79
- package/.cursor/skills/cpp-concurrency-safety/SKILL.md +0 -60
- package/.cursor/skills/cpp-concurrency-safety/examples/concurrency.md +0 -73
- package/.cursor/skills/cpp-const-correctness/SKILL.md +0 -63
- package/.cursor/skills/cpp-const-correctness/examples/const_correctness.md +0 -54
- package/.cursor/skills/cpp-memory-handling/SKILL.md +0 -42
- package/.cursor/skills/cpp-memory-handling/examples/modern-cpp.md +0 -49
- package/.cursor/skills/cpp-memory-handling/examples/smart-pointers.md +0 -46
- package/.cursor/skills/cpp-modern-composition/SKILL.md +0 -64
- package/.cursor/skills/cpp-modern-composition/examples/composition.md +0 -51
- package/.cursor/skills/cpp-robust-interfaces/SKILL.md +0 -55
- package/.cursor/skills/cpp-robust-interfaces/examples/interfaces.md +0 -56
- package/.cursor/skills/create-hardened-docker-skill/SKILL.md +0 -637
- package/.cursor/skills/create-hardened-docker-skill/scripts/create-all.sh +0 -489
- package/.cursor/skills/docker-hardening-verification/SKILL.md +0 -28
- package/.cursor/skills/docker-hardening-verification/scripts/verify-hardening.sh +0 -39
- package/.cursor/skills/docker-image-signing/SKILL.md +0 -28
- package/.cursor/skills/docker-image-signing/scripts/sign-image.sh +0 -33
- package/.cursor/skills/document-revision-history/SKILL.md +0 -104
- package/.cursor/skills/git-workflow-skill/SKILL.md +0 -194
- package/.cursor/skills/git-workflow-skill/hooks/commit-msg +0 -61
- package/.cursor/skills/git-workflow-skill/hooks/pre-commit +0 -38
- package/.cursor/skills/git-workflow-skill/hooks/prepare-commit-msg +0 -56
- package/.cursor/skills/git-workflow-skill/scripts/finish-feature.sh +0 -192
- package/.cursor/skills/git-workflow-skill/scripts/install-hooks.sh +0 -55
- package/.cursor/skills/git-workflow-skill/scripts/start-feature.sh +0 -110
- package/.cursor/skills/git-workflow-skill/scripts/validate-workflow.sh +0 -229
- package/.cursor/skills/js-ts-dependency-mgmt/SKILL.md +0 -49
- package/.cursor/skills/js-ts-dependency-mgmt/examples/dependency_mgmt.md +0 -60
- package/.cursor/skills/js-ts-security-skill/SKILL.md +0 -64
- package/.cursor/skills/js-ts-security-skill/scripts/verify-security.sh +0 -136
- package/.cursor/skills/logging-best-practices/SKILL.md +0 -50
- package/.cursor/skills/logging-best-practices/examples/cpp.md +0 -36
- package/.cursor/skills/logging-best-practices/examples/csharp.md +0 -49
- package/.cursor/skills/logging-best-practices/examples/javascript.md +0 -77
- package/.cursor/skills/logging-best-practices/examples/python.md +0 -57
- package/.cursor/skills/logging-best-practices/references/logging-standards.md +0 -29
- package/.cursor/skills/opentelemetry-best-practices/SKILL.md +0 -34
- package/.cursor/skills/opentelemetry-best-practices/examples/go.md +0 -32
- package/.cursor/skills/opentelemetry-best-practices/examples/javascript.md +0 -58
- package/.cursor/skills/opentelemetry-best-practices/examples/python.md +0 -37
- package/.cursor/skills/opentelemetry-best-practices/references/otel-standards.md +0 -37
- package/.cursor/skills/python-dependency-mgmt/SKILL.md +0 -42
- package/.cursor/skills/python-dependency-mgmt/examples/dependency_mgmt.md +0 -67
- package/.cursor/skills/python-security-skill/SKILL.md +0 -56
- package/.cursor/skills/python-security-skill/examples/security.md +0 -56
- package/.cursor/skills/self-signed-cert/SKILL.md +0 -42
- package/.cursor/skills/self-signed-cert/scripts/generate-cert.ps1 +0 -45
- package/.cursor/skills/self-signed-cert/scripts/generate-cert.sh +0 -43
- package/.cursor/skills/skill-creator/SKILL.md +0 -196
- package/.cursor/skills/skill-creator/references/output-patterns.md +0 -82
- package/.cursor/skills/skill-creator/references/workflows.md +0 -28
- package/.cursor/skills/skill-creator/scripts/init_skill.py +0 -208
- package/.cursor/skills/skill-creator/scripts/package_skill.py +0 -99
- package/.cursor/skills/skill-creator/scripts/quick_validate.py +0 -113
- package/.cursor/skills/test-accompanied-development/SKILL.md +0 -50
- package/.cursor/skills/test-generator/SKILL.md +0 -65
- package/.cursor/skills/vercel-react-best-practices/SKILL.md +0 -109
- package/.cursor/skills/verify-hardened-docker-skill/SKILL.md +0 -442
- package/.cursor/skills/verify-hardened-docker-skill/scripts/verify-docker-hardening.sh +0 -439
- package/.gemini/gemini.md +0 -14
- package/.gemini/skills/.ma-agents.json +0 -199
- package/.gemini/skills/MANIFEST.yaml +0 -204
- package/.gemini/skills/ai-audit-trail/SKILL.md +0 -23
- package/.gemini/skills/cmake-best-practices/SKILL.md +0 -64
- package/.gemini/skills/cmake-best-practices/examples/cmake.md +0 -59
- package/.gemini/skills/code-documentation/SKILL.md +0 -57
- package/.gemini/skills/code-documentation/examples/cpp.md +0 -29
- package/.gemini/skills/code-documentation/examples/csharp.md +0 -28
- package/.gemini/skills/code-documentation/examples/javascript_typescript.md +0 -28
- package/.gemini/skills/code-documentation/examples/python.md +0 -57
- package/.gemini/skills/code-review/SKILL.md +0 -43
- package/.gemini/skills/commit-message/SKILL.md +0 -79
- package/.gemini/skills/cpp-concurrency-safety/SKILL.md +0 -60
- package/.gemini/skills/cpp-concurrency-safety/examples/concurrency.md +0 -73
- package/.gemini/skills/cpp-const-correctness/SKILL.md +0 -63
- package/.gemini/skills/cpp-const-correctness/examples/const_correctness.md +0 -54
- package/.gemini/skills/cpp-memory-handling/SKILL.md +0 -42
- package/.gemini/skills/cpp-memory-handling/examples/modern-cpp.md +0 -49
- package/.gemini/skills/cpp-memory-handling/examples/smart-pointers.md +0 -46
- package/.gemini/skills/cpp-modern-composition/SKILL.md +0 -64
- package/.gemini/skills/cpp-modern-composition/examples/composition.md +0 -51
- package/.gemini/skills/cpp-robust-interfaces/SKILL.md +0 -55
- package/.gemini/skills/cpp-robust-interfaces/examples/interfaces.md +0 -56
- package/.gemini/skills/create-hardened-docker-skill/SKILL.md +0 -637
- package/.gemini/skills/create-hardened-docker-skill/scripts/create-all.sh +0 -489
- package/.gemini/skills/docker-hardening-verification/SKILL.md +0 -28
- package/.gemini/skills/docker-hardening-verification/scripts/verify-hardening.sh +0 -39
- package/.gemini/skills/docker-image-signing/SKILL.md +0 -28
- package/.gemini/skills/docker-image-signing/scripts/sign-image.sh +0 -33
- package/.gemini/skills/document-revision-history/SKILL.md +0 -104
- package/.gemini/skills/git-workflow-skill/SKILL.md +0 -194
- package/.gemini/skills/git-workflow-skill/hooks/commit-msg +0 -61
- package/.gemini/skills/git-workflow-skill/hooks/pre-commit +0 -38
- package/.gemini/skills/git-workflow-skill/hooks/prepare-commit-msg +0 -56
- package/.gemini/skills/git-workflow-skill/scripts/finish-feature.sh +0 -192
- package/.gemini/skills/git-workflow-skill/scripts/install-hooks.sh +0 -55
- package/.gemini/skills/git-workflow-skill/scripts/start-feature.sh +0 -110
- package/.gemini/skills/git-workflow-skill/scripts/validate-workflow.sh +0 -229
- package/.gemini/skills/js-ts-dependency-mgmt/SKILL.md +0 -49
- package/.gemini/skills/js-ts-dependency-mgmt/examples/dependency_mgmt.md +0 -60
- package/.gemini/skills/js-ts-security-skill/SKILL.md +0 -64
- package/.gemini/skills/js-ts-security-skill/scripts/verify-security.sh +0 -136
- package/.gemini/skills/logging-best-practices/SKILL.md +0 -50
- package/.gemini/skills/logging-best-practices/examples/cpp.md +0 -36
- package/.gemini/skills/logging-best-practices/examples/csharp.md +0 -49
- package/.gemini/skills/logging-best-practices/examples/javascript.md +0 -77
- package/.gemini/skills/logging-best-practices/examples/python.md +0 -57
- package/.gemini/skills/logging-best-practices/references/logging-standards.md +0 -29
- package/.gemini/skills/opentelemetry-best-practices/SKILL.md +0 -34
- package/.gemini/skills/opentelemetry-best-practices/examples/go.md +0 -32
- package/.gemini/skills/opentelemetry-best-practices/examples/javascript.md +0 -58
- package/.gemini/skills/opentelemetry-best-practices/examples/python.md +0 -37
- package/.gemini/skills/opentelemetry-best-practices/references/otel-standards.md +0 -37
- package/.gemini/skills/python-dependency-mgmt/SKILL.md +0 -42
- package/.gemini/skills/python-dependency-mgmt/examples/dependency_mgmt.md +0 -67
- package/.gemini/skills/python-security-skill/SKILL.md +0 -56
- package/.gemini/skills/python-security-skill/examples/security.md +0 -56
- package/.gemini/skills/self-signed-cert/SKILL.md +0 -42
- package/.gemini/skills/self-signed-cert/scripts/generate-cert.ps1 +0 -45
- package/.gemini/skills/self-signed-cert/scripts/generate-cert.sh +0 -43
- package/.gemini/skills/skill-creator/SKILL.md +0 -196
- package/.gemini/skills/skill-creator/references/output-patterns.md +0 -82
- package/.gemini/skills/skill-creator/references/workflows.md +0 -28
- package/.gemini/skills/skill-creator/scripts/init_skill.py +0 -208
- package/.gemini/skills/skill-creator/scripts/package_skill.py +0 -99
- package/.gemini/skills/skill-creator/scripts/quick_validate.py +0 -113
- package/.gemini/skills/test-accompanied-development/SKILL.md +0 -50
- package/.gemini/skills/test-generator/SKILL.md +0 -65
- package/.gemini/skills/vercel-react-best-practices/SKILL.md +0 -109
- package/.gemini/skills/verify-hardened-docker-skill/SKILL.md +0 -442
- package/.gemini/skills/verify-hardened-docker-skill/scripts/verify-docker-hardening.sh +0 -439
- package/.github/copilot/copilot.md +0 -14
- package/.github/copilot/skills/.ma-agents.json +0 -199
- package/.github/copilot/skills/MANIFEST.yaml +0 -204
- package/.github/copilot/skills/ai-audit-trail/SKILL.md +0 -23
- package/.github/copilot/skills/cmake-best-practices/SKILL.md +0 -64
- package/.github/copilot/skills/cmake-best-practices/examples/cmake.md +0 -59
- package/.github/copilot/skills/code-documentation/SKILL.md +0 -57
- package/.github/copilot/skills/code-documentation/examples/cpp.md +0 -29
- package/.github/copilot/skills/code-documentation/examples/csharp.md +0 -28
- package/.github/copilot/skills/code-documentation/examples/javascript_typescript.md +0 -28
- package/.github/copilot/skills/code-documentation/examples/python.md +0 -57
- package/.github/copilot/skills/code-review/SKILL.md +0 -43
- package/.github/copilot/skills/commit-message/SKILL.md +0 -79
- package/.github/copilot/skills/cpp-concurrency-safety/SKILL.md +0 -60
- package/.github/copilot/skills/cpp-concurrency-safety/examples/concurrency.md +0 -73
- package/.github/copilot/skills/cpp-const-correctness/SKILL.md +0 -63
- package/.github/copilot/skills/cpp-const-correctness/examples/const_correctness.md +0 -54
- package/.github/copilot/skills/cpp-memory-handling/SKILL.md +0 -42
- package/.github/copilot/skills/cpp-memory-handling/examples/modern-cpp.md +0 -49
- package/.github/copilot/skills/cpp-memory-handling/examples/smart-pointers.md +0 -46
- package/.github/copilot/skills/cpp-modern-composition/SKILL.md +0 -64
- package/.github/copilot/skills/cpp-modern-composition/examples/composition.md +0 -51
- package/.github/copilot/skills/cpp-robust-interfaces/SKILL.md +0 -55
- package/.github/copilot/skills/cpp-robust-interfaces/examples/interfaces.md +0 -56
- package/.github/copilot/skills/create-hardened-docker-skill/SKILL.md +0 -637
- package/.github/copilot/skills/create-hardened-docker-skill/scripts/create-all.sh +0 -489
- package/.github/copilot/skills/docker-hardening-verification/SKILL.md +0 -28
- package/.github/copilot/skills/docker-hardening-verification/scripts/verify-hardening.sh +0 -39
- package/.github/copilot/skills/docker-image-signing/SKILL.md +0 -28
- package/.github/copilot/skills/docker-image-signing/scripts/sign-image.sh +0 -33
- package/.github/copilot/skills/document-revision-history/SKILL.md +0 -104
- package/.github/copilot/skills/git-workflow-skill/SKILL.md +0 -194
- package/.github/copilot/skills/git-workflow-skill/hooks/commit-msg +0 -61
- package/.github/copilot/skills/git-workflow-skill/hooks/pre-commit +0 -38
- package/.github/copilot/skills/git-workflow-skill/hooks/prepare-commit-msg +0 -56
- package/.github/copilot/skills/git-workflow-skill/scripts/finish-feature.sh +0 -192
- package/.github/copilot/skills/git-workflow-skill/scripts/install-hooks.sh +0 -55
- package/.github/copilot/skills/git-workflow-skill/scripts/start-feature.sh +0 -110
- package/.github/copilot/skills/git-workflow-skill/scripts/validate-workflow.sh +0 -229
- package/.github/copilot/skills/js-ts-dependency-mgmt/SKILL.md +0 -49
- package/.github/copilot/skills/js-ts-dependency-mgmt/examples/dependency_mgmt.md +0 -60
- package/.github/copilot/skills/js-ts-security-skill/SKILL.md +0 -64
- package/.github/copilot/skills/js-ts-security-skill/scripts/verify-security.sh +0 -136
- package/.github/copilot/skills/logging-best-practices/SKILL.md +0 -50
- package/.github/copilot/skills/logging-best-practices/examples/cpp.md +0 -36
- package/.github/copilot/skills/logging-best-practices/examples/csharp.md +0 -49
- package/.github/copilot/skills/logging-best-practices/examples/javascript.md +0 -77
- package/.github/copilot/skills/logging-best-practices/examples/python.md +0 -57
- package/.github/copilot/skills/logging-best-practices/references/logging-standards.md +0 -29
- package/.github/copilot/skills/opentelemetry-best-practices/SKILL.md +0 -34
- package/.github/copilot/skills/opentelemetry-best-practices/examples/go.md +0 -32
- package/.github/copilot/skills/opentelemetry-best-practices/examples/javascript.md +0 -58
- package/.github/copilot/skills/opentelemetry-best-practices/examples/python.md +0 -37
- package/.github/copilot/skills/opentelemetry-best-practices/references/otel-standards.md +0 -37
- package/.github/copilot/skills/python-dependency-mgmt/SKILL.md +0 -42
- package/.github/copilot/skills/python-dependency-mgmt/examples/dependency_mgmt.md +0 -67
- package/.github/copilot/skills/python-security-skill/SKILL.md +0 -56
- package/.github/copilot/skills/python-security-skill/examples/security.md +0 -56
- package/.github/copilot/skills/self-signed-cert/SKILL.md +0 -42
- package/.github/copilot/skills/self-signed-cert/scripts/generate-cert.ps1 +0 -45
- package/.github/copilot/skills/self-signed-cert/scripts/generate-cert.sh +0 -43
- package/.github/copilot/skills/skill-creator/SKILL.md +0 -196
- package/.github/copilot/skills/skill-creator/references/output-patterns.md +0 -82
- package/.github/copilot/skills/skill-creator/references/workflows.md +0 -28
- package/.github/copilot/skills/skill-creator/scripts/init_skill.py +0 -208
- package/.github/copilot/skills/skill-creator/scripts/package_skill.py +0 -99
- package/.github/copilot/skills/skill-creator/scripts/quick_validate.py +0 -113
- package/.github/copilot/skills/test-accompanied-development/SKILL.md +0 -50
- package/.github/copilot/skills/test-generator/SKILL.md +0 -65
- package/.github/copilot/skills/vercel-react-best-practices/SKILL.md +0 -109
- package/.github/copilot/skills/verify-hardened-docker-skill/SKILL.md +0 -442
- package/.github/copilot/skills/verify-hardened-docker-skill/scripts/verify-docker-hardening.sh +0 -439
- package/.kilocode/kilocode.md +0 -14
- package/.kilocode/skills/.ma-agents.json +0 -199
- package/.kilocode/skills/MANIFEST.yaml +0 -204
- package/.kilocode/skills/ai-audit-trail/SKILL.md +0 -23
- package/.kilocode/skills/cmake-best-practices/SKILL.md +0 -64
- package/.kilocode/skills/cmake-best-practices/examples/cmake.md +0 -59
- package/.kilocode/skills/code-documentation/SKILL.md +0 -57
- package/.kilocode/skills/code-documentation/examples/cpp.md +0 -29
- package/.kilocode/skills/code-documentation/examples/csharp.md +0 -28
- package/.kilocode/skills/code-documentation/examples/javascript_typescript.md +0 -28
- package/.kilocode/skills/code-documentation/examples/python.md +0 -57
- package/.kilocode/skills/code-review/SKILL.md +0 -43
- package/.kilocode/skills/commit-message/SKILL.md +0 -79
- package/.kilocode/skills/cpp-concurrency-safety/SKILL.md +0 -60
- package/.kilocode/skills/cpp-concurrency-safety/examples/concurrency.md +0 -73
- package/.kilocode/skills/cpp-const-correctness/SKILL.md +0 -63
- package/.kilocode/skills/cpp-const-correctness/examples/const_correctness.md +0 -54
- package/.kilocode/skills/cpp-memory-handling/SKILL.md +0 -42
- package/.kilocode/skills/cpp-memory-handling/examples/modern-cpp.md +0 -49
- package/.kilocode/skills/cpp-memory-handling/examples/smart-pointers.md +0 -46
- package/.kilocode/skills/cpp-modern-composition/SKILL.md +0 -64
- package/.kilocode/skills/cpp-modern-composition/examples/composition.md +0 -51
- package/.kilocode/skills/cpp-robust-interfaces/SKILL.md +0 -55
- package/.kilocode/skills/cpp-robust-interfaces/examples/interfaces.md +0 -56
- package/.kilocode/skills/create-hardened-docker-skill/SKILL.md +0 -637
- package/.kilocode/skills/create-hardened-docker-skill/scripts/create-all.sh +0 -489
- package/.kilocode/skills/docker-hardening-verification/SKILL.md +0 -28
- package/.kilocode/skills/docker-hardening-verification/scripts/verify-hardening.sh +0 -39
- package/.kilocode/skills/docker-image-signing/SKILL.md +0 -28
- package/.kilocode/skills/docker-image-signing/scripts/sign-image.sh +0 -33
- package/.kilocode/skills/document-revision-history/SKILL.md +0 -104
- package/.kilocode/skills/git-workflow-skill/SKILL.md +0 -194
- package/.kilocode/skills/git-workflow-skill/hooks/commit-msg +0 -61
- package/.kilocode/skills/git-workflow-skill/hooks/pre-commit +0 -38
- package/.kilocode/skills/git-workflow-skill/hooks/prepare-commit-msg +0 -56
- package/.kilocode/skills/git-workflow-skill/scripts/finish-feature.sh +0 -192
- package/.kilocode/skills/git-workflow-skill/scripts/install-hooks.sh +0 -55
- package/.kilocode/skills/git-workflow-skill/scripts/start-feature.sh +0 -110
- package/.kilocode/skills/git-workflow-skill/scripts/validate-workflow.sh +0 -229
- package/.kilocode/skills/js-ts-dependency-mgmt/SKILL.md +0 -49
- package/.kilocode/skills/js-ts-dependency-mgmt/examples/dependency_mgmt.md +0 -60
- package/.kilocode/skills/js-ts-security-skill/SKILL.md +0 -64
- package/.kilocode/skills/js-ts-security-skill/scripts/verify-security.sh +0 -136
- package/.kilocode/skills/logging-best-practices/SKILL.md +0 -50
- package/.kilocode/skills/logging-best-practices/examples/cpp.md +0 -36
- package/.kilocode/skills/logging-best-practices/examples/csharp.md +0 -49
- package/.kilocode/skills/logging-best-practices/examples/javascript.md +0 -77
- package/.kilocode/skills/logging-best-practices/examples/python.md +0 -57
- package/.kilocode/skills/logging-best-practices/references/logging-standards.md +0 -29
- package/.kilocode/skills/opentelemetry-best-practices/SKILL.md +0 -34
- package/.kilocode/skills/opentelemetry-best-practices/examples/go.md +0 -32
- package/.kilocode/skills/opentelemetry-best-practices/examples/javascript.md +0 -58
- package/.kilocode/skills/opentelemetry-best-practices/examples/python.md +0 -37
- package/.kilocode/skills/opentelemetry-best-practices/references/otel-standards.md +0 -37
- package/.kilocode/skills/python-dependency-mgmt/SKILL.md +0 -42
- package/.kilocode/skills/python-dependency-mgmt/examples/dependency_mgmt.md +0 -67
- package/.kilocode/skills/python-security-skill/SKILL.md +0 -56
- package/.kilocode/skills/python-security-skill/examples/security.md +0 -56
- package/.kilocode/skills/self-signed-cert/SKILL.md +0 -42
- package/.kilocode/skills/self-signed-cert/scripts/generate-cert.ps1 +0 -45
- package/.kilocode/skills/self-signed-cert/scripts/generate-cert.sh +0 -43
- package/.kilocode/skills/skill-creator/SKILL.md +0 -196
- package/.kilocode/skills/skill-creator/references/output-patterns.md +0 -82
- package/.kilocode/skills/skill-creator/references/workflows.md +0 -28
- package/.kilocode/skills/skill-creator/scripts/init_skill.py +0 -208
- package/.kilocode/skills/skill-creator/scripts/package_skill.py +0 -99
- package/.kilocode/skills/skill-creator/scripts/quick_validate.py +0 -113
- package/.kilocode/skills/test-accompanied-development/SKILL.md +0 -50
- package/.kilocode/skills/test-generator/SKILL.md +0 -65
- package/.kilocode/skills/vercel-react-best-practices/SKILL.md +0 -109
- package/.kilocode/skills/verify-hardened-docker-skill/SKILL.md +0 -442
- package/.kilocode/skills/verify-hardened-docker-skill/scripts/verify-docker-hardening.sh +0 -439
- package/lib/bmad-cache/tea/.github/CODE_OF_CONDUCT.md +0 -128
- package/lib/bmad-cache/tea/.github/FUNDING.yaml +0 -15
- package/lib/bmad-cache/tea/.github/ISSUE_TEMPLATE/config.yaml +0 -11
- package/lib/bmad-cache/tea/.github/ISSUE_TEMPLATE/feature_request.md +0 -70
- package/lib/bmad-cache/tea/.github/ISSUE_TEMPLATE/issue.md +0 -61
- package/lib/bmad-cache/tea/.github/workflows/docs.yaml +0 -66
- package/lib/bmad-cache/tea/.github/workflows/manual-release.yaml +0 -195
- package/lib/bmad-cache/tea/.github/workflows/quality.yaml +0 -114
|
@@ -1,489 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
#
|
|
3
|
-
# create-all.sh
|
|
4
|
-
# Creates all hardened Docker configuration files
|
|
5
|
-
#
|
|
6
|
-
|
|
7
|
-
set -e
|
|
8
|
-
|
|
9
|
-
# Colors for output
|
|
10
|
-
GREEN='\033[0;32m'
|
|
11
|
-
BLUE='\033[0;34m'
|
|
12
|
-
YELLOW='\033[1;33m'
|
|
13
|
-
NC='\033[0m' # No Color
|
|
14
|
-
|
|
15
|
-
# Configuration
|
|
16
|
-
APP_NAME="${1:-contacts-app}"
|
|
17
|
-
NODE_VERSION="${2:-18.20.4-alpine3.20}"
|
|
18
|
-
NGINX_VERSION="${3:-1.27.3-alpine3.20}"
|
|
19
|
-
|
|
20
|
-
echo -e "${BLUE}🐳 Creating Hardened Docker Configuration${NC}"
|
|
21
|
-
echo -e "${BLUE}==========================================${NC}"
|
|
22
|
-
echo "Application: $APP_NAME"
|
|
23
|
-
echo "Node version: $NODE_VERSION"
|
|
24
|
-
echo "Nginx version: $NGINX_VERSION"
|
|
25
|
-
echo ""
|
|
26
|
-
|
|
27
|
-
# Check if files exist and warn
|
|
28
|
-
check_file() {
|
|
29
|
-
if [ -f "$1" ]; then
|
|
30
|
-
echo -e "${YELLOW}⚠️ Warning: $1 already exists${NC}"
|
|
31
|
-
read -p " Overwrite? (y/N): " -n 1 -r
|
|
32
|
-
echo
|
|
33
|
-
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
|
34
|
-
return 1
|
|
35
|
-
fi
|
|
36
|
-
fi
|
|
37
|
-
return 0
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
# ============================================================================
|
|
41
|
-
# Create Dockerfile
|
|
42
|
-
# ============================================================================
|
|
43
|
-
echo -e "${BLUE}Creating Dockerfile...${NC}"
|
|
44
|
-
|
|
45
|
-
if check_file "Dockerfile"; then
|
|
46
|
-
cat > Dockerfile << 'EOF'
|
|
47
|
-
# syntax=docker/dockerfile:1
|
|
48
|
-
# @fileoverview Multi-stage hardened Dockerfile for production deployment
|
|
49
|
-
# @module Dockerfile
|
|
50
|
-
|
|
51
|
-
# ============================================================================
|
|
52
|
-
# Stage 1: Build
|
|
53
|
-
# ============================================================================
|
|
54
|
-
FROM node:NODE_VERSION AS builder
|
|
55
|
-
|
|
56
|
-
# Security: Create non-root user for build stage
|
|
57
|
-
RUN addgroup -g 1001 -S nodejs && adduser -S nodejs -u 1001
|
|
58
|
-
|
|
59
|
-
# Set working directory
|
|
60
|
-
WORKDIR /app
|
|
61
|
-
|
|
62
|
-
# Copy package files with correct ownership
|
|
63
|
-
COPY --chown=nodejs:nodejs package*.json ./
|
|
64
|
-
|
|
65
|
-
# Install dependencies (production only)
|
|
66
|
-
RUN npm ci --only=production && \
|
|
67
|
-
npm cache clean --force
|
|
68
|
-
|
|
69
|
-
# Copy source files
|
|
70
|
-
COPY --chown=nodejs:nodejs . .
|
|
71
|
-
|
|
72
|
-
# Build application
|
|
73
|
-
RUN npm run build
|
|
74
|
-
|
|
75
|
-
# ============================================================================
|
|
76
|
-
# Stage 2: Production
|
|
77
|
-
# ============================================================================
|
|
78
|
-
FROM nginx:NGINX_VERSION
|
|
79
|
-
|
|
80
|
-
# Security: Run as non-root user (nginx:alpine already has nginx user)
|
|
81
|
-
RUN touch /var/run/nginx.pid && \
|
|
82
|
-
# Create necessary directories with correct ownership
|
|
83
|
-
mkdir -p /var/cache/nginx /var/log/nginx && \
|
|
84
|
-
# Set ownership for nginx user
|
|
85
|
-
chown -R nginx:nginx /var/cache/nginx /var/log/nginx /var/run/nginx.pid && \
|
|
86
|
-
# Set correct permissions
|
|
87
|
-
chmod -R 755 /var/cache/nginx /var/log/nginx && \
|
|
88
|
-
# Remove default nginx files
|
|
89
|
-
rm -rf /usr/share/nginx/html/* && \
|
|
90
|
-
# Remove unnecessary packages (if any were added)
|
|
91
|
-
apk del --purge apk-tools
|
|
92
|
-
|
|
93
|
-
# Set working directory
|
|
94
|
-
WORKDIR /usr/share/nginx/html
|
|
95
|
-
|
|
96
|
-
# Copy build artifacts from builder stage with correct ownership
|
|
97
|
-
COPY --from=builder --chown=nginx:nginx /app/build .
|
|
98
|
-
|
|
99
|
-
# Copy nginx configuration
|
|
100
|
-
COPY --chown=nginx:nginx nginx.conf /etc/nginx/nginx.conf
|
|
101
|
-
|
|
102
|
-
# Security: Set read-only permissions for static files
|
|
103
|
-
RUN find /usr/share/nginx/html -type f -exec chmod 444 {} \; && \
|
|
104
|
-
find /usr/share/nginx/html -type d -exec chmod 555 {} \;
|
|
105
|
-
|
|
106
|
-
# Expose ports (8080/8443 for non-root user)
|
|
107
|
-
EXPOSE 8080 8443
|
|
108
|
-
|
|
109
|
-
# Security: Switch to non-root user
|
|
110
|
-
USER nginx
|
|
111
|
-
|
|
112
|
-
# Health check
|
|
113
|
-
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
|
|
114
|
-
CMD wget --quiet --tries=1 --spider http://localhost:8080/health || exit 1
|
|
115
|
-
|
|
116
|
-
# Run nginx in foreground
|
|
117
|
-
CMD ["nginx", "-g", "daemon off;"]
|
|
118
|
-
EOF
|
|
119
|
-
|
|
120
|
-
# Replace placeholders
|
|
121
|
-
sed -i "s/NODE_VERSION/$NODE_VERSION/g" Dockerfile
|
|
122
|
-
sed -i "s/NGINX_VERSION/$NGINX_VERSION/g" Dockerfile
|
|
123
|
-
|
|
124
|
-
echo -e "${GREEN}✅ Created Dockerfile${NC}"
|
|
125
|
-
fi
|
|
126
|
-
|
|
127
|
-
# ============================================================================
|
|
128
|
-
# Create docker-compose.yml
|
|
129
|
-
# ============================================================================
|
|
130
|
-
echo -e "${BLUE}Creating docker-compose.yml...${NC}"
|
|
131
|
-
|
|
132
|
-
if check_file "docker-compose.yml"; then
|
|
133
|
-
cat > docker-compose.yml << EOF
|
|
134
|
-
version: '3.8'
|
|
135
|
-
|
|
136
|
-
services:
|
|
137
|
-
${APP_NAME}:
|
|
138
|
-
build:
|
|
139
|
-
context: .
|
|
140
|
-
dockerfile: Dockerfile
|
|
141
|
-
container_name: ${APP_NAME}
|
|
142
|
-
|
|
143
|
-
# Port mapping (host:container)
|
|
144
|
-
ports:
|
|
145
|
-
- "80:8080" # HTTP
|
|
146
|
-
- "443:8443" # HTTPS
|
|
147
|
-
|
|
148
|
-
# Environment variables
|
|
149
|
-
environment:
|
|
150
|
-
- NODE_ENV=production
|
|
151
|
-
|
|
152
|
-
# Mount .env file as read-only
|
|
153
|
-
env_file:
|
|
154
|
-
- .env
|
|
155
|
-
|
|
156
|
-
# Security: Read-only root filesystem
|
|
157
|
-
read_only: true
|
|
158
|
-
|
|
159
|
-
# Security: Tmpfs mounts for writable directories
|
|
160
|
-
tmpfs:
|
|
161
|
-
- /tmp
|
|
162
|
-
- /var/cache/nginx
|
|
163
|
-
- /var/run
|
|
164
|
-
|
|
165
|
-
# Security: Drop all capabilities and add only required ones
|
|
166
|
-
cap_drop:
|
|
167
|
-
- ALL
|
|
168
|
-
cap_add:
|
|
169
|
-
- CHOWN
|
|
170
|
-
- SETGID
|
|
171
|
-
- SETUID
|
|
172
|
-
|
|
173
|
-
# Security: Prevent privilege escalation
|
|
174
|
-
security_opt:
|
|
175
|
-
- no-new-privileges:true
|
|
176
|
-
|
|
177
|
-
# Resource limits
|
|
178
|
-
deploy:
|
|
179
|
-
resources:
|
|
180
|
-
limits:
|
|
181
|
-
cpus: '1.0'
|
|
182
|
-
memory: 512M
|
|
183
|
-
reservations:
|
|
184
|
-
cpus: '0.5'
|
|
185
|
-
memory: 256M
|
|
186
|
-
|
|
187
|
-
# Restart policy
|
|
188
|
-
restart: unless-stopped
|
|
189
|
-
|
|
190
|
-
# Health check
|
|
191
|
-
healthcheck:
|
|
192
|
-
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:8080/health"]
|
|
193
|
-
interval: 30s
|
|
194
|
-
timeout: 10s
|
|
195
|
-
retries: 3
|
|
196
|
-
start_period: 40s
|
|
197
|
-
|
|
198
|
-
# Network isolation
|
|
199
|
-
networks:
|
|
200
|
-
- ${APP_NAME}-network
|
|
201
|
-
|
|
202
|
-
networks:
|
|
203
|
-
${APP_NAME}-network:
|
|
204
|
-
driver: bridge
|
|
205
|
-
EOF
|
|
206
|
-
|
|
207
|
-
echo -e "${GREEN}✅ Created docker-compose.yml${NC}"
|
|
208
|
-
fi
|
|
209
|
-
|
|
210
|
-
# ============================================================================
|
|
211
|
-
# Create nginx.conf
|
|
212
|
-
# ============================================================================
|
|
213
|
-
echo -e "${BLUE}Creating nginx.conf...${NC}"
|
|
214
|
-
|
|
215
|
-
if check_file "nginx.conf"; then
|
|
216
|
-
cat > nginx.conf << 'EOF'
|
|
217
|
-
# @fileoverview Production nginx configuration with security hardening
|
|
218
|
-
# @module nginx.conf
|
|
219
|
-
|
|
220
|
-
worker_processes auto;
|
|
221
|
-
error_log /var/log/nginx/error.log warn;
|
|
222
|
-
|
|
223
|
-
events {
|
|
224
|
-
worker_connections 1024;
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
http {
|
|
228
|
-
include /etc/nginx/mime.types;
|
|
229
|
-
default_type application/octet-stream;
|
|
230
|
-
|
|
231
|
-
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
|
|
232
|
-
'$status $body_bytes_sent "$http_referer" '
|
|
233
|
-
'"$http_user_agent" "$http_x_forwarded_for"';
|
|
234
|
-
|
|
235
|
-
access_log /var/log/nginx/access.log main;
|
|
236
|
-
|
|
237
|
-
sendfile on;
|
|
238
|
-
tcp_nopush on;
|
|
239
|
-
tcp_nodelay on;
|
|
240
|
-
keepalive_timeout 65;
|
|
241
|
-
types_hash_max_size 2048;
|
|
242
|
-
|
|
243
|
-
# Security: Hide nginx version
|
|
244
|
-
server_tokens off;
|
|
245
|
-
|
|
246
|
-
# Gzip compression
|
|
247
|
-
gzip on;
|
|
248
|
-
gzip_disable "msie6";
|
|
249
|
-
gzip_vary on;
|
|
250
|
-
gzip_proxied any;
|
|
251
|
-
gzip_comp_level 6;
|
|
252
|
-
gzip_types text/plain text/css text/xml text/javascript
|
|
253
|
-
application/json application/javascript application/xml+rss
|
|
254
|
-
application/rss+xml font/truetype font/opentype
|
|
255
|
-
application/vnd.ms-fontobject image/svg+xml;
|
|
256
|
-
gzip_min_length 1000;
|
|
257
|
-
|
|
258
|
-
# HTTP server - redirect to HTTPS (port 8080 for non-root)
|
|
259
|
-
server {
|
|
260
|
-
listen 8080;
|
|
261
|
-
server_name _;
|
|
262
|
-
|
|
263
|
-
# Allow health check on HTTP
|
|
264
|
-
location /health {
|
|
265
|
-
access_log off;
|
|
266
|
-
return 200 "healthy\n";
|
|
267
|
-
add_header Content-Type text/plain;
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
# Redirect all other traffic to HTTPS
|
|
271
|
-
location / {
|
|
272
|
-
return 301 https://$host$request_uri;
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
# HTTPS server (port 8443 for non-root)
|
|
277
|
-
server {
|
|
278
|
-
listen 8443 ssl http2;
|
|
279
|
-
server_name _;
|
|
280
|
-
|
|
281
|
-
# SSL certificate paths (user must provide)
|
|
282
|
-
# ssl_certificate /etc/nginx/ssl/cert.pem;
|
|
283
|
-
# ssl_certificate_key /etc/nginx/ssl/key.pem;
|
|
284
|
-
|
|
285
|
-
# SSL security settings
|
|
286
|
-
ssl_protocols TLSv1.2 TLSv1.3;
|
|
287
|
-
ssl_prefer_server_ciphers on;
|
|
288
|
-
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
|
|
289
|
-
|
|
290
|
-
root /usr/share/nginx/html;
|
|
291
|
-
index index.html;
|
|
292
|
-
|
|
293
|
-
# Security headers
|
|
294
|
-
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; connect-src 'self' https://people.googleapis.com https://oauth2.googleapis.com; font-src 'self' data:;" always;
|
|
295
|
-
add_header X-Content-Type-Options "nosniff" always;
|
|
296
|
-
add_header X-Frame-Options "DENY" always;
|
|
297
|
-
add_header X-XSS-Protection "1; mode=block" always;
|
|
298
|
-
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
|
|
299
|
-
|
|
300
|
-
# SPA fallback routing
|
|
301
|
-
location / {
|
|
302
|
-
try_files $uri $uri/ /index.html;
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
# Cache static assets
|
|
306
|
-
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
|
|
307
|
-
expires 1y;
|
|
308
|
-
add_header Cache-Control "public, immutable";
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
# No caching for index.html
|
|
312
|
-
location = /index.html {
|
|
313
|
-
add_header Cache-Control "no-store, no-cache, must-revalidate";
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
# Health check endpoint
|
|
317
|
-
location /health {
|
|
318
|
-
access_log off;
|
|
319
|
-
return 200 "healthy\n";
|
|
320
|
-
add_header Content-Type text/plain;
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
EOF
|
|
325
|
-
|
|
326
|
-
echo -e "${GREEN}✅ Created nginx.conf${NC}"
|
|
327
|
-
fi
|
|
328
|
-
|
|
329
|
-
# ============================================================================
|
|
330
|
-
# Create .dockerignore
|
|
331
|
-
# ============================================================================
|
|
332
|
-
echo -e "${BLUE}Creating .dockerignore...${NC}"
|
|
333
|
-
|
|
334
|
-
if check_file ".dockerignore"; then
|
|
335
|
-
cat > .dockerignore << 'EOF'
|
|
336
|
-
# Dependencies (will be installed via npm ci)
|
|
337
|
-
node_modules/
|
|
338
|
-
npm-debug.log*
|
|
339
|
-
yarn.lock
|
|
340
|
-
package-lock.json
|
|
341
|
-
|
|
342
|
-
# Build outputs (will be generated in Docker build)
|
|
343
|
-
build/
|
|
344
|
-
dist/
|
|
345
|
-
.cache/
|
|
346
|
-
|
|
347
|
-
# Environment files (security - never bake into image)
|
|
348
|
-
.env
|
|
349
|
-
.env.local
|
|
350
|
-
.env.*.local
|
|
351
|
-
|
|
352
|
-
# Git (not needed in container)
|
|
353
|
-
.git/
|
|
354
|
-
.gitignore
|
|
355
|
-
.gitattributes
|
|
356
|
-
|
|
357
|
-
# Tests (not needed in production image)
|
|
358
|
-
**/*.test.ts
|
|
359
|
-
**/*.test.tsx
|
|
360
|
-
**/*.test.js
|
|
361
|
-
**/*.test.jsx
|
|
362
|
-
**/__tests__/
|
|
363
|
-
coverage/
|
|
364
|
-
.nyc_output/
|
|
365
|
-
|
|
366
|
-
# Documentation (not needed in container)
|
|
367
|
-
*.md
|
|
368
|
-
docs/
|
|
369
|
-
CHANGELOG
|
|
370
|
-
LICENSE
|
|
371
|
-
|
|
372
|
-
# IDE files (not needed in container)
|
|
373
|
-
.vscode/
|
|
374
|
-
.idea/
|
|
375
|
-
*.swp
|
|
376
|
-
*.swo
|
|
377
|
-
*.sublime-*
|
|
378
|
-
|
|
379
|
-
# CI/CD (not needed in container)
|
|
380
|
-
.github/
|
|
381
|
-
.gitlab-ci.yml
|
|
382
|
-
.travis.yml
|
|
383
|
-
Jenkinsfile
|
|
384
|
-
|
|
385
|
-
# Storybook (not needed in production)
|
|
386
|
-
.storybook/
|
|
387
|
-
storybook-static/
|
|
388
|
-
|
|
389
|
-
# Misc
|
|
390
|
-
.DS_Store
|
|
391
|
-
Thumbs.db
|
|
392
|
-
*.log
|
|
393
|
-
tmp/
|
|
394
|
-
temp/
|
|
395
|
-
|
|
396
|
-
# Docker files (already in context)
|
|
397
|
-
Dockerfile*
|
|
398
|
-
docker-compose*.yml
|
|
399
|
-
.dockerignore
|
|
400
|
-
|
|
401
|
-
# Agent files (not needed in container)
|
|
402
|
-
.agent/
|
|
403
|
-
_bmad-output/
|
|
404
|
-
EOF
|
|
405
|
-
|
|
406
|
-
echo -e "${GREEN}✅ Created .dockerignore${NC}"
|
|
407
|
-
fi
|
|
408
|
-
|
|
409
|
-
# ============================================================================
|
|
410
|
-
# Create .env.example (if doesn't exist)
|
|
411
|
-
# ============================================================================
|
|
412
|
-
echo -e "${BLUE}Creating .env.example (if not exists)...${NC}"
|
|
413
|
-
|
|
414
|
-
if [ ! -f ".env.example" ]; then
|
|
415
|
-
cat > .env.example << 'EOF'
|
|
416
|
-
# Environment Configuration Template
|
|
417
|
-
# Copy this file to .env and fill in your actual values
|
|
418
|
-
# NEVER commit .env to git!
|
|
419
|
-
|
|
420
|
-
# Google OAuth Configuration
|
|
421
|
-
REACT_APP_GOOGLE_CLIENT_ID=<your-client-id-here>.apps.googleusercontent.com
|
|
422
|
-
|
|
423
|
-
# API Configuration
|
|
424
|
-
REACT_APP_API_BASE_URL=https://people.googleapis.com/v1
|
|
425
|
-
|
|
426
|
-
# Application Environment
|
|
427
|
-
NODE_ENV=production
|
|
428
|
-
EOF
|
|
429
|
-
|
|
430
|
-
echo -e "${GREEN}✅ Created .env.example${NC}"
|
|
431
|
-
else
|
|
432
|
-
echo -e "${YELLOW} .env.example already exists, skipping${NC}"
|
|
433
|
-
fi
|
|
434
|
-
|
|
435
|
-
# ============================================================================
|
|
436
|
-
# Update .gitignore
|
|
437
|
-
# ============================================================================
|
|
438
|
-
echo -e "${BLUE}Updating .gitignore...${NC}"
|
|
439
|
-
|
|
440
|
-
if [ -f ".gitignore" ]; then
|
|
441
|
-
if ! grep -q "^\.env$" .gitignore; then
|
|
442
|
-
echo "" >> .gitignore
|
|
443
|
-
echo "# Environment variables (secrets)" >> .gitignore
|
|
444
|
-
echo ".env" >> .gitignore
|
|
445
|
-
echo -e "${GREEN}✅ Added .env to .gitignore${NC}"
|
|
446
|
-
else
|
|
447
|
-
echo -e "${YELLOW} .env already in .gitignore${NC}"
|
|
448
|
-
fi
|
|
449
|
-
else
|
|
450
|
-
cat > .gitignore << 'EOF'
|
|
451
|
-
# Environment variables (secrets)
|
|
452
|
-
.env
|
|
453
|
-
|
|
454
|
-
# Dependencies
|
|
455
|
-
node_modules/
|
|
456
|
-
|
|
457
|
-
# Build outputs
|
|
458
|
-
build/
|
|
459
|
-
dist/
|
|
460
|
-
|
|
461
|
-
# Logs
|
|
462
|
-
*.log
|
|
463
|
-
EOF
|
|
464
|
-
echo -e "${GREEN}✅ Created .gitignore${NC}"
|
|
465
|
-
fi
|
|
466
|
-
|
|
467
|
-
# ============================================================================
|
|
468
|
-
# Summary
|
|
469
|
-
# ============================================================================
|
|
470
|
-
echo ""
|
|
471
|
-
echo -e "${GREEN}✅ Hardened Docker configuration created successfully!${NC}"
|
|
472
|
-
echo ""
|
|
473
|
-
echo "Files created:"
|
|
474
|
-
echo " - Dockerfile (multi-stage, non-root, hardened)"
|
|
475
|
-
echo " - docker-compose.yml (security-hardened)"
|
|
476
|
-
echo " - nginx.conf (production configuration)"
|
|
477
|
-
echo " - .dockerignore (optimized build context)"
|
|
478
|
-
echo " - .env.example (template)"
|
|
479
|
-
echo ""
|
|
480
|
-
echo "Next steps:"
|
|
481
|
-
echo " 1. Copy .env.example to .env and fill in your credentials"
|
|
482
|
-
echo " 2. Build the image: docker build -t ${APP_NAME} ."
|
|
483
|
-
echo " 3. Scan for vulnerabilities: trivy image ${APP_NAME}"
|
|
484
|
-
echo " 4. Start the container: docker-compose up -d"
|
|
485
|
-
echo " 5. Verify security: docker exec ${APP_NAME} whoami (should show 'nginx')"
|
|
486
|
-
echo ""
|
|
487
|
-
echo "To verify hardening, run:"
|
|
488
|
-
echo " ./.agent/develop/verify-hardened-docker-skill/scripts/verify-docker-hardening.sh ${APP_NAME}"
|
|
489
|
-
echo ""
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: Docker Hardening Verification
|
|
3
|
-
description: Audits Docker images for security best practices, least privilege, and OpenShift compliance.
|
|
4
|
-
---
|
|
5
|
-
# Docker Hardening Verification
|
|
6
|
-
|
|
7
|
-
## Purpose
|
|
8
|
-
Audit Docker images to ensure they follow security best practices, specifically focusing on non-root execution and least privilege principles required for hardened clusters like OpenShift.
|
|
9
|
-
|
|
10
|
-
## Instructions
|
|
11
|
-
1. **Inspect Image**: Use `docker inspect` or `podman inspect` to check metadata.
|
|
12
|
-
2. **Verify User**:
|
|
13
|
-
- Ensure `USER` is defined and is NOT `root` or `0`.
|
|
14
|
-
- Recommended: Use a high-numbered UID (e.g., `1001`).
|
|
15
|
-
3. **Check Permissions**:
|
|
16
|
-
- Ensure sensitive directories are not world-writable.
|
|
17
|
-
- Check for `setuid`/`setgid` bits on binaries.
|
|
18
|
-
4. **OpenShift Compliance**:
|
|
19
|
-
- Verify that the image doesn't require specific UIDs if it's meant to run with an arbitrary assigned UID (OpenShift's default).
|
|
20
|
-
- Check if the `/etc/passwd` entry handles arbitrary UIDs (e.g., by using `nss_wrapper` or similar).
|
|
21
|
-
|
|
22
|
-
## Rules
|
|
23
|
-
- Fail the audit if `USER root` is detected.
|
|
24
|
-
- Flag a warning if many unnecessary packages/tools are present.
|
|
25
|
-
- Ensure only necessary ports are exposed.
|
|
26
|
-
|
|
27
|
-
## Usage
|
|
28
|
-
Run `scripts/verify-hardening.sh <image_name>`
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# verify-hardening.sh - Part of ma-agents docker-hardening-verification skill
|
|
3
|
-
|
|
4
|
-
IMAGE=$1
|
|
5
|
-
|
|
6
|
-
if [ -z "$IMAGE" ]; then
|
|
7
|
-
echo "Usage: $0 <image_name>"
|
|
8
|
-
exit 1
|
|
9
|
-
fi
|
|
10
|
-
|
|
11
|
-
echo "Auditing image: $IMAGE"
|
|
12
|
-
|
|
13
|
-
# 1. Check User
|
|
14
|
-
USER_VAL=$(docker inspect --format='{{.Config.User}}' "$IMAGE")
|
|
15
|
-
|
|
16
|
-
if [ -z "$USER_VAL" ] || [ "$USER_VAL" == "root" ] || [ "$USER_VAL" == "0" ]; then
|
|
17
|
-
echo "[FAIL] Image runs as root! Definining a non-root USER is mandatory for hardened clusters."
|
|
18
|
-
else
|
|
19
|
-
echo "[PASS] Image runs as user: $USER_VAL"
|
|
20
|
-
fi
|
|
21
|
-
|
|
22
|
-
# 2. Check for sensitive capabilities (simplified check)
|
|
23
|
-
CAPS=$(docker inspect --format='{{.Config.CapAdd}}' "$IMAGE")
|
|
24
|
-
if [ "$CAPS" != "<nil>" ] && [ -n "$CAPS" ]; then
|
|
25
|
-
echo "[WARNING] Image has explicitly added capabilities: $CAPS"
|
|
26
|
-
fi
|
|
27
|
-
|
|
28
|
-
# 3. Check for exposed ports
|
|
29
|
-
PORTS=$(docker inspect --format='{{range $p, $conf := .Config.ExposedPorts}}{{$p}} {{end}}' "$IMAGE")
|
|
30
|
-
echo "[INFO] Exposed ports: ${PORTS:-none}"
|
|
31
|
-
|
|
32
|
-
# 4. OpenShift specific check (arbitrary UID support)
|
|
33
|
-
# This is a heuristic check looking for common entrypoint patterns
|
|
34
|
-
ENTRYPOINT=$(docker inspect --format='{{.Config.Entrypoint}}' "$IMAGE")
|
|
35
|
-
if [[ "$ENTRYPOINT" == *"bash"* ]]; then
|
|
36
|
-
echo "[INFO] Entrypoint uses bash, manual check for UID mapping recommended."
|
|
37
|
-
fi
|
|
38
|
-
|
|
39
|
-
echo "Summary: Audit complete for $IMAGE"
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: Docker Image Signing
|
|
3
|
-
description: Automates the signing of Docker images using certificates and Cosign/Notary.
|
|
4
|
-
---
|
|
5
|
-
# Docker Image Signing
|
|
6
|
-
|
|
7
|
-
## Purpose
|
|
8
|
-
Ensure the integrity and authenticity of Docker images by signing them with a cryptographic key/certificate. This prevents unauthorized image substitution and ensures only trusted images are deployed.
|
|
9
|
-
|
|
10
|
-
## Instructions
|
|
11
|
-
1. **Tool Selection**: Use `cosign` (recommended) or `notary`.
|
|
12
|
-
2. **Environment Check**: Verify that the signing tool and Docker/Podman are installed.
|
|
13
|
-
3. **Signing Process**:
|
|
14
|
-
- Load the provided certificate/key.
|
|
15
|
-
- Run the signing command against the target image (using its SHA256 digest for immutability).
|
|
16
|
-
4. **Verification**: Always run a verification check immediately after signing.
|
|
17
|
-
|
|
18
|
-
## Rules
|
|
19
|
-
- NEVER sign images by tag alone; use the immutable digest (e.g., `image@sha256:...`).
|
|
20
|
-
- Private keys must be handled as secrets and never stored in the clear.
|
|
21
|
-
- Ensure the certificate provided is valid and not expired.
|
|
22
|
-
|
|
23
|
-
## Usage
|
|
24
|
-
Run the provided script in `scripts/sign-image.sh` with:
|
|
25
|
-
- `IMAGE`: The image reference with digest.
|
|
26
|
-
- `CERT`: Path to the certificate file.
|
|
27
|
-
- `KEY`: Path to the private key file.
|
|
28
|
-
- `PASSPHRASE`: (Optional) Key passphrase.
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# sign-image.sh - Part of ma-agents docker-image-signing skill
|
|
3
|
-
|
|
4
|
-
IMAGE=$1
|
|
5
|
-
CERT=$2
|
|
6
|
-
KEY=$3
|
|
7
|
-
PASSPHRASE=$4
|
|
8
|
-
|
|
9
|
-
if [ -z "$IMAGE" ] || [ -z "$CERT" ] || [ -z "$KEY" ]; then
|
|
10
|
-
echo "Usage: $0 <image_digest> <cert_file> <key_file> [passphrase]"
|
|
11
|
-
exit 1
|
|
12
|
-
fi
|
|
13
|
-
|
|
14
|
-
echo "Signing image: $IMAGE"
|
|
15
|
-
|
|
16
|
-
# Check for cosign
|
|
17
|
-
if command -v cosign &> /dev/null; then
|
|
18
|
-
echo "Using Cosign for signing..."
|
|
19
|
-
if [ -n "$PASSPHRASE" ]; then
|
|
20
|
-
export COSIGN_PASSWORD=$PASSPHRASE
|
|
21
|
-
fi
|
|
22
|
-
cosign sign --key "$KEY" --cert "$CERT" "$IMAGE"
|
|
23
|
-
else
|
|
24
|
-
echo "Error: cosign not found. Please install cosign to use this skill."
|
|
25
|
-
exit 1
|
|
26
|
-
fi
|
|
27
|
-
|
|
28
|
-
if [ $? -eq 0 ]; then
|
|
29
|
-
echo "Successfully signed $IMAGE"
|
|
30
|
-
else
|
|
31
|
-
echo "Failed to sign $IMAGE"
|
|
32
|
-
exit 1
|
|
33
|
-
fi
|