aigroup-workflow 1.3.0 → 2.0.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/.claude/commands/fix-build.md +32 -0
- package/.claude/commands/git-commit.md +1 -1
- package/.claude/commands/init-project.md +66 -50
- package/.claude/commands/plan.md +32 -0
- package/.claude/commands/review.md +29 -0
- package/.claude/commands/tdd.md +32 -0
- package/.claude/commands/workflow-start.md +87 -0
- package/.claude/hooks.json +3 -3
- package/.claude-plugin/plugin.json +20 -0
- package/.codex/AGENTS.md +107 -0
- package/.codex/agents/docs-researcher.toml +14 -0
- package/.codex/agents/explorer.toml +14 -0
- package/.codex/agents/reviewer.toml +16 -0
- package/.codex/config.toml +93 -0
- package/.codex-plugin/plugin.json +33 -0
- package/AGENTS.md +76 -0
- package/CLAUDE.md +18 -83
- package/README.md +220 -317
- package/agents/a11y-architect.md +141 -0
- package/agents/architect.md +211 -0
- package/agents/build-error-resolver.md +114 -0
- package/agents/chief-of-staff.md +151 -0
- package/agents/code-architect.md +71 -0
- package/agents/code-explorer.md +69 -0
- package/agents/code-reviewer.md +237 -0
- package/agents/code-simplifier.md +47 -0
- package/agents/comment-analyzer.md +45 -0
- package/agents/conversation-analyzer.md +52 -0
- package/agents/cpp-build-resolver.md +90 -0
- package/agents/cpp-reviewer.md +72 -0
- package/agents/csharp-reviewer.md +101 -0
- package/agents/dart-build-resolver.md +201 -0
- package/agents/database-reviewer.md +91 -0
- package/agents/doc-updater.md +107 -0
- package/agents/docs-lookup.md +68 -0
- package/agents/e2e-runner.md +107 -0
- package/agents/flutter-reviewer.md +243 -0
- package/agents/gan-evaluator.md +209 -0
- package/agents/gan-generator.md +131 -0
- package/agents/gan-planner.md +99 -0
- package/agents/go-build-resolver.md +94 -0
- package/agents/go-reviewer.md +76 -0
- package/agents/harness-optimizer.md +35 -0
- package/agents/healthcare-reviewer.md +83 -0
- package/agents/init-architect.md +185 -0
- package/agents/java-build-resolver.md +153 -0
- package/agents/java-reviewer.md +92 -0
- package/agents/kotlin-build-resolver.md +118 -0
- package/agents/kotlin-reviewer.md +159 -0
- package/agents/loop-operator.md +36 -0
- package/agents/opensource-forker.md +198 -0
- package/agents/opensource-packager.md +249 -0
- package/agents/opensource-sanitizer.md +188 -0
- package/agents/performance-optimizer.md +446 -0
- package/agents/planner.md +212 -0
- package/agents/pr-test-analyzer.md +45 -0
- package/agents/python-reviewer.md +98 -0
- package/agents/pytorch-build-resolver.md +120 -0
- package/agents/refactor-cleaner.md +85 -0
- package/agents/rust-build-resolver.md +148 -0
- package/agents/rust-reviewer.md +94 -0
- package/agents/security-reviewer.md +108 -0
- package/agents/seo-specialist.md +62 -0
- package/agents/silent-failure-hunter.md +50 -0
- package/agents/tdd-guide.md +91 -0
- package/agents/type-design-analyzer.md +41 -0
- package/agents/typescript-reviewer.md +112 -0
- package/cli/commands/check.mjs +11 -19
- package/cli/commands/init.mjs +133 -49
- package/cli/commands/status.mjs +42 -39
- package/cli/commands/update.mjs +10 -12
- package/cli/utils/scaffold.mjs +298 -127
- package/docs/README.md +46 -29
- package/docs/red-flags.md +29 -24
- package/docs/rules/README.md +51 -0
- package/docs/rules/agents.md +50 -0
- package/docs/rules/coding-style.md +79 -0
- package/docs/rules/cpp/coding-style.md +44 -0
- package/docs/rules/cpp/hooks.md +39 -0
- package/docs/rules/cpp/patterns.md +51 -0
- package/docs/rules/cpp/security.md +51 -0
- package/docs/rules/cpp/testing.md +44 -0
- package/docs/rules/csharp/coding-style.md +72 -0
- package/docs/rules/csharp/hooks.md +25 -0
- package/docs/rules/csharp/patterns.md +50 -0
- package/docs/rules/csharp/security.md +58 -0
- package/docs/rules/csharp/testing.md +46 -0
- package/docs/rules/dart/coding-style.md +159 -0
- package/docs/rules/dart/hooks.md +66 -0
- package/docs/rules/dart/patterns.md +261 -0
- package/docs/rules/dart/security.md +135 -0
- package/docs/rules/dart/testing.md +215 -0
- package/docs/rules/git-workflow.md +53 -0
- package/docs/rules/golang/coding-style.md +32 -0
- package/docs/rules/golang/hooks.md +17 -0
- package/docs/rules/golang/patterns.md +45 -0
- package/docs/rules/golang/security.md +34 -0
- package/docs/rules/golang/testing.md +31 -0
- package/docs/rules/hooks.md +61 -0
- package/docs/rules/java/coding-style.md +114 -0
- package/docs/rules/java/hooks.md +18 -0
- package/docs/rules/java/patterns.md +146 -0
- package/docs/rules/java/security.md +100 -0
- package/docs/rules/java/testing.md +131 -0
- package/docs/rules/kotlin/coding-style.md +86 -0
- package/docs/rules/kotlin/hooks.md +17 -0
- package/docs/rules/kotlin/patterns.md +146 -0
- package/docs/rules/kotlin/security.md +82 -0
- package/docs/rules/kotlin/testing.md +128 -0
- package/docs/rules/performance.md +30 -0
- package/docs/rules/perl/coding-style.md +46 -0
- package/docs/rules/perl/hooks.md +22 -0
- package/docs/rules/perl/patterns.md +76 -0
- package/docs/rules/perl/security.md +69 -0
- package/docs/rules/perl/testing.md +54 -0
- package/docs/rules/php/coding-style.md +40 -0
- package/docs/rules/php/hooks.md +24 -0
- package/docs/rules/php/patterns.md +33 -0
- package/docs/rules/php/security.md +37 -0
- package/docs/rules/php/testing.md +39 -0
- package/docs/rules/python/coding-style.md +42 -0
- package/docs/rules/python/hooks.md +19 -0
- package/docs/rules/python/patterns.md +39 -0
- package/docs/rules/python/security.md +30 -0
- package/docs/rules/python/testing.md +38 -0
- package/docs/rules/rust/coding-style.md +151 -0
- package/docs/rules/rust/hooks.md +16 -0
- package/docs/rules/rust/patterns.md +168 -0
- package/docs/rules/rust/security.md +141 -0
- package/docs/rules/rust/testing.md +154 -0
- package/docs/rules/security.md +73 -0
- package/docs/rules/swift/coding-style.md +47 -0
- package/docs/rules/swift/hooks.md +20 -0
- package/docs/rules/swift/patterns.md +66 -0
- package/docs/rules/swift/security.md +33 -0
- package/docs/rules/swift/testing.md +45 -0
- package/docs/rules/testing.md +77 -0
- package/docs/rules/typescript/coding-style.md +199 -0
- package/docs/rules/typescript/hooks.md +22 -0
- package/docs/rules/typescript/patterns.md +52 -0
- package/docs/rules/typescript/security.md +28 -0
- package/docs/rules/typescript/testing.md +18 -0
- package/docs/rules/web/coding-style.md +96 -0
- package/docs/rules/web/design-quality.md +63 -0
- package/docs/rules/web/hooks.md +120 -0
- package/docs/rules/web/patterns.md +79 -0
- package/docs/rules/web/performance.md +64 -0
- package/docs/rules/web/security.md +57 -0
- package/docs/rules/web/testing.md +55 -0
- package/docs/templates/code-review.md +1 -1
- package/docs/templates/implementation-plan.md +82 -82
- package/docs/workflow-pipeline.md +55 -127
- package/manifests/install-modules.json +294 -0
- package/package.json +8 -3
- package/scripts/harness/log-event.sh +11 -21
- package/scripts/harness/logs-query.sh +3 -8
- package/scripts/harness/tests/test-log-event.sh +16 -31
- package/scripts/harness/tests/test-logs-query.sh +4 -4
- package/scripts/hooks/README.md +49 -0
- package/scripts/hooks/checks/claude-md-size.cjs +21 -0
- package/scripts/hooks/checks/delegation-antipatterns.cjs +66 -0
- package/scripts/hooks/checks/empty-docs.cjs +32 -0
- package/scripts/hooks/checks/orchestration-artifacts.cjs +65 -0
- package/scripts/hooks/checks/structure.cjs +23 -0
- package/scripts/hooks/checks/workflow-state.cjs +56 -0
- package/scripts/hooks/dispatcher.cjs +64 -0
- package/scripts/hooks/lib/runner.cjs +81 -0
- package/scripts/orchestration/lib/orchestrator.cjs +181 -0
- package/scripts/orchestration/session.cjs +180 -0
- package/skills/documentation/SKILL.md +45 -0
- package/skills/{max/workflow/entropy-management → entropy-management}/SKILL.md +115 -124
- package/skills/requirement-engineering/SKILL.md +111 -0
- package/skills/{max/workflow/subagent-driven-development → subagent-driven-development}/SKILL.md +18 -18
- package/skills/{max/workflow/writing-plans → writing-plans}/SKILL.md +165 -165
- package/.claude/agents/ella.md +0 -101
- package/.claude/agents/init-architect.md +0 -128
- package/.claude/agents/jarvis.md +0 -193
- package/.claude/agents/kyle.md +0 -168
- package/docs/ARCHITECTURE.md +0 -117
- package/docs/QUALITY_SCORE.md +0 -44
- package/docs/coding-standards.md +0 -48
- package/docs/dispatch-rules.md +0 -83
- package/docs/steering-loop.md +0 -72
- package/docs/tech-debt-tracker.md +0 -26
- package/docs/templates/memory/activeContext.template.md +0 -30
- package/docs/templates/memory/projectContext.template.md +0 -36
- package/docs/templates/memory/systemPatterns.template.md +0 -26
- package/scripts/check-gitignore.sh +0 -130
- package/scripts/clean-system-files.sh +0 -169
- package/scripts/harness/hook-post-edit.sh +0 -40
- package/scripts/harness/hook-stop.sh +0 -70
- package/scripts/harness/hook-subagent-stop.sh +0 -54
- package/scripts/harness/lint-delegation.sh +0 -168
- package/scripts/harness/lint-docs.sh +0 -121
- package/scripts/harness/lint-process.sh +0 -221
- package/scripts/harness/lint-structure.sh +0 -145
- package/scripts/harness/lint-workflow-artifacts.sh +0 -150
- package/scripts/harness/run-all.sh +0 -77
- package/scripts/harness/workflow-state.sh +0 -397
- package/scripts/update-skills.sh +0 -187
- package/skills/max/workflow/brainstorming/SKILL.md +0 -111
- package/skills/max/workflow/documentation/SKILL.md +0 -82
- package/skills/max/workflow/requirement-validation/SKILL.md +0 -107
- package/skills/max/workflow/solution-design/SKILL.md +0 -117
- package/skills/max/workflow/testing/SKILL.md +0 -118
- /package/{.claude/agents → agents}/get-current-datetime.md +0 -0
- /package/skills/{ella/angular-architect → angular-architect}/SKILL.md +0 -0
- /package/skills/{ella/angular-architect → angular-architect}/references/components.md +0 -0
- /package/skills/{ella/angular-architect → angular-architect}/references/ngrx.md +0 -0
- /package/skills/{ella/angular-architect → angular-architect}/references/routing.md +0 -0
- /package/skills/{ella/angular-architect → angular-architect}/references/rxjs.md +0 -0
- /package/skills/{ella/angular-architect → angular-architect}/references/testing.md +0 -0
- /package/skills/{jarvis/api-designer → api-designer}/SKILL.md +0 -0
- /package/skills/{jarvis/api-designer → api-designer}/references/error-handling.md +0 -0
- /package/skills/{jarvis/api-designer → api-designer}/references/openapi.md +0 -0
- /package/skills/{jarvis/api-designer → api-designer}/references/pagination.md +0 -0
- /package/skills/{jarvis/api-designer → api-designer}/references/rest-patterns.md +0 -0
- /package/skills/{jarvis/api-designer → api-designer}/references/versioning.md +0 -0
- /package/skills/{jarvis/architecture-designer → architecture-designer}/SKILL.md +0 -0
- /package/skills/{jarvis/architecture-designer → architecture-designer}/references/adr-template.md +0 -0
- /package/skills/{jarvis/architecture-designer → architecture-designer}/references/architecture-patterns.md +0 -0
- /package/skills/{jarvis/architecture-designer → architecture-designer}/references/database-selection.md +0 -0
- /package/skills/{jarvis/architecture-designer → architecture-designer}/references/nfr-checklist.md +0 -0
- /package/skills/{jarvis/architecture-designer → architecture-designer}/references/system-design.md +0 -0
- /package/skills/{kyle/chaos-engineer → chaos-engineer}/SKILL.md +0 -0
- /package/skills/{kyle/chaos-engineer → chaos-engineer}/references/chaos-tools.md +0 -0
- /package/skills/{kyle/chaos-engineer → chaos-engineer}/references/experiment-design.md +0 -0
- /package/skills/{kyle/chaos-engineer → chaos-engineer}/references/game-days.md +0 -0
- /package/skills/{kyle/chaos-engineer → chaos-engineer}/references/infrastructure-chaos.md +0 -0
- /package/skills/{kyle/chaos-engineer → chaos-engineer}/references/kubernetes-chaos.md +0 -0
- /package/skills/{jarvis/cli-developer → cli-developer}/SKILL.md +0 -0
- /package/skills/{jarvis/cli-developer → cli-developer}/references/design-patterns.md +0 -0
- /package/skills/{jarvis/cli-developer → cli-developer}/references/go-cli.md +0 -0
- /package/skills/{jarvis/cli-developer → cli-developer}/references/node-cli.md +0 -0
- /package/skills/{jarvis/cli-developer → cli-developer}/references/python-cli.md +0 -0
- /package/skills/{jarvis/cli-developer → cli-developer}/references/ux-patterns.md +0 -0
- /package/skills/{jarvis/cloud-architect → cloud-architect}/SKILL.md +0 -0
- /package/skills/{jarvis/cloud-architect → cloud-architect}/references/aws.md +0 -0
- /package/skills/{jarvis/cloud-architect → cloud-architect}/references/azure.md +0 -0
- /package/skills/{jarvis/cloud-architect → cloud-architect}/references/cost.md +0 -0
- /package/skills/{jarvis/cloud-architect → cloud-architect}/references/gcp.md +0 -0
- /package/skills/{jarvis/cloud-architect → cloud-architect}/references/multi-cloud.md +0 -0
- /package/skills/{jarvis/code-documenter → code-documenter}/SKILL.md +0 -0
- /package/skills/{jarvis/code-documenter → code-documenter}/references/api-docs-fastapi-django.md +0 -0
- /package/skills/{jarvis/code-documenter → code-documenter}/references/api-docs-nestjs-express.md +0 -0
- /package/skills/{jarvis/code-documenter → code-documenter}/references/coverage-reports.md +0 -0
- /package/skills/{jarvis/code-documenter → code-documenter}/references/documentation-systems.md +0 -0
- /package/skills/{jarvis/code-documenter → code-documenter}/references/interactive-api-docs.md +0 -0
- /package/skills/{jarvis/code-documenter → code-documenter}/references/python-docstrings.md +0 -0
- /package/skills/{jarvis/code-documenter → code-documenter}/references/typescript-jsdoc.md +0 -0
- /package/skills/{jarvis/code-documenter → code-documenter}/references/user-guides-tutorials.md +0 -0
- /package/skills/{kyle/code-reviewer → code-reviewer}/SKILL.md +0 -0
- /package/skills/{kyle/code-reviewer → code-reviewer}/references/common-issues.md +0 -0
- /package/skills/{kyle/code-reviewer → code-reviewer}/references/feedback-examples.md +0 -0
- /package/skills/{kyle/code-reviewer → code-reviewer}/references/receiving-feedback.md +0 -0
- /package/skills/{kyle/code-reviewer → code-reviewer}/references/report-template.md +0 -0
- /package/skills/{kyle/code-reviewer → code-reviewer}/references/review-checklist.md +0 -0
- /package/skills/{kyle/code-reviewer → code-reviewer}/references/spec-compliance-review.md +0 -0
- /package/skills/{max/competitive-analysis → competitive-analysis}/SKILL.md +0 -0
- /package/skills/{jarvis/cpp-pro → cpp-pro}/SKILL.md +0 -0
- /package/skills/{jarvis/cpp-pro → cpp-pro}/references/build-tooling.md +0 -0
- /package/skills/{jarvis/cpp-pro → cpp-pro}/references/concurrency.md +0 -0
- /package/skills/{jarvis/cpp-pro → cpp-pro}/references/memory-performance.md +0 -0
- /package/skills/{jarvis/cpp-pro → cpp-pro}/references/modern-cpp.md +0 -0
- /package/skills/{jarvis/cpp-pro → cpp-pro}/references/templates.md +0 -0
- /package/skills/{jarvis/csharp-developer → csharp-developer}/SKILL.md +0 -0
- /package/skills/{jarvis/csharp-developer → csharp-developer}/references/aspnet-core.md +0 -0
- /package/skills/{jarvis/csharp-developer → csharp-developer}/references/blazor.md +0 -0
- /package/skills/{jarvis/csharp-developer → csharp-developer}/references/entity-framework.md +0 -0
- /package/skills/{jarvis/csharp-developer → csharp-developer}/references/modern-csharp.md +0 -0
- /package/skills/{jarvis/csharp-developer → csharp-developer}/references/performance.md +0 -0
- /package/skills/{jarvis/database-optimizer → database-optimizer}/SKILL.md +0 -0
- /package/skills/{jarvis/database-optimizer → database-optimizer}/references/index-strategies.md +0 -0
- /package/skills/{jarvis/database-optimizer → database-optimizer}/references/monitoring-analysis.md +0 -0
- /package/skills/{jarvis/database-optimizer → database-optimizer}/references/mysql-tuning.md +0 -0
- /package/skills/{jarvis/database-optimizer → database-optimizer}/references/postgresql-tuning.md +0 -0
- /package/skills/{jarvis/database-optimizer → database-optimizer}/references/query-optimization.md +0 -0
- /package/skills/{jarvis/debugging-wizard → debugging-wizard}/SKILL.md +0 -0
- /package/skills/{jarvis/debugging-wizard → debugging-wizard}/references/common-patterns.md +0 -0
- /package/skills/{jarvis/debugging-wizard → debugging-wizard}/references/debugging-tools.md +0 -0
- /package/skills/{jarvis/debugging-wizard → debugging-wizard}/references/quick-fixes.md +0 -0
- /package/skills/{jarvis/debugging-wizard → debugging-wizard}/references/strategies.md +0 -0
- /package/skills/{jarvis/debugging-wizard → debugging-wizard}/references/systematic-debugging.md +0 -0
- /package/skills/{ella/commands → design-commands}/design.md +0 -0
- /package/skills/{ella/commands → design-commands}/handoff.md +0 -0
- /package/skills/{ella/commands → design-commands}/prototype.md +0 -0
- /package/skills/{ella/commands → design-commands}/spec.md +0 -0
- /package/skills/{ella/commands → design-commands}/style.md +0 -0
- /package/skills/{jarvis/devops-engineer → devops-engineer}/SKILL.md +0 -0
- /package/skills/{jarvis/devops-engineer → devops-engineer}/references/deployment-strategies.md +0 -0
- /package/skills/{jarvis/devops-engineer → devops-engineer}/references/docker-patterns.md +0 -0
- /package/skills/{jarvis/devops-engineer → devops-engineer}/references/github-actions.md +0 -0
- /package/skills/{jarvis/devops-engineer → devops-engineer}/references/incident-response.md +0 -0
- /package/skills/{jarvis/devops-engineer → devops-engineer}/references/kubernetes.md +0 -0
- /package/skills/{jarvis/devops-engineer → devops-engineer}/references/platform-engineering.md +0 -0
- /package/skills/{jarvis/devops-engineer → devops-engineer}/references/release-automation.md +0 -0
- /package/skills/{jarvis/devops-engineer → devops-engineer}/references/terraform-iac.md +0 -0
- /package/skills/{jarvis/django-expert → django-expert}/SKILL.md +0 -0
- /package/skills/{jarvis/django-expert → django-expert}/references/authentication.md +0 -0
- /package/skills/{jarvis/django-expert → django-expert}/references/drf-serializers.md +0 -0
- /package/skills/{jarvis/django-expert → django-expert}/references/models-orm.md +0 -0
- /package/skills/{jarvis/django-expert → django-expert}/references/testing-django.md +0 -0
- /package/skills/{jarvis/django-expert → django-expert}/references/viewsets-views.md +0 -0
- /package/skills/{jarvis/dotnet-core-expert → dotnet-core-expert}/SKILL.md +0 -0
- /package/skills/{jarvis/dotnet-core-expert → dotnet-core-expert}/references/authentication.md +0 -0
- /package/skills/{jarvis/dotnet-core-expert → dotnet-core-expert}/references/clean-architecture.md +0 -0
- /package/skills/{jarvis/dotnet-core-expert → dotnet-core-expert}/references/cloud-native.md +0 -0
- /package/skills/{jarvis/dotnet-core-expert → dotnet-core-expert}/references/entity-framework.md +0 -0
- /package/skills/{jarvis/dotnet-core-expert → dotnet-core-expert}/references/minimal-apis.md +0 -0
- /package/skills/{jarvis/fastapi-expert → fastapi-expert}/SKILL.md +0 -0
- /package/skills/{jarvis/fastapi-expert → fastapi-expert}/references/async-sqlalchemy.md +0 -0
- /package/skills/{jarvis/fastapi-expert → fastapi-expert}/references/authentication.md +0 -0
- /package/skills/{jarvis/fastapi-expert → fastapi-expert}/references/endpoints-routing.md +0 -0
- /package/skills/{jarvis/fastapi-expert → fastapi-expert}/references/migration-from-django.md +0 -0
- /package/skills/{jarvis/fastapi-expert → fastapi-expert}/references/pydantic-v2.md +0 -0
- /package/skills/{jarvis/fastapi-expert → fastapi-expert}/references/testing-async.md +0 -0
- /package/skills/{jarvis/feature-forge → feature-forge}/SKILL.md +0 -0
- /package/skills/{jarvis/feature-forge → feature-forge}/references/acceptance-criteria.md +0 -0
- /package/skills/{jarvis/feature-forge → feature-forge}/references/ears-syntax.md +0 -0
- /package/skills/{jarvis/feature-forge → feature-forge}/references/interview-questions.md +0 -0
- /package/skills/{jarvis/feature-forge → feature-forge}/references/pre-discovery-subagents.md +0 -0
- /package/skills/{jarvis/feature-forge → feature-forge}/references/specification-template.md +0 -0
- /package/skills/{jarvis/fine-tuning-expert → fine-tuning-expert}/SKILL.md +0 -0
- /package/skills/{jarvis/fine-tuning-expert → fine-tuning-expert}/references/dataset-preparation.md +0 -0
- /package/skills/{jarvis/fine-tuning-expert → fine-tuning-expert}/references/deployment-optimization.md +0 -0
- /package/skills/{jarvis/fine-tuning-expert → fine-tuning-expert}/references/evaluation-metrics.md +0 -0
- /package/skills/{jarvis/fine-tuning-expert → fine-tuning-expert}/references/hyperparameter-tuning.md +0 -0
- /package/skills/{jarvis/fine-tuning-expert → fine-tuning-expert}/references/lora-peft.md +0 -0
- /package/skills/{max/workflow/finishing-a-development-branch → finishing-a-development-branch}/SKILL.md +0 -0
- /package/skills/{ella/flutter-expert → flutter-expert}/SKILL.md +0 -0
- /package/skills/{ella/flutter-expert → flutter-expert}/references/bloc-state.md +0 -0
- /package/skills/{ella/flutter-expert → flutter-expert}/references/gorouter-navigation.md +0 -0
- /package/skills/{ella/flutter-expert → flutter-expert}/references/performance.md +0 -0
- /package/skills/{ella/flutter-expert → flutter-expert}/references/project-structure.md +0 -0
- /package/skills/{ella/flutter-expert → flutter-expert}/references/riverpod-state.md +0 -0
- /package/skills/{ella/flutter-expert → flutter-expert}/references/widget-patterns.md +0 -0
- /package/skills/{jarvis/fullstack-guardian → fullstack-guardian}/SKILL.md +0 -0
- /package/skills/{jarvis/fullstack-guardian → fullstack-guardian}/references/api-design-standards.md +0 -0
- /package/skills/{jarvis/fullstack-guardian → fullstack-guardian}/references/architecture-decisions.md +0 -0
- /package/skills/{jarvis/fullstack-guardian → fullstack-guardian}/references/backend-patterns.md +0 -0
- /package/skills/{jarvis/fullstack-guardian → fullstack-guardian}/references/common-patterns.md +0 -0
- /package/skills/{jarvis/fullstack-guardian → fullstack-guardian}/references/deliverables-checklist.md +0 -0
- /package/skills/{jarvis/fullstack-guardian → fullstack-guardian}/references/design-template.md +0 -0
- /package/skills/{jarvis/fullstack-guardian → fullstack-guardian}/references/error-handling.md +0 -0
- /package/skills/{jarvis/fullstack-guardian → fullstack-guardian}/references/frontend-patterns.md +0 -0
- /package/skills/{jarvis/fullstack-guardian → fullstack-guardian}/references/integration-patterns.md +0 -0
- /package/skills/{jarvis/fullstack-guardian → fullstack-guardian}/references/security-checklist.md +0 -0
- /package/skills/{jarvis/golang-pro → golang-pro}/SKILL.md +0 -0
- /package/skills/{jarvis/golang-pro → golang-pro}/references/concurrency.md +0 -0
- /package/skills/{jarvis/golang-pro → golang-pro}/references/generics.md +0 -0
- /package/skills/{jarvis/golang-pro → golang-pro}/references/interfaces.md +0 -0
- /package/skills/{jarvis/golang-pro → golang-pro}/references/project-structure.md +0 -0
- /package/skills/{jarvis/golang-pro → golang-pro}/references/testing.md +0 -0
- /package/skills/{jarvis/graphql-architect → graphql-architect}/SKILL.md +0 -0
- /package/skills/{jarvis/graphql-architect → graphql-architect}/references/federation.md +0 -0
- /package/skills/{jarvis/graphql-architect → graphql-architect}/references/migration-from-rest.md +0 -0
- /package/skills/{jarvis/graphql-architect → graphql-architect}/references/resolvers.md +0 -0
- /package/skills/{jarvis/graphql-architect → graphql-architect}/references/schema-design.md +0 -0
- /package/skills/{jarvis/graphql-architect → graphql-architect}/references/security.md +0 -0
- /package/skills/{jarvis/graphql-architect → graphql-architect}/references/subscriptions.md +0 -0
- /package/skills/{jarvis/java-architect → java-architect}/SKILL.md +0 -0
- /package/skills/{jarvis/java-architect → java-architect}/references/jpa-optimization.md +0 -0
- /package/skills/{jarvis/java-architect → java-architect}/references/reactive-webflux.md +0 -0
- /package/skills/{jarvis/java-architect → java-architect}/references/spring-boot-setup.md +0 -0
- /package/skills/{jarvis/java-architect → java-architect}/references/spring-security.md +0 -0
- /package/skills/{jarvis/java-architect → java-architect}/references/testing-patterns.md +0 -0
- /package/skills/{jarvis/javascript-pro → javascript-pro}/SKILL.md +0 -0
- /package/skills/{jarvis/javascript-pro → javascript-pro}/references/async-patterns.md +0 -0
- /package/skills/{jarvis/javascript-pro → javascript-pro}/references/browser-apis.md +0 -0
- /package/skills/{jarvis/javascript-pro → javascript-pro}/references/modern-syntax.md +0 -0
- /package/skills/{jarvis/javascript-pro → javascript-pro}/references/modules.md +0 -0
- /package/skills/{jarvis/javascript-pro → javascript-pro}/references/node-essentials.md +0 -0
- /package/skills/{jarvis/kotlin-specialist → kotlin-specialist}/SKILL.md +0 -0
- /package/skills/{jarvis/kotlin-specialist → kotlin-specialist}/references/android-compose.md +0 -0
- /package/skills/{jarvis/kotlin-specialist → kotlin-specialist}/references/coroutines-flow.md +0 -0
- /package/skills/{jarvis/kotlin-specialist → kotlin-specialist}/references/dsl-idioms.md +0 -0
- /package/skills/{jarvis/kotlin-specialist → kotlin-specialist}/references/ktor-server.md +0 -0
- /package/skills/{jarvis/kotlin-specialist → kotlin-specialist}/references/multiplatform-kmp.md +0 -0
- /package/skills/{jarvis/kubernetes-specialist → kubernetes-specialist}/SKILL.md +0 -0
- /package/skills/{jarvis/kubernetes-specialist → kubernetes-specialist}/references/configuration.md +0 -0
- /package/skills/{jarvis/kubernetes-specialist → kubernetes-specialist}/references/cost-optimization.md +0 -0
- /package/skills/{jarvis/kubernetes-specialist → kubernetes-specialist}/references/custom-operators.md +0 -0
- /package/skills/{jarvis/kubernetes-specialist → kubernetes-specialist}/references/gitops.md +0 -0
- /package/skills/{jarvis/kubernetes-specialist → kubernetes-specialist}/references/helm-charts.md +0 -0
- /package/skills/{jarvis/kubernetes-specialist → kubernetes-specialist}/references/multi-cluster.md +0 -0
- /package/skills/{jarvis/kubernetes-specialist → kubernetes-specialist}/references/networking.md +0 -0
- /package/skills/{jarvis/kubernetes-specialist → kubernetes-specialist}/references/service-mesh.md +0 -0
- /package/skills/{jarvis/kubernetes-specialist → kubernetes-specialist}/references/storage.md +0 -0
- /package/skills/{jarvis/kubernetes-specialist → kubernetes-specialist}/references/troubleshooting.md +0 -0
- /package/skills/{jarvis/kubernetes-specialist → kubernetes-specialist}/references/workloads.md +0 -0
- /package/skills/{jarvis/laravel-specialist → laravel-specialist}/SKILL.md +0 -0
- /package/skills/{jarvis/laravel-specialist → laravel-specialist}/references/eloquent.md +0 -0
- /package/skills/{jarvis/laravel-specialist → laravel-specialist}/references/livewire.md +0 -0
- /package/skills/{jarvis/laravel-specialist → laravel-specialist}/references/queues.md +0 -0
- /package/skills/{jarvis/laravel-specialist → laravel-specialist}/references/routing.md +0 -0
- /package/skills/{jarvis/laravel-specialist → laravel-specialist}/references/testing.md +0 -0
- /package/skills/{jarvis/legacy-modernizer → legacy-modernizer}/SKILL.md +0 -0
- /package/skills/{jarvis/legacy-modernizer → legacy-modernizer}/references/legacy-testing.md +0 -0
- /package/skills/{jarvis/legacy-modernizer → legacy-modernizer}/references/migration-strategies.md +0 -0
- /package/skills/{jarvis/legacy-modernizer → legacy-modernizer}/references/refactoring-patterns.md +0 -0
- /package/skills/{jarvis/legacy-modernizer → legacy-modernizer}/references/strangler-fig-pattern.md +0 -0
- /package/skills/{jarvis/legacy-modernizer → legacy-modernizer}/references/system-assessment.md +0 -0
- /package/skills/{jarvis/mcp-developer → mcp-developer}/SKILL.md +0 -0
- /package/skills/{jarvis/mcp-developer → mcp-developer}/references/protocol.md +0 -0
- /package/skills/{jarvis/mcp-developer → mcp-developer}/references/python-sdk.md +0 -0
- /package/skills/{jarvis/mcp-developer → mcp-developer}/references/resources.md +0 -0
- /package/skills/{jarvis/mcp-developer → mcp-developer}/references/tools.md +0 -0
- /package/skills/{jarvis/mcp-developer → mcp-developer}/references/typescript-sdk.md +0 -0
- /package/skills/{max/meeting-notes → meeting-notes}/SKILL.md +0 -0
- /package/skills/{jarvis/microservices-architect → microservices-architect}/SKILL.md +0 -0
- /package/skills/{jarvis/microservices-architect → microservices-architect}/references/communication.md +0 -0
- /package/skills/{jarvis/microservices-architect → microservices-architect}/references/data.md +0 -0
- /package/skills/{jarvis/microservices-architect → microservices-architect}/references/decomposition.md +0 -0
- /package/skills/{jarvis/microservices-architect → microservices-architect}/references/observability.md +0 -0
- /package/skills/{jarvis/microservices-architect → microservices-architect}/references/patterns.md +0 -0
- /package/skills/{jarvis/ml-pipeline → ml-pipeline}/SKILL.md +0 -0
- /package/skills/{jarvis/ml-pipeline → ml-pipeline}/references/experiment-tracking.md +0 -0
- /package/skills/{jarvis/ml-pipeline → ml-pipeline}/references/feature-engineering.md +0 -0
- /package/skills/{jarvis/ml-pipeline → ml-pipeline}/references/model-validation.md +0 -0
- /package/skills/{jarvis/ml-pipeline → ml-pipeline}/references/pipeline-orchestration.md +0 -0
- /package/skills/{jarvis/ml-pipeline → ml-pipeline}/references/training-pipelines.md +0 -0
- /package/skills/{jarvis/monitoring-expert → monitoring-expert}/SKILL.md +0 -0
- /package/skills/{jarvis/monitoring-expert → monitoring-expert}/references/alerting-rules.md +0 -0
- /package/skills/{jarvis/monitoring-expert → monitoring-expert}/references/application-profiling.md +0 -0
- /package/skills/{jarvis/monitoring-expert → monitoring-expert}/references/capacity-planning.md +0 -0
- /package/skills/{jarvis/monitoring-expert → monitoring-expert}/references/dashboards.md +0 -0
- /package/skills/{jarvis/monitoring-expert → monitoring-expert}/references/opentelemetry.md +0 -0
- /package/skills/{jarvis/monitoring-expert → monitoring-expert}/references/performance-testing.md +0 -0
- /package/skills/{jarvis/monitoring-expert → monitoring-expert}/references/prometheus-metrics.md +0 -0
- /package/skills/{jarvis/monitoring-expert → monitoring-expert}/references/structured-logging.md +0 -0
- /package/skills/{jarvis/nestjs-expert → nestjs-expert}/SKILL.md +0 -0
- /package/skills/{jarvis/nestjs-expert → nestjs-expert}/references/authentication.md +0 -0
- /package/skills/{jarvis/nestjs-expert → nestjs-expert}/references/controllers-routing.md +0 -0
- /package/skills/{jarvis/nestjs-expert → nestjs-expert}/references/dtos-validation.md +0 -0
- /package/skills/{jarvis/nestjs-expert → nestjs-expert}/references/migration-from-express.md +0 -0
- /package/skills/{jarvis/nestjs-expert → nestjs-expert}/references/services-di.md +0 -0
- /package/skills/{jarvis/nestjs-expert → nestjs-expert}/references/testing-patterns.md +0 -0
- /package/skills/{ella/nextjs-developer → nextjs-developer}/SKILL.md +0 -0
- /package/skills/{ella/nextjs-developer → nextjs-developer}/references/app-router.md +0 -0
- /package/skills/{ella/nextjs-developer → nextjs-developer}/references/data-fetching.md +0 -0
- /package/skills/{ella/nextjs-developer → nextjs-developer}/references/deployment.md +0 -0
- /package/skills/{ella/nextjs-developer → nextjs-developer}/references/server-actions.md +0 -0
- /package/skills/{ella/nextjs-developer → nextjs-developer}/references/server-components.md +0 -0
- /package/skills/{jarvis/pandas-pro → pandas-pro}/SKILL.md +0 -0
- /package/skills/{jarvis/pandas-pro → pandas-pro}/references/aggregation-groupby.md +0 -0
- /package/skills/{jarvis/pandas-pro → pandas-pro}/references/data-cleaning.md +0 -0
- /package/skills/{jarvis/pandas-pro → pandas-pro}/references/dataframe-operations.md +0 -0
- /package/skills/{jarvis/pandas-pro → pandas-pro}/references/merging-joining.md +0 -0
- /package/skills/{jarvis/pandas-pro → pandas-pro}/references/performance-optimization.md +0 -0
- /package/skills/{jarvis/php-pro → php-pro}/SKILL.md +0 -0
- /package/skills/{jarvis/php-pro → php-pro}/references/async-patterns.md +0 -0
- /package/skills/{jarvis/php-pro → php-pro}/references/laravel-patterns.md +0 -0
- /package/skills/{jarvis/php-pro → php-pro}/references/modern-php-features.md +0 -0
- /package/skills/{jarvis/php-pro → php-pro}/references/symfony-patterns.md +0 -0
- /package/skills/{jarvis/php-pro → php-pro}/references/testing-quality.md +0 -0
- /package/skills/{kyle/playwright-expert → playwright-expert}/SKILL.md +0 -0
- /package/skills/{kyle/playwright-expert → playwright-expert}/references/api-mocking.md +0 -0
- /package/skills/{kyle/playwright-expert → playwright-expert}/references/configuration.md +0 -0
- /package/skills/{kyle/playwright-expert → playwright-expert}/references/debugging-flaky.md +0 -0
- /package/skills/{kyle/playwright-expert → playwright-expert}/references/page-object-model.md +0 -0
- /package/skills/{kyle/playwright-expert → playwright-expert}/references/selectors-locators.md +0 -0
- /package/skills/{jarvis/postgres-pro → postgres-pro}/SKILL.md +0 -0
- /package/skills/{jarvis/postgres-pro → postgres-pro}/references/extensions.md +0 -0
- /package/skills/{jarvis/postgres-pro → postgres-pro}/references/jsonb.md +0 -0
- /package/skills/{jarvis/postgres-pro → postgres-pro}/references/maintenance.md +0 -0
- /package/skills/{jarvis/postgres-pro → postgres-pro}/references/performance.md +0 -0
- /package/skills/{jarvis/postgres-pro → postgres-pro}/references/replication.md +0 -0
- /package/skills/{max/prd-template → prd-template}/SKILL.md +0 -0
- /package/skills/{jarvis/python-pro → python-pro}/SKILL.md +0 -0
- /package/skills/{jarvis/python-pro → python-pro}/references/async-patterns.md +0 -0
- /package/skills/{jarvis/python-pro → python-pro}/references/packaging.md +0 -0
- /package/skills/{jarvis/python-pro → python-pro}/references/standard-library.md +0 -0
- /package/skills/{jarvis/python-pro → python-pro}/references/testing.md +0 -0
- /package/skills/{jarvis/python-pro → python-pro}/references/type-system.md +0 -0
- /package/skills/{jarvis/rag-architect → rag-architect}/SKILL.md +0 -0
- /package/skills/{jarvis/rag-architect → rag-architect}/references/chunking-strategies.md +0 -0
- /package/skills/{jarvis/rag-architect → rag-architect}/references/embedding-models.md +0 -0
- /package/skills/{jarvis/rag-architect → rag-architect}/references/rag-evaluation.md +0 -0
- /package/skills/{jarvis/rag-architect → rag-architect}/references/retrieval-optimization.md +0 -0
- /package/skills/{jarvis/rag-architect → rag-architect}/references/vector-databases.md +0 -0
- /package/skills/{jarvis/rails-expert → rails-expert}/SKILL.md +0 -0
- /package/skills/{jarvis/rails-expert → rails-expert}/references/active-record.md +0 -0
- /package/skills/{jarvis/rails-expert → rails-expert}/references/api-development.md +0 -0
- /package/skills/{jarvis/rails-expert → rails-expert}/references/background-jobs.md +0 -0
- /package/skills/{jarvis/rails-expert → rails-expert}/references/hotwire-turbo.md +0 -0
- /package/skills/{jarvis/rails-expert → rails-expert}/references/rspec-testing.md +0 -0
- /package/skills/{ella/react-expert → react-expert}/SKILL.md +0 -0
- /package/skills/{ella/react-expert → react-expert}/references/hooks-patterns.md +0 -0
- /package/skills/{ella/react-expert → react-expert}/references/migration-class-to-modern.md +0 -0
- /package/skills/{ella/react-expert → react-expert}/references/performance.md +0 -0
- /package/skills/{ella/react-expert → react-expert}/references/react-19-features.md +0 -0
- /package/skills/{ella/react-expert → react-expert}/references/server-components.md +0 -0
- /package/skills/{ella/react-expert → react-expert}/references/state-management.md +0 -0
- /package/skills/{ella/react-expert → react-expert}/references/testing-react.md +0 -0
- /package/skills/{ella/react-native-expert → react-native-expert}/SKILL.md +0 -0
- /package/skills/{ella/react-native-expert → react-native-expert}/references/expo-router.md +0 -0
- /package/skills/{ella/react-native-expert → react-native-expert}/references/list-optimization.md +0 -0
- /package/skills/{ella/react-native-expert → react-native-expert}/references/platform-handling.md +0 -0
- /package/skills/{ella/react-native-expert → react-native-expert}/references/project-structure.md +0 -0
- /package/skills/{ella/react-native-expert → react-native-expert}/references/storage-hooks.md +0 -0
- /package/skills/{jarvis/rust-engineer → rust-engineer}/SKILL.md +0 -0
- /package/skills/{jarvis/rust-engineer → rust-engineer}/references/async.md +0 -0
- /package/skills/{jarvis/rust-engineer → rust-engineer}/references/error-handling.md +0 -0
- /package/skills/{jarvis/rust-engineer → rust-engineer}/references/ownership.md +0 -0
- /package/skills/{jarvis/rust-engineer → rust-engineer}/references/testing.md +0 -0
- /package/skills/{jarvis/rust-engineer → rust-engineer}/references/traits.md +0 -0
- /package/skills/{jarvis/secure-code-guardian → secure-code-guardian}/SKILL.md +0 -0
- /package/skills/{jarvis/secure-code-guardian → secure-code-guardian}/references/authentication.md +0 -0
- /package/skills/{jarvis/secure-code-guardian → secure-code-guardian}/references/input-validation.md +0 -0
- /package/skills/{jarvis/secure-code-guardian → secure-code-guardian}/references/owasp-prevention.md +0 -0
- /package/skills/{jarvis/secure-code-guardian → secure-code-guardian}/references/security-headers.md +0 -0
- /package/skills/{jarvis/secure-code-guardian → secure-code-guardian}/references/xss-csrf.md +0 -0
- /package/skills/{kyle/security-reviewer → security-reviewer}/SKILL.md +0 -0
- /package/skills/{kyle/security-reviewer → security-reviewer}/references/infrastructure-security.md +0 -0
- /package/skills/{kyle/security-reviewer → security-reviewer}/references/penetration-testing.md +0 -0
- /package/skills/{kyle/security-reviewer → security-reviewer}/references/report-template.md +0 -0
- /package/skills/{kyle/security-reviewer → security-reviewer}/references/sast-tools.md +0 -0
- /package/skills/{kyle/security-reviewer → security-reviewer}/references/secret-scanning.md +0 -0
- /package/skills/{kyle/security-reviewer → security-reviewer}/references/vulnerability-patterns.md +0 -0
- /package/skills/{ella/senior-frontend → senior-frontend}/SKILL.md +0 -0
- /package/skills/{ella/senior-frontend → senior-frontend}/references/frontend_best_practices.md +0 -0
- /package/skills/{ella/senior-frontend → senior-frontend}/references/nextjs_optimization_guide.md +0 -0
- /package/skills/{ella/senior-frontend → senior-frontend}/references/react_patterns.md +0 -0
- /package/skills/{ella/senior-frontend → senior-frontend}/scripts/bundle_analyzer.py +0 -0
- /package/skills/{ella/senior-frontend → senior-frontend}/scripts/component_generator.py +0 -0
- /package/skills/{ella/senior-frontend → senior-frontend}/scripts/frontend_scaffolder.py +0 -0
- /package/skills/{kyle/senior-qa → senior-qa}/README.md +0 -0
- /package/skills/{kyle/senior-qa → senior-qa}/SKILL.md +0 -0
- /package/skills/{kyle/senior-qa → senior-qa}/references/qa_best_practices.md +0 -0
- /package/skills/{kyle/senior-qa → senior-qa}/references/test_automation_patterns.md +0 -0
- /package/skills/{kyle/senior-qa → senior-qa}/references/testing_strategies.md +0 -0
- /package/skills/{kyle/senior-qa → senior-qa}/scripts/coverage_analyzer.py +0 -0
- /package/skills/{kyle/senior-qa → senior-qa}/scripts/e2e_test_scaffolder.py +0 -0
- /package/skills/{kyle/senior-qa → senior-qa}/scripts/test_suite_generator.py +0 -0
- /package/skills/{jarvis/spark-engineer → spark-engineer}/SKILL.md +0 -0
- /package/skills/{jarvis/spark-engineer → spark-engineer}/references/partitioning-caching.md +0 -0
- /package/skills/{jarvis/spark-engineer → spark-engineer}/references/performance-tuning.md +0 -0
- /package/skills/{jarvis/spark-engineer → spark-engineer}/references/rdd-operations.md +0 -0
- /package/skills/{jarvis/spark-engineer → spark-engineer}/references/spark-sql-dataframes.md +0 -0
- /package/skills/{jarvis/spark-engineer → spark-engineer}/references/streaming-patterns.md +0 -0
- /package/skills/{jarvis/spring-boot-engineer → spring-boot-engineer}/SKILL.md +0 -0
- /package/skills/{jarvis/spring-boot-engineer → spring-boot-engineer}/references/cloud.md +0 -0
- /package/skills/{jarvis/spring-boot-engineer → spring-boot-engineer}/references/data.md +0 -0
- /package/skills/{jarvis/spring-boot-engineer → spring-boot-engineer}/references/security.md +0 -0
- /package/skills/{jarvis/spring-boot-engineer → spring-boot-engineer}/references/testing.md +0 -0
- /package/skills/{jarvis/spring-boot-engineer → spring-boot-engineer}/references/web.md +0 -0
- /package/skills/{jarvis/sql-pro → sql-pro}/SKILL.md +0 -0
- /package/skills/{jarvis/sql-pro → sql-pro}/references/database-design.md +0 -0
- /package/skills/{jarvis/sql-pro → sql-pro}/references/dialect-differences.md +0 -0
- /package/skills/{jarvis/sql-pro → sql-pro}/references/optimization.md +0 -0
- /package/skills/{jarvis/sql-pro → sql-pro}/references/query-patterns.md +0 -0
- /package/skills/{jarvis/sql-pro → sql-pro}/references/window-functions.md +0 -0
- /package/skills/{jarvis/sre-engineer → sre-engineer}/SKILL.md +0 -0
- /package/skills/{jarvis/sre-engineer → sre-engineer}/references/automation-toil.md +0 -0
- /package/skills/{jarvis/sre-engineer → sre-engineer}/references/error-budget-policy.md +0 -0
- /package/skills/{jarvis/sre-engineer → sre-engineer}/references/incident-chaos.md +0 -0
- /package/skills/{jarvis/sre-engineer → sre-engineer}/references/monitoring-alerting.md +0 -0
- /package/skills/{jarvis/sre-engineer → sre-engineer}/references/slo-sli-management.md +0 -0
- /package/skills/{max/stakeholder-update → stakeholder-update}/SKILL.md +0 -0
- /package/skills/{jarvis/swift-expert → swift-expert}/SKILL.md +0 -0
- /package/skills/{jarvis/swift-expert → swift-expert}/references/async-concurrency.md +0 -0
- /package/skills/{jarvis/swift-expert → swift-expert}/references/memory-performance.md +0 -0
- /package/skills/{jarvis/swift-expert → swift-expert}/references/protocol-oriented.md +0 -0
- /package/skills/{jarvis/swift-expert → swift-expert}/references/swiftui-patterns.md +0 -0
- /package/skills/{jarvis/swift-expert → swift-expert}/references/testing-patterns.md +0 -0
- /package/skills/{max/workflow/systematic-debugging → systematic-debugging}/SKILL.md +0 -0
- /package/skills/{kyle/tdd-guide → tdd-guide}/HOW_TO_USE.md +0 -0
- /package/skills/{kyle/tdd-guide → tdd-guide}/README.md +0 -0
- /package/skills/{kyle/tdd-guide → tdd-guide}/SKILL.md +0 -0
- /package/skills/{kyle/tdd-guide → tdd-guide}/assets/expected_output.json +0 -0
- /package/skills/{kyle/tdd-guide → tdd-guide}/assets/sample_coverage_report.lcov +0 -0
- /package/skills/{kyle/tdd-guide → tdd-guide}/assets/sample_input_python.json +0 -0
- /package/skills/{kyle/tdd-guide → tdd-guide}/assets/sample_input_typescript.json +0 -0
- /package/skills/{kyle/tdd-guide → tdd-guide}/references/ci-integration.md +0 -0
- /package/skills/{kyle/tdd-guide → tdd-guide}/references/framework-guide.md +0 -0
- /package/skills/{kyle/tdd-guide → tdd-guide}/references/tdd-best-practices.md +0 -0
- /package/skills/{kyle/tdd-guide → tdd-guide}/scripts/coverage_analyzer.py +0 -0
- /package/skills/{kyle/tdd-guide → tdd-guide}/scripts/fixture_generator.py +0 -0
- /package/skills/{kyle/tdd-guide → tdd-guide}/scripts/format_detector.py +0 -0
- /package/skills/{kyle/tdd-guide → tdd-guide}/scripts/framework_adapter.py +0 -0
- /package/skills/{kyle/tdd-guide → tdd-guide}/scripts/metrics_calculator.py +0 -0
- /package/skills/{kyle/tdd-guide → tdd-guide}/scripts/output_formatter.py +0 -0
- /package/skills/{kyle/tdd-guide → tdd-guide}/scripts/tdd_workflow.py +0 -0
- /package/skills/{kyle/tdd-guide → tdd-guide}/scripts/test_generator.py +0 -0
- /package/skills/{jarvis/terraform-engineer → terraform-engineer}/SKILL.md +0 -0
- /package/skills/{jarvis/terraform-engineer → terraform-engineer}/references/best-practices.md +0 -0
- /package/skills/{jarvis/terraform-engineer → terraform-engineer}/references/module-patterns.md +0 -0
- /package/skills/{jarvis/terraform-engineer → terraform-engineer}/references/providers.md +0 -0
- /package/skills/{jarvis/terraform-engineer → terraform-engineer}/references/state-management.md +0 -0
- /package/skills/{jarvis/terraform-engineer → terraform-engineer}/references/testing.md +0 -0
- /package/skills/{kyle/test-master → test-master}/SKILL.md +0 -0
- /package/skills/{kyle/test-master → test-master}/references/automation-frameworks.md +0 -0
- /package/skills/{kyle/test-master → test-master}/references/e2e-testing.md +0 -0
- /package/skills/{kyle/test-master → test-master}/references/integration-testing.md +0 -0
- /package/skills/{kyle/test-master → test-master}/references/performance-testing.md +0 -0
- /package/skills/{kyle/test-master → test-master}/references/qa-methodology.md +0 -0
- /package/skills/{kyle/test-master → test-master}/references/security-testing.md +0 -0
- /package/skills/{kyle/test-master → test-master}/references/tdd-iron-laws.md +0 -0
- /package/skills/{kyle/test-master → test-master}/references/test-reports.md +0 -0
- /package/skills/{kyle/test-master → test-master}/references/testing-anti-patterns.md +0 -0
- /package/skills/{kyle/test-master → test-master}/references/unit-testing.md +0 -0
- /package/skills/{jarvis/typescript-pro → typescript-pro}/SKILL.md +0 -0
- /package/skills/{jarvis/typescript-pro → typescript-pro}/references/advanced-types.md +0 -0
- /package/skills/{jarvis/typescript-pro → typescript-pro}/references/configuration.md +0 -0
- /package/skills/{jarvis/typescript-pro → typescript-pro}/references/patterns.md +0 -0
- /package/skills/{jarvis/typescript-pro → typescript-pro}/references/type-guards.md +0 -0
- /package/skills/{jarvis/typescript-pro → typescript-pro}/references/utility-types.md +0 -0
- /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/SKILL.md +0 -0
- /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/charts.csv +0 -0
- /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/colors.csv +0 -0
- /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/icons.csv +0 -0
- /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/landing.csv +0 -0
- /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/products.csv +0 -0
- /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/react-performance.csv +0 -0
- /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/stacks/astro.csv +0 -0
- /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/stacks/flutter.csv +0 -0
- /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/stacks/html-tailwind.csv +0 -0
- /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/stacks/jetpack-compose.csv +0 -0
- /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/stacks/nextjs.csv +0 -0
- /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/stacks/nuxt-ui.csv +0 -0
- /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/stacks/nuxtjs.csv +0 -0
- /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/stacks/react-native.csv +0 -0
- /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/stacks/react.csv +0 -0
- /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/stacks/shadcn.csv +0 -0
- /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/stacks/svelte.csv +0 -0
- /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/stacks/swiftui.csv +0 -0
- /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/stacks/vue.csv +0 -0
- /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/styles.csv +0 -0
- /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/typography.csv +0 -0
- /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/ui-reasoning.csv +0 -0
- /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/ux-guidelines.csv +0 -0
- /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/web-interface.csv +0 -0
- /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/scripts/__pycache__/core.cpython-39.pyc +0 -0
- /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/scripts/__pycache__/design_system.cpython-39.pyc +0 -0
- /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/scripts/core.py +0 -0
- /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/scripts/design_system.py +0 -0
- /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/scripts/search.py +0 -0
- /package/skills/{max/user-research-synthesis → user-research-synthesis}/SKILL.md +0 -0
- /package/skills/{max/workflow/verification-before-completion → verification-before-completion}/SKILL.md +0 -0
- /package/skills/{ella/vue-expert → vue-expert}/SKILL.md +0 -0
- /package/skills/{ella/vue-expert → vue-expert}/references/build-tooling.md +0 -0
- /package/skills/{ella/vue-expert → vue-expert}/references/components.md +0 -0
- /package/skills/{ella/vue-expert → vue-expert}/references/composition-api.md +0 -0
- /package/skills/{ella/vue-expert → vue-expert}/references/mobile-hybrid.md +0 -0
- /package/skills/{ella/vue-expert → vue-expert}/references/nuxt.md +0 -0
- /package/skills/{ella/vue-expert → vue-expert}/references/state-management.md +0 -0
- /package/skills/{ella/vue-expert → vue-expert}/references/typescript.md +0 -0
- /package/skills/{ella/vue-expert-js → vue-expert-js}/SKILL.md +0 -0
- /package/skills/{ella/vue-expert-js → vue-expert-js}/references/component-architecture.md +0 -0
- /package/skills/{ella/vue-expert-js → vue-expert-js}/references/composables-patterns.md +0 -0
- /package/skills/{ella/vue-expert-js → vue-expert-js}/references/jsdoc-typing.md +0 -0
- /package/skills/{ella/vue-expert-js → vue-expert-js}/references/state-management.md +0 -0
- /package/skills/{ella/vue-expert-js → vue-expert-js}/references/testing-patterns.md +0 -0
- /package/skills/{jarvis/websocket-engineer → websocket-engineer}/SKILL.md +0 -0
- /package/skills/{jarvis/websocket-engineer → websocket-engineer}/references/alternatives.md +0 -0
- /package/skills/{jarvis/websocket-engineer → websocket-engineer}/references/patterns.md +0 -0
- /package/skills/{jarvis/websocket-engineer → websocket-engineer}/references/protocol.md +0 -0
- /package/skills/{jarvis/websocket-engineer → websocket-engineer}/references/scaling.md +0 -0
- /package/skills/{jarvis/websocket-engineer → websocket-engineer}/references/security.md +0 -0
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.kt"
|
|
4
|
+
- "**/*.kts"
|
|
5
|
+
---
|
|
6
|
+
# Kotlin Testing
|
|
7
|
+
|
|
8
|
+
> This file extends [common/testing.md](../common/testing.md) with Kotlin and Android/KMP-specific content.
|
|
9
|
+
|
|
10
|
+
## Test Framework
|
|
11
|
+
|
|
12
|
+
- **kotlin.test** for multiplatform (KMP) — `@Test`, `assertEquals`, `assertTrue`
|
|
13
|
+
- **JUnit 4/5** for Android-specific tests
|
|
14
|
+
- **Turbine** for testing Flows and StateFlow
|
|
15
|
+
- **kotlinx-coroutines-test** for coroutine testing (`runTest`, `TestDispatcher`)
|
|
16
|
+
|
|
17
|
+
## ViewModel Testing with Turbine
|
|
18
|
+
|
|
19
|
+
```kotlin
|
|
20
|
+
@Test
|
|
21
|
+
fun `loading state emitted then data`() = runTest {
|
|
22
|
+
val repo = FakeItemRepository()
|
|
23
|
+
repo.addItem(testItem)
|
|
24
|
+
val viewModel = ItemListViewModel(GetItemsUseCase(repo))
|
|
25
|
+
|
|
26
|
+
viewModel.state.test {
|
|
27
|
+
assertEquals(ItemListState(), awaitItem()) // initial state
|
|
28
|
+
viewModel.onEvent(ItemListEvent.Load)
|
|
29
|
+
assertTrue(awaitItem().isLoading) // loading
|
|
30
|
+
assertEquals(listOf(testItem), awaitItem().items) // loaded
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Fakes Over Mocks
|
|
36
|
+
|
|
37
|
+
Prefer hand-written fakes over mocking frameworks:
|
|
38
|
+
|
|
39
|
+
```kotlin
|
|
40
|
+
class FakeItemRepository : ItemRepository {
|
|
41
|
+
private val items = mutableListOf<Item>()
|
|
42
|
+
var fetchError: Throwable? = null
|
|
43
|
+
|
|
44
|
+
override suspend fun getAll(): Result<List<Item>> {
|
|
45
|
+
fetchError?.let { return Result.failure(it) }
|
|
46
|
+
return Result.success(items.toList())
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
override fun observeAll(): Flow<List<Item>> = flowOf(items.toList())
|
|
50
|
+
|
|
51
|
+
fun addItem(item: Item) { items.add(item) }
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Coroutine Testing
|
|
56
|
+
|
|
57
|
+
```kotlin
|
|
58
|
+
@Test
|
|
59
|
+
fun `parallel operations complete`() = runTest {
|
|
60
|
+
val repo = FakeRepository()
|
|
61
|
+
val result = loadDashboard(repo)
|
|
62
|
+
advanceUntilIdle()
|
|
63
|
+
assertNotNull(result.items)
|
|
64
|
+
assertNotNull(result.stats)
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Use `runTest` — it auto-advances virtual time and provides `TestScope`.
|
|
69
|
+
|
|
70
|
+
## Ktor MockEngine
|
|
71
|
+
|
|
72
|
+
```kotlin
|
|
73
|
+
val mockEngine = MockEngine { request ->
|
|
74
|
+
when (request.url.encodedPath) {
|
|
75
|
+
"/api/items" -> respond(
|
|
76
|
+
content = Json.encodeToString(testItems),
|
|
77
|
+
headers = headersOf(HttpHeaders.ContentType, ContentType.Application.Json.toString())
|
|
78
|
+
)
|
|
79
|
+
else -> respondError(HttpStatusCode.NotFound)
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
val client = HttpClient(mockEngine) {
|
|
84
|
+
install(ContentNegotiation) { json() }
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Room/SQLDelight Testing
|
|
89
|
+
|
|
90
|
+
- Room: Use `Room.inMemoryDatabaseBuilder()` for in-memory testing
|
|
91
|
+
- SQLDelight: Use `JdbcSqliteDriver(JdbcSqliteDriver.IN_MEMORY)` for JVM tests
|
|
92
|
+
|
|
93
|
+
```kotlin
|
|
94
|
+
@Test
|
|
95
|
+
fun `insert and query items`() = runTest {
|
|
96
|
+
val driver = JdbcSqliteDriver(JdbcSqliteDriver.IN_MEMORY)
|
|
97
|
+
Database.Schema.create(driver)
|
|
98
|
+
val db = Database(driver)
|
|
99
|
+
|
|
100
|
+
db.itemQueries.insert("1", "Sample Item", "description")
|
|
101
|
+
val items = db.itemQueries.getAll().executeAsList()
|
|
102
|
+
assertEquals(1, items.size)
|
|
103
|
+
}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Test Naming
|
|
107
|
+
|
|
108
|
+
Use backtick-quoted descriptive names:
|
|
109
|
+
|
|
110
|
+
```kotlin
|
|
111
|
+
@Test
|
|
112
|
+
fun `search with empty query returns all items`() = runTest { }
|
|
113
|
+
|
|
114
|
+
@Test
|
|
115
|
+
fun `delete item emits updated list without deleted item`() = runTest { }
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## Test Organization
|
|
119
|
+
|
|
120
|
+
```
|
|
121
|
+
src/
|
|
122
|
+
├── commonTest/kotlin/ # Shared tests (ViewModel, UseCase, Repository)
|
|
123
|
+
├── androidUnitTest/kotlin/ # Android unit tests (JUnit)
|
|
124
|
+
├── androidInstrumentedTest/kotlin/ # Instrumented tests (Room, UI)
|
|
125
|
+
└── iosTest/kotlin/ # iOS-specific tests
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Minimum test coverage: ViewModel + UseCase for every feature.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Performance And Context Budget
|
|
2
|
+
|
|
3
|
+
> 基线规则:上下文窗口是运行预算,不是无限缓存。
|
|
4
|
+
|
|
5
|
+
## MCP / Tool Budget
|
|
6
|
+
|
|
7
|
+
- 项目级默认只启用轻量 MCP:GitHub、Context7、Memory、Sequential-Thinking。
|
|
8
|
+
- 单项目启用 MCP 数量保持在 10 个以内。
|
|
9
|
+
- 活跃工具总量保持在 80 个以内。
|
|
10
|
+
- Supabase、Vercel、Railway、Cloudflare、Playwright、Exa 等重型 MCP 按任务临时启用,不写入默认必启基线。
|
|
11
|
+
- 新增 MCP 前必须说明:用途、触发场景、关闭方式、是否需要密钥。
|
|
12
|
+
|
|
13
|
+
## Context Hygiene
|
|
14
|
+
|
|
15
|
+
- 根 `CLAUDE.md` / `AGENTS.md` 只做导航,不复制长篇规则。
|
|
16
|
+
- 完整规则放在 `docs/rules/`,执行方法放在 `skills/<name>/SKILL.md`。
|
|
17
|
+
- Agent prompt 只注入任务目标、文件路径、skill 路径、验收条件和验证命令。
|
|
18
|
+
- 不在 prompt 中重复 agent 身份、人格、长背景;这些属于 agent 定义文件。
|
|
19
|
+
|
|
20
|
+
## Long-Running Work
|
|
21
|
+
|
|
22
|
+
- 长任务优先拆成阶段产物,写入 `.orchestration/<session>/`。
|
|
23
|
+
- 失败日志只保留关键错误、命令、文件路径和下一步,不粘贴整段无关输出。
|
|
24
|
+
- 进入最后 20% 上下文窗口时,不启动大重构;先 compact 或落盘当前状态。
|
|
25
|
+
|
|
26
|
+
## Verification Cost
|
|
27
|
+
|
|
28
|
+
- 默认先跑最小相关测试,再跑 harness 全量检查。
|
|
29
|
+
- 构建失败交给 `build-error-resolver` / `build_fixer` 做最小修复,不顺手重构。
|
|
30
|
+
- 文档查证优先 `docs_researcher` / Context7 / web_search,不把过期外部信息写进规则。
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.pl"
|
|
4
|
+
- "**/*.pm"
|
|
5
|
+
- "**/*.t"
|
|
6
|
+
- "**/*.psgi"
|
|
7
|
+
- "**/*.cgi"
|
|
8
|
+
---
|
|
9
|
+
# Perl Coding Style
|
|
10
|
+
|
|
11
|
+
> This file extends [common/coding-style.md](../common/coding-style.md) with Perl-specific content.
|
|
12
|
+
|
|
13
|
+
## Standards
|
|
14
|
+
|
|
15
|
+
- Always `use v5.36` (enables `strict`, `warnings`, `say`, subroutine signatures)
|
|
16
|
+
- Use subroutine signatures — never unpack `@_` manually
|
|
17
|
+
- Prefer `say` over `print` with explicit newlines
|
|
18
|
+
|
|
19
|
+
## Immutability
|
|
20
|
+
|
|
21
|
+
- Use **Moo** with `is => 'ro'` and `Types::Standard` for all attributes
|
|
22
|
+
- Never use blessed hashrefs directly — always use Moo/Moose accessors
|
|
23
|
+
- **OO override note**: Moo `has` attributes with `builder` or `default` are acceptable for computed read-only values
|
|
24
|
+
|
|
25
|
+
## Formatting
|
|
26
|
+
|
|
27
|
+
Use **perltidy** with these settings:
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
-i=4 # 4-space indent
|
|
31
|
+
-l=100 # 100 char line length
|
|
32
|
+
-ce # cuddled else
|
|
33
|
+
-bar # opening brace always right
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Linting
|
|
37
|
+
|
|
38
|
+
Use **perlcritic** at severity 3 with themes: `core`, `pbp`, `security`.
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
perlcritic --severity 3 --theme 'core || pbp || security' lib/
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Reference
|
|
45
|
+
|
|
46
|
+
See skill: `perl-patterns` for comprehensive modern Perl idioms and best practices.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.pl"
|
|
4
|
+
- "**/*.pm"
|
|
5
|
+
- "**/*.t"
|
|
6
|
+
- "**/*.psgi"
|
|
7
|
+
- "**/*.cgi"
|
|
8
|
+
---
|
|
9
|
+
# Perl Hooks
|
|
10
|
+
|
|
11
|
+
> This file extends [common/hooks.md](../common/hooks.md) with Perl-specific content.
|
|
12
|
+
|
|
13
|
+
## PostToolUse Hooks
|
|
14
|
+
|
|
15
|
+
Configure in `~/.claude/settings.json`:
|
|
16
|
+
|
|
17
|
+
- **perltidy**: Auto-format `.pl` and `.pm` files after edit
|
|
18
|
+
- **perlcritic**: Run lint check after editing `.pm` files
|
|
19
|
+
|
|
20
|
+
## Warnings
|
|
21
|
+
|
|
22
|
+
- Warn about `print` in non-script `.pm` files — use `say` or a logging module (e.g., `Log::Any`)
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.pl"
|
|
4
|
+
- "**/*.pm"
|
|
5
|
+
- "**/*.t"
|
|
6
|
+
- "**/*.psgi"
|
|
7
|
+
- "**/*.cgi"
|
|
8
|
+
---
|
|
9
|
+
# Perl Patterns
|
|
10
|
+
|
|
11
|
+
> This file extends [common/patterns.md](../common/patterns.md) with Perl-specific content.
|
|
12
|
+
|
|
13
|
+
## Repository Pattern
|
|
14
|
+
|
|
15
|
+
Use **DBI** or **DBIx::Class** behind an interface:
|
|
16
|
+
|
|
17
|
+
```perl
|
|
18
|
+
package MyApp::Repo::User;
|
|
19
|
+
use Moo;
|
|
20
|
+
|
|
21
|
+
has dbh => (is => 'ro', required => 1);
|
|
22
|
+
|
|
23
|
+
sub find_by_id ($self, $id) {
|
|
24
|
+
my $sth = $self->dbh->prepare('SELECT * FROM users WHERE id = ?');
|
|
25
|
+
$sth->execute($id);
|
|
26
|
+
return $sth->fetchrow_hashref;
|
|
27
|
+
}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## DTOs / Value Objects
|
|
31
|
+
|
|
32
|
+
Use **Moo** classes with **Types::Standard** (equivalent to Python dataclasses):
|
|
33
|
+
|
|
34
|
+
```perl
|
|
35
|
+
package MyApp::DTO::User;
|
|
36
|
+
use Moo;
|
|
37
|
+
use Types::Standard qw(Str Int);
|
|
38
|
+
|
|
39
|
+
has name => (is => 'ro', isa => Str, required => 1);
|
|
40
|
+
has email => (is => 'ro', isa => Str, required => 1);
|
|
41
|
+
has age => (is => 'ro', isa => Int);
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Resource Management
|
|
45
|
+
|
|
46
|
+
- Always use **three-arg open** with `autodie`
|
|
47
|
+
- Use **Path::Tiny** for file operations
|
|
48
|
+
|
|
49
|
+
```perl
|
|
50
|
+
use autodie;
|
|
51
|
+
use Path::Tiny;
|
|
52
|
+
|
|
53
|
+
my $content = path('config.json')->slurp_utf8;
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Module Interface
|
|
57
|
+
|
|
58
|
+
Use `Exporter 'import'` with `@EXPORT_OK` — never `@EXPORT`:
|
|
59
|
+
|
|
60
|
+
```perl
|
|
61
|
+
use Exporter 'import';
|
|
62
|
+
our @EXPORT_OK = qw(parse_config validate_input);
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Dependency Management
|
|
66
|
+
|
|
67
|
+
Use **cpanfile** + **carton** for reproducible installs:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
carton install
|
|
71
|
+
carton exec prove -lr t/
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Reference
|
|
75
|
+
|
|
76
|
+
See skill: `perl-patterns` for comprehensive modern Perl patterns and idioms.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.pl"
|
|
4
|
+
- "**/*.pm"
|
|
5
|
+
- "**/*.t"
|
|
6
|
+
- "**/*.psgi"
|
|
7
|
+
- "**/*.cgi"
|
|
8
|
+
---
|
|
9
|
+
# Perl Security
|
|
10
|
+
|
|
11
|
+
> This file extends [common/security.md](../common/security.md) with Perl-specific content.
|
|
12
|
+
|
|
13
|
+
## Taint Mode
|
|
14
|
+
|
|
15
|
+
- Use `-T` flag on all CGI/web-facing scripts
|
|
16
|
+
- Sanitize `%ENV` (`$ENV{PATH}`, `$ENV{CDPATH}`, etc.) before any external command
|
|
17
|
+
|
|
18
|
+
## Input Validation
|
|
19
|
+
|
|
20
|
+
- Use allowlist regex for untainting — never `/(.*)/s`
|
|
21
|
+
- Validate all user input with explicit patterns:
|
|
22
|
+
|
|
23
|
+
```perl
|
|
24
|
+
if ($input =~ /\A([a-zA-Z0-9_-]+)\z/) {
|
|
25
|
+
my $clean = $1;
|
|
26
|
+
}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## File I/O
|
|
30
|
+
|
|
31
|
+
- **Three-arg open only** — never two-arg open
|
|
32
|
+
- Prevent path traversal with `Cwd::realpath`:
|
|
33
|
+
|
|
34
|
+
```perl
|
|
35
|
+
use Cwd 'realpath';
|
|
36
|
+
my $safe_path = realpath($user_path);
|
|
37
|
+
die "Path traversal" unless $safe_path =~ m{\A/allowed/directory/};
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Process Execution
|
|
41
|
+
|
|
42
|
+
- Use **list-form `system()`** — never single-string form
|
|
43
|
+
- Use **IPC::Run3** for capturing output
|
|
44
|
+
- Never use backticks with variable interpolation
|
|
45
|
+
|
|
46
|
+
```perl
|
|
47
|
+
system('grep', '-r', $pattern, $directory); # safe
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## SQL Injection Prevention
|
|
51
|
+
|
|
52
|
+
Always use DBI placeholders — never interpolate into SQL:
|
|
53
|
+
|
|
54
|
+
```perl
|
|
55
|
+
my $sth = $dbh->prepare('SELECT * FROM users WHERE email = ?');
|
|
56
|
+
$sth->execute($email);
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Security Scanning
|
|
60
|
+
|
|
61
|
+
Run **perlcritic** with the security theme at severity 4+:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
perlcritic --severity 4 --theme security lib/
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Reference
|
|
68
|
+
|
|
69
|
+
See skill: `perl-security` for comprehensive Perl security patterns, taint mode, and safe I/O.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.pl"
|
|
4
|
+
- "**/*.pm"
|
|
5
|
+
- "**/*.t"
|
|
6
|
+
- "**/*.psgi"
|
|
7
|
+
- "**/*.cgi"
|
|
8
|
+
---
|
|
9
|
+
# Perl Testing
|
|
10
|
+
|
|
11
|
+
> This file extends [common/testing.md](../common/testing.md) with Perl-specific content.
|
|
12
|
+
|
|
13
|
+
## Framework
|
|
14
|
+
|
|
15
|
+
Use **Test2::V0** for new projects (not Test::More):
|
|
16
|
+
|
|
17
|
+
```perl
|
|
18
|
+
use Test2::V0;
|
|
19
|
+
|
|
20
|
+
is($result, 42, 'answer is correct');
|
|
21
|
+
|
|
22
|
+
done_testing;
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Runner
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
prove -l t/ # adds lib/ to @INC
|
|
29
|
+
prove -lr -j8 t/ # recursive, 8 parallel jobs
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Always use `-l` to ensure `lib/` is on `@INC`.
|
|
33
|
+
|
|
34
|
+
## Coverage
|
|
35
|
+
|
|
36
|
+
Use **Devel::Cover** — target 80%+:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
cover -test
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Mocking
|
|
43
|
+
|
|
44
|
+
- **Test::MockModule** — mock methods on existing modules
|
|
45
|
+
- **Test::MockObject** — create test doubles from scratch
|
|
46
|
+
|
|
47
|
+
## Pitfalls
|
|
48
|
+
|
|
49
|
+
- Always end test files with `done_testing`
|
|
50
|
+
- Never forget the `-l` flag with `prove`
|
|
51
|
+
|
|
52
|
+
## Reference
|
|
53
|
+
|
|
54
|
+
See skill: `perl-testing` for detailed Perl TDD patterns with Test2::V0, prove, and Devel::Cover.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.php"
|
|
4
|
+
- "**/composer.json"
|
|
5
|
+
---
|
|
6
|
+
# PHP Coding Style
|
|
7
|
+
|
|
8
|
+
> This file extends [common/coding-style.md](../common/coding-style.md) with PHP specific content.
|
|
9
|
+
|
|
10
|
+
## Standards
|
|
11
|
+
|
|
12
|
+
- Follow **PSR-12** formatting and naming conventions.
|
|
13
|
+
- Prefer `declare(strict_types=1);` in application code.
|
|
14
|
+
- Use scalar type hints, return types, and typed properties everywhere new code permits.
|
|
15
|
+
|
|
16
|
+
## Immutability
|
|
17
|
+
|
|
18
|
+
- Prefer immutable DTOs and value objects for data crossing service boundaries.
|
|
19
|
+
- Use `readonly` properties or immutable constructors for request/response payloads where possible.
|
|
20
|
+
- Keep arrays for simple maps; promote business-critical structures into explicit classes.
|
|
21
|
+
|
|
22
|
+
## Formatting
|
|
23
|
+
|
|
24
|
+
- Use **PHP-CS-Fixer** or **Laravel Pint** for formatting.
|
|
25
|
+
- Use **PHPStan** or **Psalm** for static analysis.
|
|
26
|
+
- Keep Composer scripts checked in so the same commands run locally and in CI.
|
|
27
|
+
|
|
28
|
+
## Imports
|
|
29
|
+
|
|
30
|
+
- Add `use` statements for all referenced classes, interfaces, and traits.
|
|
31
|
+
- Avoid relying on the global namespace unless the project explicitly prefers fully qualified names.
|
|
32
|
+
|
|
33
|
+
## Error Handling
|
|
34
|
+
|
|
35
|
+
- Throw exceptions for exceptional states; avoid returning `false`/`null` as hidden error channels in new code.
|
|
36
|
+
- Convert framework/request input into validated DTOs before it reaches domain logic.
|
|
37
|
+
|
|
38
|
+
## Reference
|
|
39
|
+
|
|
40
|
+
See skill: `backend-patterns` for broader service/repository layering guidance.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.php"
|
|
4
|
+
- "**/composer.json"
|
|
5
|
+
- "**/phpstan.neon"
|
|
6
|
+
- "**/phpstan.neon.dist"
|
|
7
|
+
- "**/psalm.xml"
|
|
8
|
+
---
|
|
9
|
+
# PHP Hooks
|
|
10
|
+
|
|
11
|
+
> This file extends [common/hooks.md](../common/hooks.md) with PHP specific content.
|
|
12
|
+
|
|
13
|
+
## PostToolUse Hooks
|
|
14
|
+
|
|
15
|
+
Configure in `~/.claude/settings.json`:
|
|
16
|
+
|
|
17
|
+
- **Pint / PHP-CS-Fixer**: Auto-format edited `.php` files.
|
|
18
|
+
- **PHPStan / Psalm**: Run static analysis after PHP edits in typed codebases.
|
|
19
|
+
- **PHPUnit / Pest**: Run targeted tests for touched files or modules when edits affect behavior.
|
|
20
|
+
|
|
21
|
+
## Warnings
|
|
22
|
+
|
|
23
|
+
- Warn on `var_dump`, `dd`, `dump`, or `die()` left in edited files.
|
|
24
|
+
- Warn when edited PHP files add raw SQL or disable CSRF/session protections.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.php"
|
|
4
|
+
- "**/composer.json"
|
|
5
|
+
---
|
|
6
|
+
# PHP Patterns
|
|
7
|
+
|
|
8
|
+
> This file extends [common/patterns.md](../common/patterns.md) with PHP specific content.
|
|
9
|
+
|
|
10
|
+
## Thin Controllers, Explicit Services
|
|
11
|
+
|
|
12
|
+
- Keep controllers focused on transport: auth, validation, serialization, status codes.
|
|
13
|
+
- Move business rules into application/domain services that are easy to test without HTTP bootstrapping.
|
|
14
|
+
|
|
15
|
+
## DTOs and Value Objects
|
|
16
|
+
|
|
17
|
+
- Replace shape-heavy associative arrays with DTOs for requests, commands, and external API payloads.
|
|
18
|
+
- Use value objects for money, identifiers, date ranges, and other constrained concepts.
|
|
19
|
+
|
|
20
|
+
## Dependency Injection
|
|
21
|
+
|
|
22
|
+
- Depend on interfaces or narrow service contracts, not framework globals.
|
|
23
|
+
- Pass collaborators through constructors so services are testable without service-locator lookups.
|
|
24
|
+
|
|
25
|
+
## Boundaries
|
|
26
|
+
|
|
27
|
+
- Isolate ORM models from domain decisions when the model layer is doing more than persistence.
|
|
28
|
+
- Wrap third-party SDKs behind small adapters so the rest of the codebase depends on your contract, not theirs.
|
|
29
|
+
|
|
30
|
+
## Reference
|
|
31
|
+
|
|
32
|
+
See skill: `api-design` for endpoint conventions and response-shape guidance.
|
|
33
|
+
See skill: `laravel-patterns` for Laravel-specific architecture guidance.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.php"
|
|
4
|
+
- "**/composer.lock"
|
|
5
|
+
- "**/composer.json"
|
|
6
|
+
---
|
|
7
|
+
# PHP Security
|
|
8
|
+
|
|
9
|
+
> This file extends [common/security.md](../common/security.md) with PHP specific content.
|
|
10
|
+
|
|
11
|
+
## Input and Output
|
|
12
|
+
|
|
13
|
+
- Validate request input at the framework boundary (`FormRequest`, Symfony Validator, or explicit DTO validation).
|
|
14
|
+
- Escape output in templates by default; treat raw HTML rendering as an exception that must be justified.
|
|
15
|
+
- Never trust query params, cookies, headers, or uploaded file metadata without validation.
|
|
16
|
+
|
|
17
|
+
## Database Safety
|
|
18
|
+
|
|
19
|
+
- Use prepared statements (`PDO`, Doctrine, Eloquent query builder) for all dynamic queries.
|
|
20
|
+
- Avoid string-building SQL in controllers/views.
|
|
21
|
+
- Scope ORM mass-assignment carefully and whitelist writable fields.
|
|
22
|
+
|
|
23
|
+
## Secrets and Dependencies
|
|
24
|
+
|
|
25
|
+
- Load secrets from environment variables or a secret manager, never from committed config files.
|
|
26
|
+
- Run `composer audit` in CI and review new package maintainer trust before adding dependencies.
|
|
27
|
+
- Pin major versions deliberately and remove abandoned packages quickly.
|
|
28
|
+
|
|
29
|
+
## Auth and Session Safety
|
|
30
|
+
|
|
31
|
+
- Use `password_hash()` / `password_verify()` for password storage.
|
|
32
|
+
- Regenerate session identifiers after authentication and privilege changes.
|
|
33
|
+
- Enforce CSRF protection on state-changing web requests.
|
|
34
|
+
|
|
35
|
+
## Reference
|
|
36
|
+
|
|
37
|
+
See skill: `laravel-security` for Laravel-specific security guidance.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.php"
|
|
4
|
+
- "**/phpunit.xml"
|
|
5
|
+
- "**/phpunit.xml.dist"
|
|
6
|
+
- "**/composer.json"
|
|
7
|
+
---
|
|
8
|
+
# PHP Testing
|
|
9
|
+
|
|
10
|
+
> This file extends [common/testing.md](../common/testing.md) with PHP specific content.
|
|
11
|
+
|
|
12
|
+
## Framework
|
|
13
|
+
|
|
14
|
+
Use **PHPUnit** as the default test framework. If **Pest** is configured in the project, prefer Pest for new tests and avoid mixing frameworks.
|
|
15
|
+
|
|
16
|
+
## Coverage
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
vendor/bin/phpunit --coverage-text
|
|
20
|
+
# or
|
|
21
|
+
vendor/bin/pest --coverage
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Prefer **pcov** or **Xdebug** in CI, and keep coverage thresholds in CI rather than as tribal knowledge.
|
|
25
|
+
|
|
26
|
+
## Test Organization
|
|
27
|
+
|
|
28
|
+
- Separate fast unit tests from framework/database integration tests.
|
|
29
|
+
- Use factory/builders for fixtures instead of large hand-written arrays.
|
|
30
|
+
- Keep HTTP/controller tests focused on transport and validation; move business rules into service-level tests.
|
|
31
|
+
|
|
32
|
+
## Inertia
|
|
33
|
+
|
|
34
|
+
If the project uses Inertia.js, prefer `assertInertia` with `AssertableInertia` to verify component names and props instead of raw JSON assertions.
|
|
35
|
+
|
|
36
|
+
## Reference
|
|
37
|
+
|
|
38
|
+
See skill: `tdd-workflow` for the repo-wide RED -> GREEN -> REFACTOR loop.
|
|
39
|
+
See skill: `laravel-tdd` for Laravel-specific testing patterns (PHPUnit and Pest).
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.py"
|
|
4
|
+
- "**/*.pyi"
|
|
5
|
+
---
|
|
6
|
+
# Python Coding Style
|
|
7
|
+
|
|
8
|
+
> This file extends [common/coding-style.md](../common/coding-style.md) with Python specific content.
|
|
9
|
+
|
|
10
|
+
## Standards
|
|
11
|
+
|
|
12
|
+
- Follow **PEP 8** conventions
|
|
13
|
+
- Use **type annotations** on all function signatures
|
|
14
|
+
|
|
15
|
+
## Immutability
|
|
16
|
+
|
|
17
|
+
Prefer immutable data structures:
|
|
18
|
+
|
|
19
|
+
```python
|
|
20
|
+
from dataclasses import dataclass
|
|
21
|
+
|
|
22
|
+
@dataclass(frozen=True)
|
|
23
|
+
class User:
|
|
24
|
+
name: str
|
|
25
|
+
email: str
|
|
26
|
+
|
|
27
|
+
from typing import NamedTuple
|
|
28
|
+
|
|
29
|
+
class Point(NamedTuple):
|
|
30
|
+
x: float
|
|
31
|
+
y: float
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Formatting
|
|
35
|
+
|
|
36
|
+
- **black** for code formatting
|
|
37
|
+
- **isort** for import sorting
|
|
38
|
+
- **ruff** for linting
|
|
39
|
+
|
|
40
|
+
## Reference
|
|
41
|
+
|
|
42
|
+
See skill: `python-patterns` for comprehensive Python idioms and patterns.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.py"
|
|
4
|
+
- "**/*.pyi"
|
|
5
|
+
---
|
|
6
|
+
# Python Hooks
|
|
7
|
+
|
|
8
|
+
> This file extends [common/hooks.md](../common/hooks.md) with Python specific content.
|
|
9
|
+
|
|
10
|
+
## PostToolUse Hooks
|
|
11
|
+
|
|
12
|
+
Configure in `~/.claude/settings.json`:
|
|
13
|
+
|
|
14
|
+
- **black/ruff**: Auto-format `.py` files after edit
|
|
15
|
+
- **mypy/pyright**: Run type checking after editing `.py` files
|
|
16
|
+
|
|
17
|
+
## Warnings
|
|
18
|
+
|
|
19
|
+
- Warn about `print()` statements in edited files (use `logging` module instead)
|