ma-agents 2.20.0 → 2.20.2
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/README.md +55 -1
- package/lib/agents.js +22 -11
- package/lib/bmad-cache/bmb/_git_preserved/HEAD +1 -0
- package/lib/bmad-cache/bmb/_git_preserved/config +13 -0
- package/lib/bmad-cache/bmb/_git_preserved/description +1 -0
- package/lib/bmad-cache/bmb/_git_preserved/hooks/applypatch-msg.sample +15 -0
- package/lib/bmad-cache/bmb/_git_preserved/hooks/commit-msg.sample +24 -0
- package/lib/bmad-cache/bmb/_git_preserved/hooks/fsmonitor-watchman.sample +174 -0
- package/lib/bmad-cache/bmb/_git_preserved/hooks/post-update.sample +8 -0
- package/lib/bmad-cache/bmb/_git_preserved/hooks/pre-applypatch.sample +14 -0
- package/lib/bmad-cache/bmb/_git_preserved/hooks/pre-commit.sample +49 -0
- package/lib/bmad-cache/bmb/_git_preserved/hooks/pre-merge-commit.sample +13 -0
- package/lib/bmad-cache/bmb/_git_preserved/hooks/pre-push.sample +53 -0
- package/lib/bmad-cache/bmb/_git_preserved/hooks/pre-rebase.sample +169 -0
- package/lib/bmad-cache/bmb/_git_preserved/hooks/pre-receive.sample +24 -0
- package/lib/bmad-cache/bmb/_git_preserved/hooks/prepare-commit-msg.sample +42 -0
- package/lib/bmad-cache/bmb/_git_preserved/hooks/push-to-checkout.sample +78 -0
- package/lib/bmad-cache/bmb/_git_preserved/hooks/sendemail-validate.sample +77 -0
- package/lib/bmad-cache/bmb/_git_preserved/hooks/update.sample +128 -0
- package/lib/bmad-cache/bmb/_git_preserved/index +0 -0
- package/lib/bmad-cache/bmb/_git_preserved/info/exclude +6 -0
- package/lib/bmad-cache/bmb/_git_preserved/logs/HEAD +1 -0
- package/lib/bmad-cache/bmb/_git_preserved/logs/refs/heads/main +1 -0
- package/lib/bmad-cache/bmb/_git_preserved/logs/refs/remotes/origin/HEAD +1 -0
- package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-c6e539e2308f8ed764c5b54b6ab68a67f8a3796b.idx +0 -0
- package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-c6e539e2308f8ed764c5b54b6ab68a67f8a3796b.pack +0 -0
- package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-c6e539e2308f8ed764c5b54b6ab68a67f8a3796b.rev +0 -0
- package/lib/bmad-cache/bmb/_git_preserved/packed-refs +2 -0
- package/lib/bmad-cache/bmb/_git_preserved/refs/heads/main +1 -0
- package/lib/bmad-cache/bmb/_git_preserved/refs/remotes/origin/HEAD +1 -0
- package/lib/bmad-cache/bmb/_git_preserved/shallow +1 -0
- package/lib/bmad-cache/cache-manifest.json +6 -6
- package/lib/bmad-cache/cis/_git_preserved/HEAD +1 -0
- package/lib/bmad-cache/cis/_git_preserved/config +13 -0
- package/lib/bmad-cache/cis/_git_preserved/description +1 -0
- package/lib/bmad-cache/cis/_git_preserved/hooks/applypatch-msg.sample +15 -0
- package/lib/bmad-cache/cis/_git_preserved/hooks/commit-msg.sample +24 -0
- package/lib/bmad-cache/cis/_git_preserved/hooks/fsmonitor-watchman.sample +174 -0
- package/lib/bmad-cache/cis/_git_preserved/hooks/post-update.sample +8 -0
- package/lib/bmad-cache/cis/_git_preserved/hooks/pre-applypatch.sample +14 -0
- package/lib/bmad-cache/cis/_git_preserved/hooks/pre-commit.sample +49 -0
- package/lib/bmad-cache/cis/_git_preserved/hooks/pre-merge-commit.sample +13 -0
- package/lib/bmad-cache/cis/_git_preserved/hooks/pre-push.sample +53 -0
- package/lib/bmad-cache/cis/_git_preserved/hooks/pre-rebase.sample +169 -0
- package/lib/bmad-cache/cis/_git_preserved/hooks/pre-receive.sample +24 -0
- package/lib/bmad-cache/cis/_git_preserved/hooks/prepare-commit-msg.sample +42 -0
- package/lib/bmad-cache/cis/_git_preserved/hooks/push-to-checkout.sample +78 -0
- package/lib/bmad-cache/cis/_git_preserved/hooks/sendemail-validate.sample +77 -0
- package/lib/bmad-cache/cis/_git_preserved/hooks/update.sample +128 -0
- package/lib/bmad-cache/cis/_git_preserved/index +0 -0
- package/lib/bmad-cache/cis/_git_preserved/info/exclude +6 -0
- package/lib/bmad-cache/cis/_git_preserved/logs/HEAD +1 -0
- package/lib/bmad-cache/cis/_git_preserved/logs/refs/heads/main +1 -0
- package/lib/bmad-cache/cis/_git_preserved/logs/refs/remotes/origin/HEAD +1 -0
- package/lib/bmad-cache/cis/_git_preserved/objects/pack/pack-157d7eb8d527233a8607d926fc74ebf87f2ae0d3.idx +0 -0
- package/lib/bmad-cache/cis/_git_preserved/objects/pack/pack-157d7eb8d527233a8607d926fc74ebf87f2ae0d3.pack +0 -0
- package/lib/bmad-cache/cis/_git_preserved/objects/pack/pack-157d7eb8d527233a8607d926fc74ebf87f2ae0d3.rev +0 -0
- package/lib/bmad-cache/cis/_git_preserved/packed-refs +2 -0
- package/lib/bmad-cache/cis/_git_preserved/refs/heads/main +1 -0
- package/lib/bmad-cache/cis/_git_preserved/refs/remotes/origin/HEAD +1 -0
- package/lib/bmad-cache/cis/_git_preserved/shallow +1 -0
- package/lib/bmad-cache/gds/_git_preserved/HEAD +1 -0
- package/lib/bmad-cache/gds/_git_preserved/config +13 -0
- package/lib/bmad-cache/gds/_git_preserved/description +1 -0
- package/lib/bmad-cache/gds/_git_preserved/hooks/applypatch-msg.sample +15 -0
- package/lib/bmad-cache/gds/_git_preserved/hooks/commit-msg.sample +24 -0
- package/lib/bmad-cache/gds/_git_preserved/hooks/fsmonitor-watchman.sample +174 -0
- package/lib/bmad-cache/gds/_git_preserved/hooks/post-update.sample +8 -0
- package/lib/bmad-cache/gds/_git_preserved/hooks/pre-applypatch.sample +14 -0
- package/lib/bmad-cache/gds/_git_preserved/hooks/pre-commit.sample +49 -0
- package/lib/bmad-cache/gds/_git_preserved/hooks/pre-merge-commit.sample +13 -0
- package/lib/bmad-cache/gds/_git_preserved/hooks/pre-push.sample +53 -0
- package/lib/bmad-cache/gds/_git_preserved/hooks/pre-rebase.sample +169 -0
- package/lib/bmad-cache/gds/_git_preserved/hooks/pre-receive.sample +24 -0
- package/lib/bmad-cache/gds/_git_preserved/hooks/prepare-commit-msg.sample +42 -0
- package/lib/bmad-cache/gds/_git_preserved/hooks/push-to-checkout.sample +78 -0
- package/lib/bmad-cache/gds/_git_preserved/hooks/sendemail-validate.sample +77 -0
- package/lib/bmad-cache/gds/_git_preserved/hooks/update.sample +128 -0
- package/lib/bmad-cache/gds/_git_preserved/index +0 -0
- package/lib/bmad-cache/gds/_git_preserved/info/exclude +6 -0
- package/lib/bmad-cache/gds/_git_preserved/logs/HEAD +1 -0
- package/lib/bmad-cache/gds/_git_preserved/logs/refs/heads/main +1 -0
- package/lib/bmad-cache/gds/_git_preserved/logs/refs/remotes/origin/HEAD +1 -0
- package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-44faafb9245b4ca17ad81bd6c9e6fc52fb5915a1.idx +0 -0
- package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-44faafb9245b4ca17ad81bd6c9e6fc52fb5915a1.pack +0 -0
- package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-44faafb9245b4ca17ad81bd6c9e6fc52fb5915a1.rev +0 -0
- package/lib/bmad-cache/gds/_git_preserved/packed-refs +2 -0
- package/lib/bmad-cache/gds/_git_preserved/refs/heads/main +1 -0
- package/lib/bmad-cache/gds/_git_preserved/refs/remotes/origin/HEAD +1 -0
- package/lib/bmad-cache/gds/_git_preserved/refs/tags/v0.2.2 +1 -0
- package/lib/bmad-cache/gds/_git_preserved/shallow +1 -0
- package/lib/bmad-cache/gds/package.json +2 -4
- package/lib/bmad-cache/gds/src/agents/gds-agent-game-architect/bmad-skill-manifest.yaml +11 -0
- package/lib/bmad-cache/gds/src/agents/gds-agent-game-designer/bmad-skill-manifest.yaml +11 -0
- package/lib/bmad-cache/gds/src/agents/gds-agent-game-dev/bmad-skill-manifest.yaml +11 -0
- package/lib/bmad-cache/gds/src/agents/gds-agent-game-qa/bmad-skill-manifest.yaml +11 -0
- package/lib/bmad-cache/gds/src/agents/gds-agent-game-scrum-master/bmad-skill-manifest.yaml +11 -0
- package/lib/bmad-cache/gds/src/agents/gds-agent-game-solo-dev/bmad-skill-manifest.yaml +11 -0
- package/lib/bmad-cache/gds/src/agents/gds-agent-tech-writer/bmad-skill-manifest.yaml +11 -0
- package/lib/bmad-cache/gds/src/module-help.csv +28 -28
- package/lib/bmad-cache/gds/src/workflows/1-preproduction/gds-brainstorm-game/bmad-skill-manifest.yaml +1 -0
- package/lib/bmad-cache/gds/src/workflows/1-preproduction/gds-create-game-brief/bmad-skill-manifest.yaml +1 -0
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-gdd/bmad-skill-manifest.yaml +1 -0
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-narrative/bmad-skill-manifest.yaml +1 -0
- package/lib/bmad-cache/gds/src/workflows/3-technical/gds-check-implementation-readiness/bmad-skill-manifest.yaml +1 -0
- package/lib/bmad-cache/gds/src/workflows/3-technical/gds-create-epics-and-stories/bmad-skill-manifest.yaml +1 -0
- package/lib/bmad-cache/gds/src/workflows/3-technical/gds-game-architecture/bmad-skill-manifest.yaml +1 -0
- package/lib/bmad-cache/gds/src/workflows/3-technical/gds-generate-project-context/bmad-skill-manifest.yaml +1 -0
- package/lib/bmad-cache/gds/src/workflows/4-production/gds-code-review/bmad-skill-manifest.yaml +1 -0
- package/lib/bmad-cache/gds/src/workflows/4-production/gds-correct-course/bmad-skill-manifest.yaml +1 -0
- package/lib/bmad-cache/gds/src/workflows/4-production/gds-retrospective/bmad-skill-manifest.yaml +1 -0
- package/lib/bmad-cache/gds/src/workflows/4-production/gds-sprint-planning/bmad-skill-manifest.yaml +1 -0
- package/lib/bmad-cache/gds/src/workflows/4-production/gds-sprint-status/bmad-skill-manifest.yaml +1 -0
- package/lib/bmad-cache/gds/src/workflows/gametest/gds-e2e-scaffold/bmad-skill-manifest.yaml +1 -0
- package/lib/bmad-cache/gds/src/workflows/gametest/gds-performance-test/bmad-skill-manifest.yaml +1 -0
- package/lib/bmad-cache/gds/src/workflows/gametest/gds-playtest-plan/bmad-skill-manifest.yaml +1 -0
- package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-automate/bmad-skill-manifest.yaml +1 -0
- package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-design/bmad-skill-manifest.yaml +1 -0
- package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-framework/bmad-skill-manifest.yaml +1 -0
- package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-review/bmad-skill-manifest.yaml +1 -0
- package/lib/bmad-cache/gds/src/workflows/gds-document-project/bmad-skill-manifest.yaml +1 -0
- package/lib/bmad-cache/gds/src/workflows/gds-quick-flow/gds-quick-dev/bmad-skill-manifest.yaml +1 -4
- package/lib/bmad-cache/gds/src/workflows/gds-quick-flow/gds-quick-dev-new-preview/bmad-skill-manifest.yaml +1 -4
- package/lib/bmad-cache/gds/src/workflows/gds-quick-flow/gds-quick-spec/bmad-skill-manifest.yaml +1 -0
- package/lib/bmad-cache/tea/_git_preserved/HEAD +1 -0
- package/lib/bmad-cache/tea/_git_preserved/config +13 -0
- package/lib/bmad-cache/tea/_git_preserved/description +1 -0
- package/lib/bmad-cache/tea/_git_preserved/hooks/applypatch-msg.sample +15 -0
- package/lib/bmad-cache/tea/_git_preserved/hooks/commit-msg.sample +24 -0
- package/lib/bmad-cache/tea/_git_preserved/hooks/fsmonitor-watchman.sample +174 -0
- package/lib/bmad-cache/tea/_git_preserved/hooks/post-update.sample +8 -0
- package/lib/bmad-cache/tea/_git_preserved/hooks/pre-applypatch.sample +14 -0
- package/lib/bmad-cache/tea/_git_preserved/hooks/pre-commit.sample +49 -0
- package/lib/bmad-cache/tea/_git_preserved/hooks/pre-merge-commit.sample +13 -0
- package/lib/bmad-cache/tea/_git_preserved/hooks/pre-push.sample +53 -0
- package/lib/bmad-cache/tea/_git_preserved/hooks/pre-rebase.sample +169 -0
- package/lib/bmad-cache/tea/_git_preserved/hooks/pre-receive.sample +24 -0
- package/lib/bmad-cache/tea/_git_preserved/hooks/prepare-commit-msg.sample +42 -0
- package/lib/bmad-cache/tea/_git_preserved/hooks/push-to-checkout.sample +78 -0
- package/lib/bmad-cache/tea/_git_preserved/hooks/sendemail-validate.sample +77 -0
- package/lib/bmad-cache/tea/_git_preserved/hooks/update.sample +128 -0
- package/lib/bmad-cache/tea/_git_preserved/index +0 -0
- package/lib/bmad-cache/tea/_git_preserved/info/exclude +6 -0
- package/lib/bmad-cache/tea/_git_preserved/objects/pack/pack-96ec1ce3a9ef4c891e00e060795b4434ba8f7163.idx +0 -0
- package/lib/bmad-cache/tea/_git_preserved/objects/pack/pack-96ec1ce3a9ef4c891e00e060795b4434ba8f7163.pack +0 -0
- package/lib/bmad-cache/tea/_git_preserved/objects/pack/pack-96ec1ce3a9ef4c891e00e060795b4434ba8f7163.rev +0 -0
- package/lib/bmad-cache/tea/_git_preserved/packed-refs +2 -0
- package/lib/bmad-cache/tea/_git_preserved/refs/heads/main +1 -0
- package/lib/bmad-cache/tea/_git_preserved/refs/remotes/origin/HEAD +1 -0
- package/lib/bmad-cache/tea/_git_preserved/refs/tags/v1.7.0 +1 -0
- package/lib/bmad-cache/tea/_git_preserved/shallow +1 -0
- package/lib/bmad.js +33 -0
- package/lib/installer.js +60 -3
- package/package.json +1 -1
- package/scripts/build-bmad-cache.js +6 -3
- package/test/agent-injection-strategy.test.js +123 -0
- package/test/instruction-injection.test.js +336 -0
- 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/gds/src/agents/game-architect.agent.yaml +0 -44
- package/lib/bmad-cache/gds/src/agents/game-designer.agent.yaml +0 -45
- package/lib/bmad-cache/gds/src/agents/game-dev.agent.yaml +0 -49
- package/lib/bmad-cache/gds/src/agents/game-qa.agent.yaml +0 -63
- package/lib/bmad-cache/gds/src/agents/game-scrum-master.agent.yaml +0 -52
- package/lib/bmad-cache/gds/src/agents/game-solo-dev.agent.yaml +0 -53
- package/lib/bmad-cache/gds/src/agents/tech-writer/tech-writer.agent.yaml +0 -45
- package/lib/bmad-cache/gds/src/teams/default-party.csv +0 -12
- package/lib/bmad-cache/gds/src/teams/team-gamedev.yaml +0 -29
- package/lib/bmad-cache/gds/src/workflows/1-preproduction/brainstorm-game/bmad-skill-manifest.yaml +0 -3
- package/lib/bmad-cache/gds/src/workflows/1-preproduction/game-brief/bmad-skill-manifest.yaml +0 -3
- package/lib/bmad-cache/gds/src/workflows/2-design/gdd/bmad-skill-manifest.yaml +0 -3
- package/lib/bmad-cache/gds/src/workflows/2-design/narrative/bmad-skill-manifest.yaml +0 -3
- package/lib/bmad-cache/gds/src/workflows/3-technical/check-implementation-readiness/bmad-skill-manifest.yaml +0 -3
- package/lib/bmad-cache/gds/src/workflows/3-technical/create-epics-and-stories/bmad-skill-manifest.yaml +0 -3
- package/lib/bmad-cache/gds/src/workflows/3-technical/game-architecture/bmad-skill-manifest.yaml +0 -3
- package/lib/bmad-cache/gds/src/workflows/3-technical/generate-project-context/bmad-skill-manifest.yaml +0 -3
- package/lib/bmad-cache/gds/src/workflows/4-production/code-review/bmad-skill-manifest.yaml +0 -3
- package/lib/bmad-cache/gds/src/workflows/4-production/correct-course/bmad-skill-manifest.yaml +0 -3
- package/lib/bmad-cache/gds/src/workflows/4-production/retrospective/bmad-skill-manifest.yaml +0 -3
- package/lib/bmad-cache/gds/src/workflows/4-production/sprint-planning/bmad-skill-manifest.yaml +0 -3
- package/lib/bmad-cache/gds/src/workflows/4-production/sprint-status/bmad-skill-manifest.yaml +0 -3
- package/lib/bmad-cache/gds/src/workflows/document-project/bmad-skill-manifest.yaml +0 -3
- package/lib/bmad-cache/gds/src/workflows/gametest/automate/bmad-skill-manifest.yaml +0 -3
- package/lib/bmad-cache/gds/src/workflows/gametest/e2e-scaffold/bmad-skill-manifest.yaml +0 -3
- package/lib/bmad-cache/gds/src/workflows/gametest/performance/bmad-skill-manifest.yaml +0 -3
- package/lib/bmad-cache/gds/src/workflows/gametest/playtest-plan/bmad-skill-manifest.yaml +0 -3
- package/lib/bmad-cache/gds/src/workflows/gametest/test-design/bmad-skill-manifest.yaml +0 -3
- package/lib/bmad-cache/gds/src/workflows/gametest/test-framework/bmad-skill-manifest.yaml +0 -3
- package/lib/bmad-cache/gds/src/workflows/gametest/test-review/bmad-skill-manifest.yaml +0 -3
- package/lib/bmad-cache/gds/src/workflows/gds-quick-flow/quick-spec/bmad-skill-manifest.yaml +0 -3
- 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
- /package/lib/bmad-cache/gds/src/workflows/1-preproduction/{brainstorm-game → gds-brainstorm-game}/game-brain-methods.csv +0 -0
- /package/lib/bmad-cache/gds/src/workflows/2-design/{gdd → gds-create-gdd}/game-types.csv +0 -0
- /package/lib/bmad-cache/gds/src/workflows/3-technical/{game-architecture → gds-game-architecture}/architecture-patterns.yaml +0 -0
- /package/lib/bmad-cache/gds/src/workflows/3-technical/{game-architecture → gds-game-architecture}/decision-catalog.yaml +0 -0
- /package/lib/bmad-cache/gds/src/workflows/3-technical/{game-architecture → gds-game-architecture}/engine-mcps.yaml +0 -0
- /package/lib/bmad-cache/gds/src/workflows/3-technical/{game-architecture → gds-game-architecture}/pattern-categories.csv +0 -0
- /package/lib/bmad-cache/gds/src/workflows/4-production/{sprint-planning → gds-sprint-planning}/sprint-status-template.yaml +0 -0
- /package/lib/bmad-cache/gds/src/workflows/{document-project → gds-document-project}/documentation-requirements.csv +0 -0
- /package/lib/bmad-cache/gds/src/workflows/{document-project → gds-document-project}/templates/project-scan-report-schema.json +0 -0
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
|
|
3
|
-
# JS/TS Security Verification Script (OWASP Top 10 2025)
|
|
4
|
-
# This script performs a series of security checks on a JavaScript/TypeScript project.
|
|
5
|
-
|
|
6
|
-
RED='\033[0;31m'
|
|
7
|
-
GREEN='\033[0;32m'
|
|
8
|
-
YELLOW='\033[1;33m'
|
|
9
|
-
CYAN='\033[0;36m'
|
|
10
|
-
NC='\033[0m' # No Color
|
|
11
|
-
|
|
12
|
-
echo -e "${CYAN}====================================================${NC}"
|
|
13
|
-
echo -e "${CYAN} JS/TS Security Audit - OWASP Top 10 2025 ${NC}"
|
|
14
|
-
echo -e "${CYAN}====================================================${NC}\n"
|
|
15
|
-
|
|
16
|
-
# A03:2025 - Software Supply Chain Failures
|
|
17
|
-
echo -e "${YELLOW}[1/5] A03:2025 - Software Supply Chain Failures${NC}"
|
|
18
|
-
SUPPLY_CHAIN_ISSUES=0
|
|
19
|
-
if [ ! -f "package-lock.json" ] && [ ! -f "yarn.lock" ] && [ ! -f "pnpm-lock.yaml" ]; then
|
|
20
|
-
echo -e "${RED}✗ CRITICAL: No lockfile found (package-lock.json, yarn.lock, or pnpm-lock.yaml).${NC}"
|
|
21
|
-
echo " Impact: Non-deterministic builds increase supply chain vulnerability."
|
|
22
|
-
SUPPLY_CHAIN_ISSUES=$((SUPPLY_CHAIN_ISSUES + 1))
|
|
23
|
-
fi
|
|
24
|
-
|
|
25
|
-
HTTP_REGISTRY=$(grep -r "http://" package.json 2>/dev/null)
|
|
26
|
-
if [ ! -z "$HTTP_REGISTRY" ]; then
|
|
27
|
-
echo -e "${RED}✗ WARNING: Insecure registry found in package.json (using HTTP instead of HTTPS).${NC}"
|
|
28
|
-
echo "$HTTP_REGISTRY"
|
|
29
|
-
SUPPLY_CHAIN_ISSUES=$((SUPPLY_CHAIN_ISSUES + 1))
|
|
30
|
-
fi
|
|
31
|
-
|
|
32
|
-
if [ $SUPPLY_CHAIN_ISSUES -eq 0 ]; then
|
|
33
|
-
echo -e "${GREEN}✓ No immediate supply chain issues found.${NC}\n"
|
|
34
|
-
else
|
|
35
|
-
echo -e "${RED}✗ Total supply chain issues: $SUPPLY_CHAIN_ISSUES${NC}\n"
|
|
36
|
-
fi
|
|
37
|
-
|
|
38
|
-
# A03:2025 / A06:2021 - Dependency Audit
|
|
39
|
-
echo -e "${YELLOW}[2/5] A03:2025 - Vulnerable Components (Audit)${NC}"
|
|
40
|
-
if [ -f "package-lock.json" ]; then
|
|
41
|
-
npm audit --audit-level=high
|
|
42
|
-
AUDIT_EXIT=$?
|
|
43
|
-
elif [ -f "yarn.lock" ]; then
|
|
44
|
-
yarn audit --level high
|
|
45
|
-
AUDIT_EXIT=$?
|
|
46
|
-
else
|
|
47
|
-
echo -e "${YELLOW} Skipping dependency audit: No lockfile found.${NC}"
|
|
48
|
-
AUDIT_EXIT=0
|
|
49
|
-
fi
|
|
50
|
-
|
|
51
|
-
if [ $AUDIT_EXIT -eq 0 ]; then
|
|
52
|
-
echo -e "${GREEN}✓ No high-severity vulnerabilities in dependencies.${NC}\n"
|
|
53
|
-
else
|
|
54
|
-
echo -e "${RED}✗ Vulnerabilities found. Run 'npm audit fix'.${NC}\n"
|
|
55
|
-
fi
|
|
56
|
-
|
|
57
|
-
# A01/A04/A05/A08 - Static Analysis (SAST)
|
|
58
|
-
echo -e "${YELLOW}[3/5] Static Analysis (OWASP A01, A04, A05, A08)${NC}"
|
|
59
|
-
declare -A DANGEROUS_PATTERNS
|
|
60
|
-
DANGEROUS_PATTERNS["A01: SSRF/Access Control"]="fetch\(\`|axios\.get\(\`|http\.get\(\`"
|
|
61
|
-
DANGEROUS_PATTERNS["A05: Injection"]="eval\(|new Function\(|child_process\.exec\(|require\('child_process'\)\.exec"
|
|
62
|
-
DANGEROUS_PATTERNS["A04: Cryptographic Failures"]="crypto\.createHash\('md5'\)|crypto\.createHash\('sha1'\)|Math\.random\(\)"
|
|
63
|
-
DANGEROUS_PATTERNS["A08: Software/Data Integrity"]="unserialize\(|JSON\.parse\("
|
|
64
|
-
DANGEROUS_PATTERNS["A07: Authentication Failures"]="res\.cookie\(.*httpOnly: false|res\.cookie\(.*secure: false"
|
|
65
|
-
|
|
66
|
-
FOUND_ISSUES=0
|
|
67
|
-
for cat in "A01: SSRF/Access Control" "A05: Injection" "A04: Cryptographic Failures" "A08: Software/Data Integrity" "A07: Authentication Failures"; do
|
|
68
|
-
pattern=${DANGEROUS_PATTERNS[$cat]}
|
|
69
|
-
MATCHES=$(grep -rnE "$pattern" --include="*.js" --include="*.ts" --exclude-dir=node_modules . 2>/dev/null)
|
|
70
|
-
if [ ! -z "$MATCHES" ]; then
|
|
71
|
-
echo -e "${RED}✗ Found Risk: [$cat]${NC}"
|
|
72
|
-
echo "$MATCHES" | sed 's/^/ /'
|
|
73
|
-
FOUND_ISSUES=$((FOUND_ISSUES + 1))
|
|
74
|
-
fi
|
|
75
|
-
done
|
|
76
|
-
|
|
77
|
-
if [ $FOUND_ISSUES -eq 0 ]; then
|
|
78
|
-
echo -e "${GREEN}✓ No dangerous patterns detected via SAST.${NC}\n"
|
|
79
|
-
else
|
|
80
|
-
echo -e "${RED}✗ Total dangerous patterns: $FOUND_ISSUES${NC}\n"
|
|
81
|
-
fi
|
|
82
|
-
|
|
83
|
-
# A10:2025 - Mishandling of Exceptional Conditions
|
|
84
|
-
echo -e "${YELLOW}[4/5] A10:2025 - Mishandling of Exceptional Conditions${NC}"
|
|
85
|
-
EMPTY_CATCH=$(grep -rnE "catch\s*\(\w*\)\s*\{\s*\}" --include="*.js" --include="*.ts" --exclude-dir=node_modules . 2>/dev/null)
|
|
86
|
-
FOUND_EXCEPTION_ISSUES=0
|
|
87
|
-
if [ ! -z "$EMPTY_CATCH" ]; then
|
|
88
|
-
echo -e "${RED}✗ Found Risk: Empty catch blocks (Swallowing exceptions)${NC}"
|
|
89
|
-
echo "$EMPTY_CATCH" | sed 's/^/ /'
|
|
90
|
-
FOUND_EXCEPTION_ISSUES=$((FOUND_EXCEPTION_ISSUES + 1))
|
|
91
|
-
fi
|
|
92
|
-
|
|
93
|
-
if [ $FOUND_EXCEPTION_ISSUES -eq 0 ]; then
|
|
94
|
-
echo -e "${GREEN}✓ Exception handling patterns appear secure.${NC}\n"
|
|
95
|
-
else
|
|
96
|
-
echo -e "${RED}✗ Total exception handling issues: $FOUND_EXCEPTION_ISSUES${NC}\n"
|
|
97
|
-
fi
|
|
98
|
-
|
|
99
|
-
# Secret Detection (A01/A07)
|
|
100
|
-
echo -e "${YELLOW}[5/5] A01/A07 - Hardcoded Secrets Scanning${NC}"
|
|
101
|
-
SECRET_PATTERNS=("AIza[0-9A-Za-z-_]{35}" "sk_live_[0-9a-zA-Z]{24}" "xox[pb]-[0-9]{12}-[0-9]{12}-[0-9]{12}-[a-z0-9]{32}" "-----BEGIN RSA PRIVATE KEY-----")
|
|
102
|
-
|
|
103
|
-
FOUND_SECRETS=0
|
|
104
|
-
for pattern in "${SECRET_PATTERNS[@]}"; do
|
|
105
|
-
MATCHES=$(grep -rnE "$pattern" --include="*.js" --include="*.ts" --include="*.env" --exclude-dir=node_modules . 2>/dev/null)
|
|
106
|
-
if [ ! -z "$MATCHES" ]; then
|
|
107
|
-
echo -e "${RED}✗ Found Risk: Potential secret leakage ($pattern)${NC}"
|
|
108
|
-
echo "$MATCHES" | sed 's/^/ /'
|
|
109
|
-
FOUND_SECRETS=$((FOUND_SECRETS + 1))
|
|
110
|
-
fi
|
|
111
|
-
done
|
|
112
|
-
|
|
113
|
-
if [ $FOUND_SECRETS -eq 0 ]; then
|
|
114
|
-
echo -e "${GREEN}✓ No hardcoded secrets detected.${NC}\n"
|
|
115
|
-
else
|
|
116
|
-
echo -e "${RED}✗ Total secrets found: $FOUND_SECRETS${NC}\n"
|
|
117
|
-
fi
|
|
118
|
-
|
|
119
|
-
# Summary
|
|
120
|
-
echo -e "${CYAN}----------------------------------------------------${NC}"
|
|
121
|
-
echo -e "${CYAN} OWASP 2025 Audit Summary ${NC}"
|
|
122
|
-
echo -e "${CYAN}----------------------------------------------------${NC}"
|
|
123
|
-
[ $SUPPLY_CHAIN_ISSUES -eq 0 ] && echo -e "A03: Supply Chain - ${GREEN}PASS${NC}" || echo -e "A03: Supply Chain - ${RED}FAIL${NC}"
|
|
124
|
-
[ $AUDIT_EXIT -eq 0 ] && echo -e "A03: Vulnerabilities - ${GREEN}PASS${NC}" || echo -e "A03: Vulnerabilities - ${RED}FAIL${NC}"
|
|
125
|
-
[ $FOUND_ISSUES -eq 0 ] && echo -e "A01/04/05/08: Code Patterns - ${GREEN}PASS${NC}" || echo -e "A01/04/05/08: Code Patterns - ${RED}FAIL${NC}"
|
|
126
|
-
[ $FOUND_EXCEPTION_ISSUES -eq 0 ] && echo -e "A10: Exception Handling - ${GREEN}PASS${NC}" || echo -e "A10: Exception Handling - ${RED}FAIL${NC}"
|
|
127
|
-
[ $FOUND_SECRETS -eq 0 ] && echo -e "A01/A07: Secrets - ${GREEN}PASS${NC}" || echo -e "A01/A07: Secrets - ${RED}FAIL${NC}"
|
|
128
|
-
echo -e "${CYAN}----------------------------------------------------${NC}"
|
|
129
|
-
|
|
130
|
-
if [ $AUDIT_EXIT -eq 0 ] && [ $FOUND_ISSUES -eq 0 ] && [ $FOUND_SECRETS -eq 0 ] && [ $SUPPLY_CHAIN_ISSUES -eq 0 ] && [ $FOUND_EXCEPTION_ISSUES -eq 0 ]; then
|
|
131
|
-
echo -e "${GREEN}Final Result: SECURE${NC}"
|
|
132
|
-
exit 0
|
|
133
|
-
else
|
|
134
|
-
echo -e "${RED}Final Result: VULNERABLE${NC}"
|
|
135
|
-
exit 1
|
|
136
|
-
fi
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: Logging Best Practices
|
|
3
|
-
description: Standardizes structured logging across Backend, Frontend, Realtime, and Algorithmic domains with mandatory exception handling.
|
|
4
|
-
---
|
|
5
|
-
# Logging Best Practices
|
|
6
|
-
|
|
7
|
-
Enforce structured, context-rich logging according to market standards (OpenTelemetry) across all application domains.
|
|
8
|
-
|
|
9
|
-
## Policy
|
|
10
|
-
|
|
11
|
-
**All logs must be structured (preferably JSON) and include mandatory context. Every exception MUST be logged with its full stack trace.**
|
|
12
|
-
|
|
13
|
-
## Core Mandatory Fields
|
|
14
|
-
|
|
15
|
-
Every log entry must contain:
|
|
16
|
-
- `datetime`: ISO 8601 timestamp with timezone.
|
|
17
|
-
- `severity`: Standard level (DEBUG, INFO, WARN, ERROR, CRITICAL).
|
|
18
|
-
- `message`: Clear, concise description of the event.
|
|
19
|
-
- `placement`: File name and line number where the log was triggered.
|
|
20
|
-
- `process_name`: Name of the service or application.
|
|
21
|
-
- `container_id`: (If applicable) Docker/K8s container identifier.
|
|
22
|
-
- `trace_id` / `span_id`: For distributed tracing and request correlation.
|
|
23
|
-
|
|
24
|
-
## Domain-Specific Requirements
|
|
25
|
-
|
|
26
|
-
### 1. Backend Systems
|
|
27
|
-
- **Log**: Incoming/outgoing requests (method, status, duration).
|
|
28
|
-
- **Log**: Database query latencies and connection states.
|
|
29
|
-
- **Mandatory**: Full exception details in catch blocks.
|
|
30
|
-
|
|
31
|
-
### 2. Frontend Applications
|
|
32
|
-
- **Log**: Client-side errors (JS runtime, UI crashes).
|
|
33
|
-
- **Log**: User interaction context (last clicked component, breadcrumbs).
|
|
34
|
-
- **Context**: Browser version, OS, Resolution.
|
|
35
|
-
|
|
36
|
-
### 3. Realtime & Algorithmic Work
|
|
37
|
-
- **Log**: Iteration throughput and step-by-step latency.
|
|
38
|
-
- **Log**: Mathematical anomalies or convergence failures.
|
|
39
|
-
- **Mandatory**: Timeout exceptions and resource exhaustion warnings.
|
|
40
|
-
|
|
41
|
-
## Rules
|
|
42
|
-
|
|
43
|
-
- **No PII/Secrets**: Never log passwords, keys, or private user data.
|
|
44
|
-
- **Asynchronous**: Prefer non-blocking logging to maintain performance.
|
|
45
|
-
- **Traceability**: Always include `trace_id` in logs that are part of a request flow.
|
|
46
|
-
- **Exception Policy**: Use the `ERROR` level for caught exceptions that affect flow, and `CRITICAL` for system-wide failures.
|
|
47
|
-
|
|
48
|
-
## Reference
|
|
49
|
-
|
|
50
|
-
See [logging-standards.md](./references/logging-standards.md) for detailed field definitions and level guidance.
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
# C++ Logging Examples
|
|
2
|
-
|
|
3
|
-
## Structured Logging with `spdlog`
|
|
4
|
-
|
|
5
|
-
```cpp
|
|
6
|
-
#include "spdlog/spdlog.h"
|
|
7
|
-
#include "spdlog/sinks/stdout_color_sinks.h"
|
|
8
|
-
#include <exception>
|
|
9
|
-
|
|
10
|
-
void run_realtime_loop() {
|
|
11
|
-
auto logger = spdlog::get("realtime_logger");
|
|
12
|
-
|
|
13
|
-
try {
|
|
14
|
-
// Realtime/Algorithmic domain logging
|
|
15
|
-
logger->info("Computation step started. Input size: {}. Placement: {}:{}",
|
|
16
|
-
1024, __FILE__, __LINE__);
|
|
17
|
-
|
|
18
|
-
if (check_anomaly()) {
|
|
19
|
-
logger->warn("Numerical anomaly detected! Severity: WARN");
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
} catch (const std::exception& e) {
|
|
23
|
-
// Mandatory Exception Logging
|
|
24
|
-
logger->critical("Critical failure in realtime loop! Error: {}. File: {}. Line: {}",
|
|
25
|
-
e.what(), __FILE__, __LINE__);
|
|
26
|
-
throw;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
// Global setup for JSON output
|
|
31
|
-
void setup_logging() {
|
|
32
|
-
// Note: spdlog requires a custom formatter or sink for pure JSON output
|
|
33
|
-
// to match OTel standards perfectly.
|
|
34
|
-
spdlog::set_pattern("{\"datetime\":\"%Y-%m-%dT%H:%M:%SZ\",\"severity\":\"%l\",\"message\":\"%v\",\"process_name\":\"engine_v1\"}");
|
|
35
|
-
}
|
|
36
|
-
```
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
# C# Logging Examples
|
|
2
|
-
|
|
3
|
-
## Structured Logging with Serilog
|
|
4
|
-
|
|
5
|
-
```csharp
|
|
6
|
-
using Serilog;
|
|
7
|
-
using System;
|
|
8
|
-
|
|
9
|
-
public class DataService
|
|
10
|
-
{
|
|
11
|
-
private readonly ILogger _logger = Log.ForContext<DataService>();
|
|
12
|
-
|
|
13
|
-
public void ProcessAlgorithm(double[] data)
|
|
14
|
-
{
|
|
15
|
-
try
|
|
16
|
-
{
|
|
17
|
-
_logger.Information("Algorithm iteration started. Data points: {Count}. Placement: {Placement}",
|
|
18
|
-
data.Length, "DataService.cs:45");
|
|
19
|
-
|
|
20
|
-
// Realtime/Algorithmic specific logging
|
|
21
|
-
var startTime = DateTime.UtcNow;
|
|
22
|
-
RunComplexMath(data);
|
|
23
|
-
var duration = (DateTime.UtcNow - startTime).TotalMilliseconds;
|
|
24
|
-
|
|
25
|
-
_logger.Information("Iteration complete. Latency: {Latency}ms", duration);
|
|
26
|
-
}
|
|
27
|
-
catch (Exception ex)
|
|
28
|
-
{
|
|
29
|
-
// Mandatory Exception Logging
|
|
30
|
-
_logger.Error(ex, "Algorithm execution failed at {Placement}. Container: {ContainerId}",
|
|
31
|
-
"DataService.cs:55", Environment.GetEnvironmentVariable("HOSTNAME"));
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
## Microsoft.Extensions.Logging (JSON Console)
|
|
38
|
-
|
|
39
|
-
```csharp
|
|
40
|
-
// In Program.cs
|
|
41
|
-
builder.Logging.AddJsonConsole(options => {
|
|
42
|
-
options.TimestampFormat = "yyyy-MM-ddTHH:mm:ssZ ";
|
|
43
|
-
options.JsonWriterOptions = new JsonWriterOptions { Indented = true };
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
// Usage
|
|
47
|
-
_logger.LogError(exception, "Request failed at {Placement}. TraceId: {TraceId}",
|
|
48
|
-
"OrderController.cs:120", HttpContext.TraceIdentifier);
|
|
49
|
-
```
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
# JavaScript/TypeScript Logging Examples
|
|
2
|
-
|
|
3
|
-
## Backend (Node.js with `pino` or `winston`)
|
|
4
|
-
|
|
5
|
-
```typescript
|
|
6
|
-
import pino from 'pino';
|
|
7
|
-
|
|
8
|
-
const logger = pino({
|
|
9
|
-
level: process.env.LOG_LEVEL || 'info',
|
|
10
|
-
formatters: {
|
|
11
|
-
level: (label) => {
|
|
12
|
-
return { severity: label.toUpperCase() };
|
|
13
|
-
},
|
|
14
|
-
},
|
|
15
|
-
base: {
|
|
16
|
-
process_name: 'api-gateway',
|
|
17
|
-
container_id: process.env.HOSTNAME || 'unknown'
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
async function handleRequest(req, res) {
|
|
22
|
-
const traceId = req.headers['x-trace-id'];
|
|
23
|
-
try {
|
|
24
|
-
logger.info({
|
|
25
|
-
msg: 'Handling incoming request',
|
|
26
|
-
trace_id: traceId,
|
|
27
|
-
path: req.path,
|
|
28
|
-
placement: 'router.ts:12'
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
// ... logic
|
|
32
|
-
} catch (error) {
|
|
33
|
-
// Mandatory Exception Logging
|
|
34
|
-
logger.error({
|
|
35
|
-
msg: 'Request handler failed',
|
|
36
|
-
trace_id: traceId,
|
|
37
|
-
err: error, // Pino automatically formats the stack trace
|
|
38
|
-
severity: 'ERROR',
|
|
39
|
-
placement: 'router.ts:25'
|
|
40
|
-
});
|
|
41
|
-
res.status(500).send('Internal Server Error');
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
## Frontend (Browser)
|
|
47
|
-
|
|
48
|
-
```javascript
|
|
49
|
-
const logToServer = async (logEntry) => {
|
|
50
|
-
try {
|
|
51
|
-
await fetch('/api/logs', {
|
|
52
|
-
method: 'POST',
|
|
53
|
-
body: JSON.stringify({
|
|
54
|
-
...logEntry,
|
|
55
|
-
datetime: new Date().toISOString(),
|
|
56
|
-
browser: navigator.userAgent,
|
|
57
|
-
process_name: 'frontend-spa'
|
|
58
|
-
})
|
|
59
|
-
});
|
|
60
|
-
} catch (e) {
|
|
61
|
-
console.error('Failed to ship logs', e);
|
|
62
|
-
}
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
// Global error handler
|
|
66
|
-
window.onerror = function(msg, url, lineNo, columnNo, error) {
|
|
67
|
-
logToServer({
|
|
68
|
-
severity: 'ERROR',
|
|
69
|
-
message: msg,
|
|
70
|
-
placement: `${url}:${lineNo}`,
|
|
71
|
-
exception: {
|
|
72
|
-
message: error?.message,
|
|
73
|
-
stack: error?.stack
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
};
|
|
77
|
-
```
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
# Python Logging Examples
|
|
2
|
-
|
|
3
|
-
## Structured Logging with `structlog`
|
|
4
|
-
|
|
5
|
-
```python
|
|
6
|
-
import structlog
|
|
7
|
-
import os
|
|
8
|
-
|
|
9
|
-
logger = structlog.get_logger()
|
|
10
|
-
|
|
11
|
-
def process_data(data):
|
|
12
|
-
try:
|
|
13
|
-
# Algorithmic step logging
|
|
14
|
-
logger.info("calculation_step_started",
|
|
15
|
-
step="matrix_multiplication",
|
|
16
|
-
data_size=len(data),
|
|
17
|
-
placement="processor.py:45")
|
|
18
|
-
|
|
19
|
-
result = perform_complex_math(data)
|
|
20
|
-
return result
|
|
21
|
-
except Exception as e:
|
|
22
|
-
# Mandatory Exception Logging
|
|
23
|
-
logger.error("calculation_failed",
|
|
24
|
-
exception_type=type(e).__name__,
|
|
25
|
-
exception_msg=str(e),
|
|
26
|
-
stack_trace=True, # structlog captures this
|
|
27
|
-
severity="ERROR",
|
|
28
|
-
placement="processor.py:52",
|
|
29
|
-
container_id=os.getenv("HOSTNAME"))
|
|
30
|
-
raise
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
## Standard Library with JSON Formatter
|
|
34
|
-
|
|
35
|
-
```python
|
|
36
|
-
import logging
|
|
37
|
-
import json
|
|
38
|
-
from datetime import datetime
|
|
39
|
-
|
|
40
|
-
class JsonFormatter(logging.Formatter):
|
|
41
|
-
def format(self, record):
|
|
42
|
-
log_entry = {
|
|
43
|
-
"datetime": datetime.utcnow().isoformat(),
|
|
44
|
-
"severity": record.levelname,
|
|
45
|
-
"message": record.getMessage(),
|
|
46
|
-
"placement": f"{record.filename}:{record.lineno}",
|
|
47
|
-
"process_name": record.processName,
|
|
48
|
-
"trace_id": getattr(record, 'trace_id', 'none')
|
|
49
|
-
}
|
|
50
|
-
if record.exc_info:
|
|
51
|
-
log_entry["exception"] = self.formatException(record.exc_info)
|
|
52
|
-
return json.dumps(log_entry)
|
|
53
|
-
|
|
54
|
-
# usage
|
|
55
|
-
logger = logging.getLogger("backend_service")
|
|
56
|
-
logger.error("Database connection failed", exc_info=True)
|
|
57
|
-
```
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# Logging Standards Reference
|
|
2
|
-
|
|
3
|
-
This document defines the semantic conventions and levels used in the Logging Best Practices skill.
|
|
4
|
-
|
|
5
|
-
## Log Levels
|
|
6
|
-
|
|
7
|
-
| Level | Usage |
|
|
8
|
-
| :--- | :--- |
|
|
9
|
-
| **TRACE** | Fine-grained informational events (mostly for debugging logic flows). |
|
|
10
|
-
| **DEBUG** | Detailed information for developer troubleshooting. |
|
|
11
|
-
| **INFO** | Regular operational events (startup, shutdown, successful requests). |
|
|
12
|
-
| **WARN** | Potential issues or degraded states that don't stop the service. |
|
|
13
|
-
| **ERROR** | Operational failures that affect a specific request or operation. |
|
|
14
|
-
| **CRITICAL** | System-wide failures requiring immediate attention. |
|
|
15
|
-
|
|
16
|
-
## OpenTelemetry Semantic Conventions
|
|
17
|
-
|
|
18
|
-
To ensure interoperability, use the following field names where possible:
|
|
19
|
-
|
|
20
|
-
- `timestamp`: The time when the event occurred.
|
|
21
|
-
- `severity_text`: The string representation of the log level.
|
|
22
|
-
- `body`: The primary log message.
|
|
23
|
-
- `attributes.service.name`: The value of `process_name`.
|
|
24
|
-
- `attributes.container.id`: The value of `container_id`.
|
|
25
|
-
- `attributes.code.filepath`: Path to the source file.
|
|
26
|
-
- `attributes.code.lineno`: Line number in the source file.
|
|
27
|
-
- `attributes.exception.type`: Class name of the exception.
|
|
28
|
-
- `attributes.exception.message`: Message from the exception.
|
|
29
|
-
- `attributes.exception.stacktrace`: Full stack trace.
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: OpenTelemetry Best Practices
|
|
3
|
-
description: Standardizes distributed tracing, metrics, and semantic conventions for high-quality system observability.
|
|
4
|
-
---
|
|
5
|
-
# OpenTelemetry Best Practices
|
|
6
|
-
|
|
7
|
-
Guidelines for implementing standardized distributed tracing and metrics using OpenTelemetry to ensure high-quality observability.
|
|
8
|
-
|
|
9
|
-
## Mandatory Policies
|
|
10
|
-
|
|
11
|
-
### 1. Semantic Conventions
|
|
12
|
-
You MUST use OpenTelemetry Semantic Conventions for all attribute names. Never invent custom names for standard concepts (e.g., use `http.method` instead of `method` or `http_method`).
|
|
13
|
-
|
|
14
|
-
### 2. Context Propagation
|
|
15
|
-
You MUST ensure trace context is propagated across asynchronous boundaries. When starting a background task or making a network call, ensure the active span is correctly parented or the context is injected into headers.
|
|
16
|
-
|
|
17
|
-
### 3. Span Granularity
|
|
18
|
-
- **Database**: Every query MUST have its own span with attributes for the statement (sanitized) and database name.
|
|
19
|
-
- **External API**: Every outgoing request MUST have a span.
|
|
20
|
-
- **Complex Logic**: Large internal computation blocks SHOULD have spans if they represent a distinct logical step.
|
|
21
|
-
|
|
22
|
-
### 4. Meaningful Metrics
|
|
23
|
-
- **Counters**: Use for discrete events (e.g., `api.requests.total`).
|
|
24
|
-
- **Histograms**: Use for durations and sizes (e.g., `api.latency`).
|
|
25
|
-
- **Attributes**: Common attributes (e.g., `status_code`, `service.name`) SHOULD be applied to both spans and metrics.
|
|
26
|
-
|
|
27
|
-
## Critical Rules
|
|
28
|
-
- **No Sensitive Data**: Never include PII, passwords, or tokens in span attributes or logs associated with spans.
|
|
29
|
-
- **Fail Gracefully**: Instrumentation should never crash the application. Use `tracer.startActiveSpan` carefully with `try...finally` to ensure spans are always ended.
|
|
30
|
-
- **Status Codes**: Always set the span status to `Error` when an exception is caught that isn't handled.
|
|
31
|
-
|
|
32
|
-
## Resources
|
|
33
|
-
- [Semantic Conventions Reference](file:///skills/opentelemetry-best-practices/references/otel-standards.md)
|
|
34
|
-
- [Example Implementations](file:///skills/opentelemetry-best-practices/examples/javascript.md)
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
# OpenTelemetry Go Examples
|
|
2
|
-
|
|
3
|
-
Idiomatic usage of the OpenTelemetry Go SDK.
|
|
4
|
-
|
|
5
|
-
## Context-Aware Tracing
|
|
6
|
-
|
|
7
|
-
```go
|
|
8
|
-
import (
|
|
9
|
-
"context"
|
|
10
|
-
"go.opentelemetry.io/otel"
|
|
11
|
-
"go.opentelemetry.io/otel/attribute"
|
|
12
|
-
"go.opentelemetry.io/otel/codes"
|
|
13
|
-
)
|
|
14
|
-
|
|
15
|
-
var tracer = otel.Tracer("my-service")
|
|
16
|
-
|
|
17
|
-
func (s *Server) GetUser(ctx context.Context, id string) (*User, error) {
|
|
18
|
-
ctx, span := tracer.Start(ctx, "GetUser")
|
|
19
|
-
defer span.End()
|
|
20
|
-
|
|
21
|
-
span.SetAttributes(attribute.String("user.id", id))
|
|
22
|
-
|
|
23
|
-
user, err := s.db.FetchUser(ctx, id)
|
|
24
|
-
if err != nil {
|
|
25
|
-
span.RecordError(err)
|
|
26
|
-
span.SetStatus(codes.Error, err.Error())
|
|
27
|
-
return nil, err
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
return user, nil
|
|
31
|
-
}
|
|
32
|
-
```
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
# OpenTelemetry JavaScript (Node.js) Examples
|
|
2
|
-
|
|
3
|
-
Idiomatic usage of the OpenTelemetry SDK in Node.js applications.
|
|
4
|
-
|
|
5
|
-
## Tracing a Function
|
|
6
|
-
|
|
7
|
-
```javascript
|
|
8
|
-
const { trace } = require('@opentelemetry/api');
|
|
9
|
-
|
|
10
|
-
const tracer = trace.getTracer('my-service');
|
|
11
|
-
|
|
12
|
-
async function processOrder(orderId) {
|
|
13
|
-
// Use startActiveSpan to automatically handle context propagation
|
|
14
|
-
return tracer.startActiveSpan('process.order', async (span) => {
|
|
15
|
-
try {
|
|
16
|
-
// Set semantic attributes
|
|
17
|
-
span.setAttribute('order.id', orderId);
|
|
18
|
-
|
|
19
|
-
const result = await someDatabaseCall(orderId);
|
|
20
|
-
|
|
21
|
-
span.setStatus({ code: SpanStatusCode.OK });
|
|
22
|
-
return result;
|
|
23
|
-
} catch (error) {
|
|
24
|
-
span.recordException(error);
|
|
25
|
-
span.setStatus({ code: SpanStatusCode.ERROR, message: error.message });
|
|
26
|
-
throw error;
|
|
27
|
-
} finally {
|
|
28
|
-
span.end();
|
|
29
|
-
}
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
## Creating Metrics
|
|
35
|
-
|
|
36
|
-
```javascript
|
|
37
|
-
const { metrics } = require('@opentelemetry/api');
|
|
38
|
-
|
|
39
|
-
const meter = metrics.getMeter('my-service');
|
|
40
|
-
|
|
41
|
-
const requestCounter = meter.createCounter('api.requests.total', {
|
|
42
|
-
description: 'Total number of API requests',
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
const latencyHistogram = meter.createHistogram('api.latency', {
|
|
46
|
-
description: 'API request latency',
|
|
47
|
-
unit: 'ms',
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
function handleRequest(req) {
|
|
51
|
-
const startTime = Date.now();
|
|
52
|
-
|
|
53
|
-
// Logic...
|
|
54
|
-
|
|
55
|
-
requestCounter.add(1, { 'http.method': req.method, 'status_code': 200 });
|
|
56
|
-
latencyHistogram.record(Date.now() - startTime, { 'http.method': req.method });
|
|
57
|
-
}
|
|
58
|
-
```
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
# OpenTelemetry Python Examples
|
|
2
|
-
|
|
3
|
-
Idiomatic usage of the OpenTelemetry Python SDK.
|
|
4
|
-
|
|
5
|
-
## Tracing with Decorators
|
|
6
|
-
|
|
7
|
-
```python
|
|
8
|
-
from opentelemetry import trace
|
|
9
|
-
|
|
10
|
-
tracer = trace.get_tracer(__name__)
|
|
11
|
-
|
|
12
|
-
@tracer.start_as_current_span("process_data")
|
|
13
|
-
def process_data(data):
|
|
14
|
-
span = trace.get_current_span()
|
|
15
|
-
span.set_attribute("data.size", len(data))
|
|
16
|
-
|
|
17
|
-
# Process...
|
|
18
|
-
return True
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
## Manual Span Management
|
|
22
|
-
|
|
23
|
-
```python
|
|
24
|
-
def fetch_external_resource(url):
|
|
25
|
-
with tracer.start_as_current_span("http_request") as span:
|
|
26
|
-
span.set_attribute("http.url", url)
|
|
27
|
-
span.set_attribute("http.method", "GET")
|
|
28
|
-
|
|
29
|
-
try:
|
|
30
|
-
response = requests.get(url)
|
|
31
|
-
span.set_attribute("http.status_code", response.status_code)
|
|
32
|
-
return response.json()
|
|
33
|
-
except Exception as e:
|
|
34
|
-
span.record_exception(e)
|
|
35
|
-
span.set_status(trace.Status(trace.StatusCode.ERROR))
|
|
36
|
-
raise
|
|
37
|
-
```
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
# OpenTelemetry Standards & Semantic Conventions
|
|
2
|
-
|
|
3
|
-
This document outlines the specific attributes and naming conventions to follow when instrumenting services.
|
|
4
|
-
|
|
5
|
-
## Common Attributes
|
|
6
|
-
|
|
7
|
-
| Attribute | Description | Example |
|
|
8
|
-
|-----------|-------------|---------|
|
|
9
|
-
| `service.name` | Logical name of the service | `user-auth-service` |
|
|
10
|
-
| `service.version` | Version of the service | `1.2.3` |
|
|
11
|
-
| `deployment.environment` | Target environment | `production` |
|
|
12
|
-
|
|
13
|
-
## HTTP Semantic Conventions
|
|
14
|
-
|
|
15
|
-
| Attribute | Description | Example |
|
|
16
|
-
|-----------|-------------|---------|
|
|
17
|
-
| `http.method` | HTTP request method | `GET` |
|
|
18
|
-
| `http.status_code` | response status | `200` |
|
|
19
|
-
| `http.url` | Full request URL | `https://api.example.com/v1/users` |
|
|
20
|
-
| `http.user_agent` | User agent header | `Mozilla/5.0...` |
|
|
21
|
-
|
|
22
|
-
## Database Semantic Conventions
|
|
23
|
-
|
|
24
|
-
| Attribute | Description | Example |
|
|
25
|
-
|-----------|-------------|---------|
|
|
26
|
-
| `db.system` | Database vendor | `postgresql` |
|
|
27
|
-
| `db.statement` | Sanitized SQL/query | `SELECT * FROM users WHERE id = ?` |
|
|
28
|
-
| `db.name` | Database name | `prod_db` |
|
|
29
|
-
| `db.operation` | Operation name | `SELECT` |
|
|
30
|
-
|
|
31
|
-
## Span Status Values
|
|
32
|
-
- **Unset**: Default status.
|
|
33
|
-
- **Ok**: Explicitly marked as successful.
|
|
34
|
-
- **Error**: Encountered a failure. Describe the error in the `exception` event or attributes.
|
|
35
|
-
|
|
36
|
-
## Useful links
|
|
37
|
-
- [Official OTel Semantic Conventions](https://opentelemetry.io/docs/specs/otel/common/semantic-conventions/)
|