@jetrabbits/agentic 0.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/AGENTS.md +143 -0
- package/README.md +154 -0
- package/agentic +1615 -0
- package/areas/devops/ci-cd/AGENTS.md +48 -0
- package/areas/devops/ci-cd/PROMPTS.md +7 -0
- package/areas/devops/ci-cd/prompts/onboard-repo.md +97 -0
- package/areas/devops/ci-cd/prompts/pipeline-debug.md +103 -0
- package/areas/devops/ci-cd/prompts/release-pipeline.md +115 -0
- package/areas/devops/ci-cd/rules/pipeline-standards.md +33 -0
- package/areas/devops/ci-cd/rules/quality-gates.md +24 -0
- package/areas/devops/ci-cd/rules/supply-chain-security.md +34 -0
- package/areas/devops/ci-cd/skills/artifact-management/SKILL.md +157 -0
- package/areas/devops/ci-cd/skills/build-optimization/SKILL.md +168 -0
- package/areas/devops/ci-cd/skills/github-actions-patterns/SKILL.md +190 -0
- package/areas/devops/ci-cd/skills/gitlab-ci-patterns/SKILL.md +169 -0
- package/areas/devops/ci-cd/skills/pipeline-security/SKILL.md +161 -0
- package/areas/devops/ci-cd/workflows/onboard-repo.md +73 -0
- package/areas/devops/ci-cd/workflows/pipeline-debug.md +66 -0
- package/areas/devops/ci-cd/workflows/release-pipeline.md +115 -0
- package/areas/devops/database-ops/AGENTS.md +47 -0
- package/areas/devops/database-ops/prompts/backup-verify.md +83 -0
- package/areas/devops/database-ops/prompts/db-incident.md +127 -0
- package/areas/devops/database-ops/rules/access-control.md +20 -0
- package/areas/devops/database-ops/rules/backup-policy.md +33 -0
- package/areas/devops/database-ops/rules/migration-runbook.md +32 -0
- package/areas/devops/database-ops/skills/backup-restore/SKILL.md +226 -0
- package/areas/devops/database-ops/skills/db-performance/SKILL.md +205 -0
- package/areas/devops/database-ops/skills/migration-safety/SKILL.md +155 -0
- package/areas/devops/database-ops/skills/postgres-operations/SKILL.md +156 -0
- package/areas/devops/database-ops/skills/redis-operations/SKILL.md +174 -0
- package/areas/devops/database-ops/workflows/backup-verify.md +107 -0
- package/areas/devops/database-ops/workflows/db-incident.md +86 -0
- package/areas/devops/devsecops/AGENTS.md +47 -0
- package/areas/devops/devsecops/prompts/policy-onboard.md +79 -0
- package/areas/devops/devsecops/prompts/security-scan-pipeline.md +131 -0
- package/areas/devops/devsecops/rules/container-security.md +22 -0
- package/areas/devops/devsecops/rules/policy-as-code.md +37 -0
- package/areas/devops/devsecops/rules/shift-left-policy.md +26 -0
- package/areas/devops/devsecops/skills/container-hardening/SKILL.md +146 -0
- package/areas/devops/devsecops/skills/opa-policies/SKILL.md +188 -0
- package/areas/devops/devsecops/skills/sbom-supply-chain/SKILL.md +165 -0
- package/areas/devops/devsecops/skills/secret-detection/SKILL.md +190 -0
- package/areas/devops/devsecops/skills/sigstore-signing/SKILL.md +184 -0
- package/areas/devops/devsecops/workflows/policy-onboard.md +104 -0
- package/areas/devops/devsecops/workflows/security-scan-pipeline.md +155 -0
- package/areas/devops/infrastructure/AGENTS.md +50 -0
- package/areas/devops/infrastructure/prompts/destroy-environment.md +81 -0
- package/areas/devops/infrastructure/prompts/drift-remediation.md +71 -0
- package/areas/devops/infrastructure/prompts/module-development.md +69 -0
- package/areas/devops/infrastructure/prompts/provision-environment.md +121 -0
- package/areas/devops/infrastructure/rules/iac-standards.md +80 -0
- package/areas/devops/infrastructure/rules/immutability.md +28 -0
- package/areas/devops/infrastructure/rules/secret-hygiene.md +53 -0
- package/areas/devops/infrastructure/rules/state-management.md +47 -0
- package/areas/devops/infrastructure/skills/ansible-playbooks/SKILL.md +174 -0
- package/areas/devops/infrastructure/skills/cost-optimization/SKILL.md +177 -0
- package/areas/devops/infrastructure/skills/drift-detection/SKILL.md +178 -0
- package/areas/devops/infrastructure/skills/state-management/SKILL.md +159 -0
- package/areas/devops/infrastructure/skills/terraform-modules/SKILL.md +169 -0
- package/areas/devops/infrastructure/workflows/destroy-environment.md +96 -0
- package/areas/devops/infrastructure/workflows/drift-remediation.md +66 -0
- package/areas/devops/infrastructure/workflows/module-development.md +101 -0
- package/areas/devops/infrastructure/workflows/provision-environment.md +96 -0
- package/areas/devops/kubernetes/AGENTS.md +57 -0
- package/areas/devops/kubernetes/PROMPTS.md +9 -0
- package/areas/devops/kubernetes/prompts/cluster-bootstrap.md +67 -0
- package/areas/devops/kubernetes/prompts/debug-workload.md +91 -0
- package/areas/devops/kubernetes/prompts/onboard-service.md +101 -0
- package/areas/devops/kubernetes/prompts/upgrade-cluster.md +63 -0
- package/areas/devops/kubernetes/rules/cluster-standards.md +51 -0
- package/areas/devops/kubernetes/rules/resource-governance.md +80 -0
- package/areas/devops/kubernetes/rules/upgrade-policy.md +52 -0
- package/areas/devops/kubernetes/rules/workload-security.md +64 -0
- package/areas/devops/kubernetes/skills/cluster-operations/SKILL.md +136 -0
- package/areas/devops/kubernetes/skills/helm-charts/SKILL.md +152 -0
- package/areas/devops/kubernetes/skills/network-policies/SKILL.md +169 -0
- package/areas/devops/kubernetes/skills/pod-troubleshooting/SKILL.md +129 -0
- package/areas/devops/kubernetes/skills/rbac-design/SKILL.md +148 -0
- package/areas/devops/kubernetes/skills/resource-tuning/SKILL.md +156 -0
- package/areas/devops/kubernetes/workflows/cluster-bootstrap.md +194 -0
- package/areas/devops/kubernetes/workflows/debug-workload.md +108 -0
- package/areas/devops/kubernetes/workflows/onboard-service.md +124 -0
- package/areas/devops/kubernetes/workflows/upgrade-cluster.md +165 -0
- package/areas/devops/networking/AGENTS.md +47 -0
- package/areas/devops/networking/prompts/onboard-ingress.md +119 -0
- package/areas/devops/networking/prompts/service-mesh-onboard.md +77 -0
- package/areas/devops/networking/rules/ingress-standards.md +17 -0
- package/areas/devops/networking/rules/network-segmentation.md +24 -0
- package/areas/devops/networking/rules/tls-policy.md +32 -0
- package/areas/devops/networking/skills/dns-management/SKILL.md +169 -0
- package/areas/devops/networking/skills/ingress-patterns/SKILL.md +165 -0
- package/areas/devops/networking/skills/service-mesh/SKILL.md +206 -0
- package/areas/devops/networking/skills/tls-termination/SKILL.md +198 -0
- package/areas/devops/networking/skills/vpc-design/SKILL.md +132 -0
- package/areas/devops/networking/workflows/onboard-ingress.md +64 -0
- package/areas/devops/networking/workflows/service-mesh-onboard.md +122 -0
- package/areas/devops/observability/AGENTS.md +48 -0
- package/areas/devops/observability/prompts/alert-investigation.md +117 -0
- package/areas/devops/observability/prompts/observability-stack-setup.md +99 -0
- package/areas/devops/observability/prompts/onboard-service-monitoring.md +79 -0
- package/areas/devops/observability/rules/alerting-standards.md +36 -0
- package/areas/devops/observability/rules/data-retention.md +19 -0
- package/areas/devops/observability/rules/golden-signals.md +28 -0
- package/areas/devops/observability/skills/distributed-tracing/SKILL.md +149 -0
- package/areas/devops/observability/skills/grafana-dashboards/SKILL.md +201 -0
- package/areas/devops/observability/skills/log-aggregation/SKILL.md +159 -0
- package/areas/devops/observability/skills/prometheus-alertmanager/SKILL.md +188 -0
- package/areas/devops/observability/skills/slo-implementation/SKILL.md +189 -0
- package/areas/devops/observability/workflows/alert-investigation.md +98 -0
- package/areas/devops/observability/workflows/observability-stack-setup.md +156 -0
- package/areas/devops/observability/workflows/onboard-service-monitoring.md +83 -0
- package/areas/devops/sre/AGENTS.md +48 -0
- package/areas/devops/sre/prompts/incident-response.md +129 -0
- package/areas/devops/sre/prompts/postmortem.md +101 -0
- package/areas/devops/sre/prompts/slo-review.md +125 -0
- package/areas/devops/sre/rules/error-budget-policy.md +25 -0
- package/areas/devops/sre/rules/on-call-standards.md +25 -0
- package/areas/devops/sre/rules/slo-policy.md +31 -0
- package/areas/devops/sre/skills/capacity-planning/SKILL.md +162 -0
- package/areas/devops/sre/skills/chaos-engineering/SKILL.md +186 -0
- package/areas/devops/sre/skills/incident-command/SKILL.md +119 -0
- package/areas/devops/sre/skills/postmortem-analysis/SKILL.md +104 -0
- package/areas/devops/sre/skills/slo-sli-design/SKILL.md +145 -0
- package/areas/devops/sre/workflows/incident-response.md +66 -0
- package/areas/devops/sre/workflows/postmortem.md +90 -0
- package/areas/devops/sre/workflows/slo-review.md +95 -0
- package/areas/software/backend/AGENTS.md +59 -0
- package/areas/software/backend/PROMPTS.md +50 -0
- package/areas/software/backend/README.md +48 -0
- package/areas/software/backend/prompts/add-migration.md +93 -0
- package/areas/software/backend/prompts/create-endpoint.md +97 -0
- package/areas/software/backend/prompts/debug-issue.md +87 -0
- package/areas/software/backend/prompts/develop-epic.md +83 -0
- package/areas/software/backend/prompts/develop-feature.md +91 -0
- package/areas/software/backend/prompts/refactor-module.md +79 -0
- package/areas/software/backend/prompts/test-feature.md +89 -0
- package/areas/software/backend/rules/architecture.md +20 -0
- package/areas/software/backend/rules/data_access.md +20 -0
- package/areas/software/backend/rules/security.md +20 -0
- package/areas/software/backend/rules/testing.md +19 -0
- package/areas/software/backend/skills/api-design/SKILL.md +170 -0
- package/areas/software/backend/skills/async-processing/SKILL.md +152 -0
- package/areas/software/backend/skills/database-modeling/SKILL.md +173 -0
- package/areas/software/backend/skills/observability/SKILL.md +162 -0
- package/areas/software/backend/skills/troubleshooting/SKILL.md +139 -0
- package/areas/software/backend/workflows/add-migration.md +79 -0
- package/areas/software/backend/workflows/create-endpoint.md +89 -0
- package/areas/software/backend/workflows/debug-issue.md +77 -0
- package/areas/software/backend/workflows/develop-epic.md +78 -0
- package/areas/software/backend/workflows/develop-feature.md +98 -0
- package/areas/software/backend/workflows/refactor-module.md +73 -0
- package/areas/software/backend/workflows/test-feature.md +67 -0
- package/areas/software/data-engineering/AGENTS.md +59 -0
- package/areas/software/data-engineering/PROMPTS.md +32 -0
- package/areas/software/data-engineering/prompts/backfill-data.md +107 -0
- package/areas/software/data-engineering/prompts/data-quality-incident.md +109 -0
- package/areas/software/data-engineering/prompts/lineage-trace.md +121 -0
- package/areas/software/data-engineering/prompts/new-model.md +117 -0
- package/areas/software/data-engineering/prompts/schema-migration.md +111 -0
- package/areas/software/data-engineering/rules/data-governance.md +11 -0
- package/areas/software/data-engineering/rules/pii-handling.md +19 -0
- package/areas/software/data-engineering/rules/pipeline-integrity.md +11 -0
- package/areas/software/data-engineering/rules/schema-management.md +21 -0
- package/areas/software/data-engineering/skills/data-modeling/SKILL.md +49 -0
- package/areas/software/data-engineering/skills/dbt-patterns/SKILL.md +43 -0
- package/areas/software/data-engineering/skills/lineage-governance/SKILL.md +38 -0
- package/areas/software/data-engineering/skills/orchestration/SKILL.md +35 -0
- package/areas/software/data-engineering/skills/quality-checks/SKILL.md +50 -0
- package/areas/software/data-engineering/skills/sql-optimization/SKILL.md +47 -0
- package/areas/software/data-engineering/skills/streaming-patterns/SKILL.md +48 -0
- package/areas/software/data-engineering/workflows/backfill-data.md +59 -0
- package/areas/software/data-engineering/workflows/data-quality-incident.md +64 -0
- package/areas/software/data-engineering/workflows/lineage-trace.md +56 -0
- package/areas/software/data-engineering/workflows/new-model.md +71 -0
- package/areas/software/data-engineering/workflows/schema-migration.md +67 -0
- package/areas/software/frontend/AGENTS.md +60 -0
- package/areas/software/frontend/PROMPTS.md +32 -0
- package/areas/software/frontend/prompts/a11y-fix.md +75 -0
- package/areas/software/frontend/prompts/bundle-analyze.md +75 -0
- package/areas/software/frontend/prompts/release-prep.md +83 -0
- package/areas/software/frontend/prompts/scaffold-component.md +69 -0
- package/areas/software/frontend/prompts/visual-regression.md +73 -0
- package/areas/software/frontend/rules/accessibility.md +16 -0
- package/areas/software/frontend/rules/architecture.md +29 -0
- package/areas/software/frontend/rules/performance.md +23 -0
- package/areas/software/frontend/rules/quality.md +12 -0
- package/areas/software/frontend/skills/a11y-audit/SKILL.md +61 -0
- package/areas/software/frontend/skills/api-integration/SKILL.md +58 -0
- package/areas/software/frontend/skills/component-design/SKILL.md +171 -0
- package/areas/software/frontend/skills/css-architecture/SKILL.md +146 -0
- package/areas/software/frontend/skills/error-handling/SKILL.md +55 -0
- package/areas/software/frontend/skills/performance-tuning/SKILL.md +58 -0
- package/areas/software/frontend/skills/state-management/SKILL.md +54 -0
- package/areas/software/frontend/skills/testing-patterns/SKILL.md +69 -0
- package/areas/software/frontend/workflows/a11y-fix.md +63 -0
- package/areas/software/frontend/workflows/bundle-analyze.md +56 -0
- package/areas/software/frontend/workflows/release-prep.md +66 -0
- package/areas/software/frontend/workflows/scaffold-component.md +67 -0
- package/areas/software/frontend/workflows/visual-regression.md +65 -0
- package/areas/software/full-stack/AGENTS.md +72 -0
- package/areas/software/full-stack/PROMPTS.md +66 -0
- package/areas/software/full-stack/prompts/backend-project-full-cycle.md +141 -0
- package/areas/software/full-stack/prompts/debug-issue.md +115 -0
- package/areas/software/full-stack/prompts/develop-feature.md +119 -0
- package/areas/software/full-stack/prompts/feature-implementation-flow.md +137 -0
- package/areas/software/full-stack/prompts/testing-ci-pipeline.md +119 -0
- package/areas/software/full-stack/rules/api-design-guide.md +24 -0
- package/areas/software/full-stack/rules/async-concurrency-guide.md +21 -0
- package/areas/software/full-stack/rules/backend-architecture-rule.md +41 -0
- package/areas/software/full-stack/rules/background-jobs-guide.md +20 -0
- package/areas/software/full-stack/rules/code-quality-guide.md +22 -0
- package/areas/software/full-stack/rules/database-access-guide.md +24 -0
- package/areas/software/full-stack/rules/database-migrations-guide.md +24 -0
- package/areas/software/full-stack/rules/domain-models-guide.md +28 -0
- package/areas/software/full-stack/rules/e2e-test-guide.md +18 -0
- package/areas/software/full-stack/rules/env-settings-guide.md +34 -0
- package/areas/software/full-stack/rules/error-handling-guide.md +20 -0
- package/areas/software/full-stack/rules/logging-observability-guide.md +22 -0
- package/areas/software/full-stack/rules/project-guide.md +34 -0
- package/areas/software/full-stack/rules/python-venv-guide.md +23 -0
- package/areas/software/full-stack/rules/security-guide.md +22 -0
- package/areas/software/full-stack/rules/svt-test-guide.md +17 -0
- package/areas/software/full-stack/rules/testing-ci-guide.md +25 -0
- package/areas/software/full-stack/skills/api-design-principles/SKILL.md +125 -0
- package/areas/software/full-stack/skills/api-design-principles/assets/api-design-checklist.md +155 -0
- package/areas/software/full-stack/skills/api-design-principles/assets/rest-api-template.py +182 -0
- package/areas/software/full-stack/skills/api-design-principles/references/graphql-schema-design.md +583 -0
- package/areas/software/full-stack/skills/api-design-principles/references/rest-best-practices.md +408 -0
- package/areas/software/full-stack/skills/api-design-principles/resources/implementation-playbook.md +513 -0
- package/areas/software/full-stack/skills/api-patterns/SKILL.md +81 -0
- package/areas/software/full-stack/skills/api-patterns/api-style.md +42 -0
- package/areas/software/full-stack/skills/api-patterns/auth.md +24 -0
- package/areas/software/full-stack/skills/api-patterns/documentation.md +26 -0
- package/areas/software/full-stack/skills/api-patterns/graphql.md +41 -0
- package/areas/software/full-stack/skills/api-patterns/rate-limiting.md +31 -0
- package/areas/software/full-stack/skills/api-patterns/response.md +37 -0
- package/areas/software/full-stack/skills/api-patterns/rest.md +40 -0
- package/areas/software/full-stack/skills/api-patterns/scripts/api_validator.py +211 -0
- package/areas/software/full-stack/skills/api-patterns/security-testing.md +122 -0
- package/areas/software/full-stack/skills/api-patterns/trpc.md +41 -0
- package/areas/software/full-stack/skills/api-patterns/versioning.md +22 -0
- package/areas/software/full-stack/skills/app-builder/SKILL.md +135 -0
- package/areas/software/full-stack/skills/app-builder/agent-coordination.md +71 -0
- package/areas/software/full-stack/skills/app-builder/feature-building.md +53 -0
- package/areas/software/full-stack/skills/app-builder/project-detection.md +34 -0
- package/areas/software/full-stack/skills/app-builder/scaffolding.md +118 -0
- package/areas/software/full-stack/skills/app-builder/tech-stack.md +40 -0
- package/areas/software/full-stack/skills/app-builder/templates/SKILL.md +39 -0
- package/areas/software/full-stack/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
- package/areas/software/full-stack/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
- package/areas/software/full-stack/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
- package/areas/software/full-stack/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
- package/areas/software/full-stack/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
- package/areas/software/full-stack/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
- package/areas/software/full-stack/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
- package/areas/software/full-stack/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +82 -0
- package/areas/software/full-stack/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +100 -0
- package/areas/software/full-stack/skills/app-builder/templates/nextjs-static/TEMPLATE.md +106 -0
- package/areas/software/full-stack/skills/app-builder/templates/nuxt-app/TEMPLATE.md +101 -0
- package/areas/software/full-stack/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
- package/areas/software/full-stack/skills/app-builder/templates/react-native-app/TEMPLATE.md +93 -0
- package/areas/software/full-stack/skills/backend-developer/SKILL.md +58 -0
- package/areas/software/full-stack/skills/bash-pro/SKILL.md +310 -0
- package/areas/software/full-stack/skills/blackbox-test/SKILL.md +84 -0
- package/areas/software/full-stack/skills/prompt-project-planner/SKILL.md +130 -0
- package/areas/software/full-stack/skills/prompt-project-planner/output.schema.md +68 -0
- package/areas/software/full-stack/skills/prompt-project-planner/questions.md +80 -0
- package/areas/software/full-stack/skills/python-pro/SKILL.md +158 -0
- package/areas/software/full-stack/skills/skill-creator/LICENSE.txt +202 -0
- package/areas/software/full-stack/skills/skill-creator/SKILL.md +356 -0
- package/areas/software/full-stack/skills/skill-creator/references/output-patterns.md +82 -0
- package/areas/software/full-stack/skills/skill-creator/references/workflows.md +28 -0
- package/areas/software/full-stack/skills/skill-creator/scripts/init_skill.py +303 -0
- package/areas/software/full-stack/skills/skill-creator/scripts/package_skill.py +110 -0
- package/areas/software/full-stack/skills/skill-creator/scripts/quick_validate.py +95 -0
- package/areas/software/full-stack/workflows/backend-project-full-cycle.md +132 -0
- package/areas/software/full-stack/workflows/debug-issue.md +70 -0
- package/areas/software/full-stack/workflows/develop-feature.md +85 -0
- package/areas/software/full-stack/workflows/feature-implementation-flow.md +78 -0
- package/areas/software/full-stack/workflows/testing-ci-pipeline.md +65 -0
- package/areas/software/general/AGENTS.md +68 -0
- package/areas/software/general/prompts/code-review-workflow.md +87 -0
- package/areas/software/general/prompts/development-cycle-workflow.md +83 -0
- package/areas/software/general/prompts/project-setup-workflow.md +93 -0
- package/areas/software/general/rules/code-style-guide.md +31 -0
- package/areas/software/general/rules/docker-compose-guide.md +27 -0
- package/areas/software/general/rules/git-workflow-guide.md +27 -0
- package/areas/software/general/rules/github-workflow-guide.md +27 -0
- package/areas/software/general/rules/gitlab-ci-guide.md +27 -0
- package/areas/software/general/rules/lint-format-guide.md +29 -0
- package/areas/software/general/rules/makefile-guide.md +34 -0
- package/areas/software/general/rules/readme-sync-guide.md +40 -0
- package/areas/software/general/rules/sdlc-methodology-guide.md +27 -0
- package/areas/software/general/rules/sdlc-role-responsibilities.md +108 -0
- package/areas/software/general/skills/general-dev-tools/SKILL.md +324 -0
- package/areas/software/general/workflows/code-review-workflow.md +84 -0
- package/areas/software/general/workflows/development-cycle-workflow.md +85 -0
- package/areas/software/general/workflows/project-setup-workflow.md +94 -0
- package/areas/software/mlops/AGENTS.md +57 -0
- package/areas/software/mlops/PROMPTS.md +32 -0
- package/areas/software/mlops/prompts/champion-challenger.md +87 -0
- package/areas/software/mlops/prompts/deploy-endpoint.md +91 -0
- package/areas/software/mlops/prompts/evaluate-model.md +87 -0
- package/areas/software/mlops/prompts/model-incident.md +87 -0
- package/areas/software/mlops/prompts/train-experiment.md +83 -0
- package/areas/software/mlops/rules/data-integrity.md +9 -0
- package/areas/software/mlops/rules/model-governance.md +9 -0
- package/areas/software/mlops/rules/production-safety.md +9 -0
- package/areas/software/mlops/rules/reproducibility.md +9 -0
- package/areas/software/mlops/skills/experiment-tracking/SKILL.md +29 -0
- package/areas/software/mlops/skills/feature-engineering/SKILL.md +44 -0
- package/areas/software/mlops/skills/inference-serving/SKILL.md +35 -0
- package/areas/software/mlops/skills/model-evaluation/SKILL.md +40 -0
- package/areas/software/mlops/skills/model-monitoring/SKILL.md +32 -0
- package/areas/software/mlops/workflows/champion-challenger.md +65 -0
- package/areas/software/mlops/workflows/deploy-endpoint.md +70 -0
- package/areas/software/mlops/workflows/evaluate-model.md +63 -0
- package/areas/software/mlops/workflows/model-incident.md +64 -0
- package/areas/software/mlops/workflows/train-experiment.md +56 -0
- package/areas/software/mobile/AGENTS.md +58 -0
- package/areas/software/mobile/PROMPTS.md +32 -0
- package/areas/software/mobile/prompts/crash-triage.md +63 -0
- package/areas/software/mobile/prompts/device-testing.md +83 -0
- package/areas/software/mobile/prompts/ota-update.md +75 -0
- package/areas/software/mobile/prompts/release-build.md +67 -0
- package/areas/software/mobile/prompts/store-submission.md +79 -0
- package/areas/software/mobile/rules/offline-first.md +10 -0
- package/areas/software/mobile/rules/performance-budget.md +20 -0
- package/areas/software/mobile/rules/platform-compliance.md +17 -0
- package/areas/software/mobile/rules/security-mobile.md +9 -0
- package/areas/software/mobile/skills/app-store-prep/SKILL.md +27 -0
- package/areas/software/mobile/skills/mobile-testing/SKILL.md +36 -0
- package/areas/software/mobile/skills/native-modules/SKILL.md +38 -0
- package/areas/software/mobile/skills/navigation-patterns/SKILL.md +49 -0
- package/areas/software/mobile/skills/push-notifications/SKILL.md +40 -0
- package/areas/software/mobile/skills/state-sync/SKILL.md +48 -0
- package/areas/software/mobile/workflows/crash-triage.md +63 -0
- package/areas/software/mobile/workflows/device-testing.md +54 -0
- package/areas/software/mobile/workflows/ota-update.md +54 -0
- package/areas/software/mobile/workflows/release-build.md +67 -0
- package/areas/software/mobile/workflows/store-submission.md +63 -0
- package/areas/software/platform/AGENTS.md +67 -0
- package/areas/software/platform/PROMPTS.md +32 -0
- package/areas/software/platform/prompts/cost-audit.md +117 -0
- package/areas/software/platform/prompts/deploy-production.md +109 -0
- package/areas/software/platform/prompts/drift-check.md +107 -0
- package/areas/software/platform/prompts/incident-response.md +121 -0
- package/areas/software/platform/prompts/provision-env.md +113 -0
- package/areas/software/platform/rules/cost-governance.md +11 -0
- package/areas/software/platform/rules/immutability.md +17 -0
- package/areas/software/platform/rules/reliability.md +19 -0
- package/areas/software/platform/rules/security-posture.md +12 -0
- package/areas/software/platform/skills/ci-cd-pipelines/SKILL.md +58 -0
- package/areas/software/platform/skills/incident-response/SKILL.md +41 -0
- package/areas/software/platform/skills/k8s-manifests/SKILL.md +56 -0
- package/areas/software/platform/skills/networking/SKILL.md +44 -0
- package/areas/software/platform/skills/observability-setup/SKILL.md +49 -0
- package/areas/software/platform/skills/secrets-management/SKILL.md +43 -0
- package/areas/software/platform/skills/terraform-patterns/SKILL.md +75 -0
- package/areas/software/platform/workflows/cost-audit.md +61 -0
- package/areas/software/platform/workflows/deploy-production.md +67 -0
- package/areas/software/platform/workflows/drift-check.md +61 -0
- package/areas/software/platform/workflows/incident-response.md +69 -0
- package/areas/software/platform/workflows/provision-env.md +77 -0
- package/areas/software/qa/AGENTS.md +58 -0
- package/areas/software/qa/PROMPTS.md +32 -0
- package/areas/software/qa/prompts/flakiness-investigation.md +61 -0
- package/areas/software/qa/prompts/performance-audit.md +65 -0
- package/areas/software/qa/prompts/regression-suite.md +61 -0
- package/areas/software/qa/prompts/smoke-test.md +65 -0
- package/areas/software/qa/prompts/test-coverage-report.md +61 -0
- package/areas/software/qa/rules/flakiness-policy.md +12 -0
- package/areas/software/qa/rules/quality-gates.md +28 -0
- package/areas/software/qa/rules/test-data.md +9 -0
- package/areas/software/qa/rules/test-strategy.md +11 -0
- package/areas/software/qa/skills/accessibility-testing/SKILL.md +139 -0
- package/areas/software/qa/skills/api-testing/SKILL.md +140 -0
- package/areas/software/qa/skills/e2e-patterns/SKILL.md +152 -0
- package/areas/software/qa/skills/performance-testing/SKILL.md +177 -0
- package/areas/software/qa/skills/test-data-management/SKILL.md +161 -0
- package/areas/software/qa/skills/test-pyramid/SKILL.md +127 -0
- package/areas/software/qa/workflows/flakiness-investigation.md +63 -0
- package/areas/software/qa/workflows/performance-audit.md +59 -0
- package/areas/software/qa/workflows/regression-suite.md +59 -0
- package/areas/software/qa/workflows/smoke-test.md +64 -0
- package/areas/software/qa/workflows/test-coverage-report.md +57 -0
- package/areas/software/security/AGENTS.md +58 -0
- package/areas/software/security/PROMPTS.md +32 -0
- package/areas/software/security/prompts/compliance-report.md +113 -0
- package/areas/software/security/prompts/pen-test-sim.md +113 -0
- package/areas/software/security/prompts/secret-rotation.md +115 -0
- package/areas/software/security/prompts/security-scan.md +91 -0
- package/areas/software/security/prompts/threat-model-review.md +105 -0
- package/areas/software/security/rules/compliance-baseline.md +23 -0
- package/areas/software/security/rules/dependency-policy.md +12 -0
- package/areas/software/security/rules/secrets-policy.md +22 -0
- package/areas/software/security/rules/secure-coding.md +22 -0
- package/areas/software/security/skills/auth-patterns/SKILL.md +42 -0
- package/areas/software/security/skills/crypto-standards/SKILL.md +42 -0
- package/areas/software/security/skills/dependency-audit/SKILL.md +29 -0
- package/areas/software/security/skills/sast-dast-interpretation/SKILL.md +33 -0
- package/areas/software/security/skills/security-headers/SKILL.md +29 -0
- package/areas/software/security/skills/threat-modeling/SKILL.md +36 -0
- package/areas/software/security/workflows/compliance-report.md +57 -0
- package/areas/software/security/workflows/pen-test-sim.md +63 -0
- package/areas/software/security/workflows/secret-rotation.md +67 -0
- package/areas/software/security/workflows/security-scan.md +64 -0
- package/areas/software/security/workflows/threat-model-review.md +62 -0
- package/areas/template/AGENTS-area.tmpl.md +61 -0
- package/areas/template/AGENTS.tmpl.md +67 -0
- package/areas/template/GUIDE.md +102 -0
- package/areas/template/PROMPTS.tmpl.md +29 -0
- package/areas/template/README.md +57 -0
- package/areas/template/README.tmpl.md +51 -0
- package/areas/template/prompt.tmpl.md +101 -0
- package/areas/template/rule.tmpl.md +71 -0
- package/areas/template/skill.tmpl.md +108 -0
- package/areas/template/workflow.tmpl.md +104 -0
- package/bin/agentic.js +24 -0
- package/extensions/antigravity/GEMINI.md +10 -0
- package/extensions/claude/CLAUDE.md +10 -0
- package/extensions/codex/AGENTS.override.md +93 -0
- package/extensions/gemini/GEMINI.md +10 -0
- package/extensions/opencode/agents/designer.md +65 -0
- package/extensions/opencode/agents/developer.md +63 -0
- package/extensions/opencode/agents/devops-engineer.md +69 -0
- package/extensions/opencode/agents/pm.md +61 -0
- package/extensions/opencode/agents/product-owner.md +76 -0
- package/extensions/opencode/agents/qa.md +66 -0
- package/extensions/opencode/agents/team-lead.md +67 -0
- package/extensions/opencode/commands/feature.md +75 -0
- package/extensions/opencode/opencode.json +93 -0
- package/extensions/opencode/plugins/model-checker.json +14 -0
- package/extensions/opencode/plugins/model-checker.ts +279 -0
- package/extensions/opencode/plugins/sound-notification.ts +13 -0
- package/extensions/opencode/plugins/telegram-notification.ts +86 -0
- package/extensions/opencode/skills/code_review_expert/SKILL.md +144 -0
- package/extensions/opencode/skills/design_expert/SKILL.md +42 -0
- package/extensions/opencode/skills/qa_expert/SKILL.md +116 -0
- package/package.json +19 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://opencode.ai/config.json",
|
|
3
|
+
"plugin": [
|
|
4
|
+
"model-checker",
|
|
5
|
+
"sound-notification",
|
|
6
|
+
"telegram-notification"
|
|
7
|
+
],
|
|
8
|
+
"agent": {
|
|
9
|
+
"product-owner": {
|
|
10
|
+
"description": "Main coordinator for feature development workflow",
|
|
11
|
+
"mode": "primary",
|
|
12
|
+
"model": "google/antigravity-claude-sonnet-4-6",
|
|
13
|
+
"fallback": [
|
|
14
|
+
"openai/gpt-5.4",
|
|
15
|
+
"opencode/minimax-m2.5-free"
|
|
16
|
+
],
|
|
17
|
+
"permission": {
|
|
18
|
+
"task": {
|
|
19
|
+
"pm": "allow",
|
|
20
|
+
"team-lead": "allow",
|
|
21
|
+
"designer": "allow",
|
|
22
|
+
"developer": "allow",
|
|
23
|
+
"qa": "allow"
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"pm": {
|
|
28
|
+
"description": "Project Manager - coordinates workflow",
|
|
29
|
+
"mode": "subagent",
|
|
30
|
+
"model": "google/antigravity-claude-sonnet-4-6",
|
|
31
|
+
"fallback": [
|
|
32
|
+
"openai/gpt-5.4",
|
|
33
|
+
"opencode/minimax-m2.5-free"
|
|
34
|
+
],
|
|
35
|
+
"permission": {
|
|
36
|
+
"task": {
|
|
37
|
+
"team-lead": "allow",
|
|
38
|
+
"designer": "allow",
|
|
39
|
+
"developer": "allow",
|
|
40
|
+
"qa": "allow"
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"team-lead": {
|
|
45
|
+
"description": "Team Lead - planning and code review",
|
|
46
|
+
"mode": "subagent",
|
|
47
|
+
"model": "google/antigravity-claude-opus-4-6-thinking",
|
|
48
|
+
"fallback": [
|
|
49
|
+
"openai/gpt-5.3-codex"
|
|
50
|
+
],
|
|
51
|
+
"permission": {
|
|
52
|
+
"task": {
|
|
53
|
+
"developer": "allow",
|
|
54
|
+
"qa": "allow"
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
"developer": {
|
|
59
|
+
"description": "Developer - implements code",
|
|
60
|
+
"mode": "subagent",
|
|
61
|
+
"model": "google/antigravity-claude-opus-4-6-thinking",
|
|
62
|
+
"fallback": [
|
|
63
|
+
"openai/gpt-5.3-codex"
|
|
64
|
+
]
|
|
65
|
+
},
|
|
66
|
+
"devops-engineer": {
|
|
67
|
+
"description": "DevOps Engineer - infrastructure, CI/CD, and platform reliability",
|
|
68
|
+
"mode": "subagent",
|
|
69
|
+
"model": "google/antigravity-claude-opus-4-6-thinking",
|
|
70
|
+
"fallback": [
|
|
71
|
+
"openai/gpt-5.3-codex"
|
|
72
|
+
]
|
|
73
|
+
},
|
|
74
|
+
"qa": {
|
|
75
|
+
"description": "QA Engineer - runs tests",
|
|
76
|
+
"mode": "subagent",
|
|
77
|
+
"model": "google/antigravity-gemini-3-flash",
|
|
78
|
+
"fallback": [
|
|
79
|
+
"opencode/minimax-m2.5-free",
|
|
80
|
+
"openai/gpt-5.4"
|
|
81
|
+
]
|
|
82
|
+
},
|
|
83
|
+
"designer": {
|
|
84
|
+
"description": "Designer - UI/UX validation",
|
|
85
|
+
"mode": "subagent",
|
|
86
|
+
"model": "google/antigravity-claude-sonnet-4-6",
|
|
87
|
+
"fallback": [
|
|
88
|
+
"opencode/minimax-m2.5-free",
|
|
89
|
+
"openai/gpt-5.4"
|
|
90
|
+
]
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"models": [
|
|
3
|
+
"openai/gpt-5.3-codex",
|
|
4
|
+
"openai/gpt-5.4",
|
|
5
|
+
"opencode/big-pickle",
|
|
6
|
+
"opencode/minimax-m2.5-free",
|
|
7
|
+
"google/antigravity-claude-opus-4-6-thinking",
|
|
8
|
+
"google/antigravity-claude-sonnet-4-6",
|
|
9
|
+
"google/antigravity-gemini-3-flash",
|
|
10
|
+
"google/antigravity-gemini-3.1-pro"
|
|
11
|
+
],
|
|
12
|
+
"timeoutMs": 10000,
|
|
13
|
+
"concurrency": 10
|
|
14
|
+
}
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
import type { Plugin } from "@opencode-ai/plugin"
|
|
2
|
+
import { mkdir, readFile, writeFile } from "node:fs/promises"
|
|
3
|
+
import { join } from "node:path"
|
|
4
|
+
import { tmpdir } from "node:os"
|
|
5
|
+
import { spawn } from "node:child_process"
|
|
6
|
+
|
|
7
|
+
interface ModelResult {
|
|
8
|
+
model: string
|
|
9
|
+
status: "passed" | "failed"
|
|
10
|
+
error?: string
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
interface ModelCheckerConfig {
|
|
14
|
+
models: string[]
|
|
15
|
+
timeoutMs: number
|
|
16
|
+
concurrency: number
|
|
17
|
+
prompt: string
|
|
18
|
+
probeDir: string
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
type CommandResult = {
|
|
22
|
+
code: number | null
|
|
23
|
+
output: string
|
|
24
|
+
timedOut: boolean
|
|
25
|
+
durationMs: number
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
async function readModelsJson(projectDir: string): Promise<ModelCheckerConfig> {
|
|
29
|
+
const defaults: ModelCheckerConfig = {
|
|
30
|
+
models: [],
|
|
31
|
+
timeoutMs: 10000,
|
|
32
|
+
concurrency: 3,
|
|
33
|
+
prompt: "Reply with exactly: OK",
|
|
34
|
+
probeDir: tmpdir(),
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
try {
|
|
38
|
+
const filePath = join(projectDir, ".opencode", "plugins", "model-checker.json")
|
|
39
|
+
const content = await readFile(filePath, "utf-8")
|
|
40
|
+
const data = JSON.parse(content)
|
|
41
|
+
if (!Array.isArray(data.models)) return defaults
|
|
42
|
+
|
|
43
|
+
const models = [...new Set(data.models.map(String).filter(Boolean))]
|
|
44
|
+
const timeoutMs = Number.isFinite(data.timeoutMs)
|
|
45
|
+
? Math.min(120000, Math.max(1000, Number(data.timeoutMs)))
|
|
46
|
+
: defaults.timeoutMs
|
|
47
|
+
const concurrency = Number.isFinite(data.concurrency)
|
|
48
|
+
? Math.min(10, Math.max(1, Number(data.concurrency)))
|
|
49
|
+
: defaults.concurrency
|
|
50
|
+
const prompt = typeof data.prompt === "string" && data.prompt.trim() ? data.prompt.trim() : defaults.prompt
|
|
51
|
+
const probeDir = typeof data.probeDir === "string" && data.probeDir.trim() ? data.probeDir.trim() : defaults.probeDir
|
|
52
|
+
|
|
53
|
+
return {
|
|
54
|
+
models,
|
|
55
|
+
timeoutMs,
|
|
56
|
+
concurrency,
|
|
57
|
+
prompt,
|
|
58
|
+
probeDir,
|
|
59
|
+
}
|
|
60
|
+
} catch {
|
|
61
|
+
return defaults
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
async function runModelProbe(model: string, prompt: string, timeoutMs: number, probeDir: string): Promise<CommandResult> {
|
|
66
|
+
return await new Promise((resolve) => {
|
|
67
|
+
const startedAt = Date.now()
|
|
68
|
+
const child = spawn("opencode", ["run", prompt, "-m", model, "--dir", probeDir, "--log-level", "ERROR"], {
|
|
69
|
+
cwd: probeDir,
|
|
70
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
71
|
+
env: {
|
|
72
|
+
...process.env,
|
|
73
|
+
OPENCODE_MODEL_CHECKER_ACTIVE: "1",
|
|
74
|
+
},
|
|
75
|
+
})
|
|
76
|
+
|
|
77
|
+
let stdout = ""
|
|
78
|
+
let stderr = ""
|
|
79
|
+
let timedOut = false
|
|
80
|
+
|
|
81
|
+
const timer = setTimeout(() => {
|
|
82
|
+
timedOut = true
|
|
83
|
+
child.kill("SIGKILL")
|
|
84
|
+
}, timeoutMs)
|
|
85
|
+
|
|
86
|
+
child.stdout.on("data", (chunk: Buffer | string) => {
|
|
87
|
+
stdout += chunk.toString()
|
|
88
|
+
})
|
|
89
|
+
|
|
90
|
+
child.stderr.on("data", (chunk: Buffer | string) => {
|
|
91
|
+
stderr += chunk.toString()
|
|
92
|
+
})
|
|
93
|
+
|
|
94
|
+
child.on("close", (code) => {
|
|
95
|
+
clearTimeout(timer)
|
|
96
|
+
resolve({
|
|
97
|
+
code,
|
|
98
|
+
timedOut,
|
|
99
|
+
output: `${stdout}\n${stderr}`.toLowerCase(),
|
|
100
|
+
durationMs: Date.now() - startedAt,
|
|
101
|
+
})
|
|
102
|
+
})
|
|
103
|
+
|
|
104
|
+
child.on("error", (error) => {
|
|
105
|
+
clearTimeout(timer)
|
|
106
|
+
resolve({
|
|
107
|
+
code: 1,
|
|
108
|
+
timedOut,
|
|
109
|
+
output: String(error).toLowerCase(),
|
|
110
|
+
durationMs: Date.now() - startedAt,
|
|
111
|
+
})
|
|
112
|
+
})
|
|
113
|
+
})
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
async function runModelChecks(
|
|
117
|
+
models: string[],
|
|
118
|
+
prompt: string,
|
|
119
|
+
timeoutMs: number,
|
|
120
|
+
concurrency: number,
|
|
121
|
+
probeDir: string,
|
|
122
|
+
): Promise<CommandResult[]> {
|
|
123
|
+
const workers = Math.min(concurrency, models.length)
|
|
124
|
+
const results: CommandResult[] = new Array(models.length)
|
|
125
|
+
let cursor = 0
|
|
126
|
+
|
|
127
|
+
await Promise.all(
|
|
128
|
+
Array.from({ length: workers }, async () => {
|
|
129
|
+
while (true) {
|
|
130
|
+
const index = cursor++
|
|
131
|
+
if (index >= models.length) return
|
|
132
|
+
results[index] = await runModelProbe(models[index], prompt, timeoutMs, probeDir)
|
|
133
|
+
}
|
|
134
|
+
}),
|
|
135
|
+
)
|
|
136
|
+
|
|
137
|
+
return results
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
function classifyResult(model: string, probe: CommandResult): ModelResult {
|
|
141
|
+
if (probe.timedOut) return { model, status: "failed", error: "timeout" }
|
|
142
|
+
|
|
143
|
+
if (probe.output.includes("quota") || probe.output.includes("insufficient") || probe.output.includes("429")) {
|
|
144
|
+
return { model, status: "failed", error: "quota" }
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
if (probe.code !== 0) {
|
|
148
|
+
if (/(\b4\d\d\b|\b5\d\d\b)/.test(probe.output)) {
|
|
149
|
+
return { model, status: "failed", error: "provider error" }
|
|
150
|
+
}
|
|
151
|
+
return { model, status: "failed", error: `exit code ${probe.code ?? "null"}` }
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
if (!probe.output.includes("ok")) {
|
|
155
|
+
return { model, status: "failed", error: "unexpected response" }
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
return { model, status: "passed" }
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
function printLists(passed: ModelResult[], failed: ModelResult[]) {
|
|
162
|
+
console.log("\npassed_models:")
|
|
163
|
+
for (const model of passed) {
|
|
164
|
+
console.log(`- ${model.model}`)
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
console.log("\nfailed_models:")
|
|
168
|
+
for (const model of failed) {
|
|
169
|
+
console.log(`- ${model.model}${model.error ? ` (${model.error})` : ""}`)
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
function formatTelegramMessage(passed: ModelResult[], failed: ModelResult[], selected: string): string {
|
|
174
|
+
const passedText = passed.length ? passed.map((x) => `• ${x.model}`).join("\n") : "(none)"
|
|
175
|
+
const failedText = failed.length
|
|
176
|
+
? failed.map((x) => `• ${x.model}${x.error ? ` (${x.error})` : ""}`).join("\n")
|
|
177
|
+
: "(none)"
|
|
178
|
+
|
|
179
|
+
return [
|
|
180
|
+
"<b>LLM availability check</b>",
|
|
181
|
+
"",
|
|
182
|
+
`<b>passed_models (${passed.length})</b>`,
|
|
183
|
+
passedText,
|
|
184
|
+
"",
|
|
185
|
+
`<b>failed_models (${failed.length})</b>`,
|
|
186
|
+
failedText,
|
|
187
|
+
"",
|
|
188
|
+
`<b>selected model:</b> ${selected}`,
|
|
189
|
+
].join("\n")
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
async function sendTelegram(message: string) {
|
|
193
|
+
const token = process.env.OPENCODE_TELEGRAM_BOT_TOKEN
|
|
194
|
+
const chatID = process.env.OPENCODE_TELEGRAM_CHAT_ID
|
|
195
|
+
if (!token || !chatID) return
|
|
196
|
+
|
|
197
|
+
try {
|
|
198
|
+
await fetch(`https://api.telegram.org/bot${token}/sendMessage`, {
|
|
199
|
+
method: "POST",
|
|
200
|
+
headers: { "Content-Type": "application/json" },
|
|
201
|
+
body: JSON.stringify({
|
|
202
|
+
chat_id: chatID,
|
|
203
|
+
text: message,
|
|
204
|
+
parse_mode: "HTML",
|
|
205
|
+
}),
|
|
206
|
+
})
|
|
207
|
+
} catch {
|
|
208
|
+
// no-op
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
async function regenerateOpencodeJson(projectDir: string, selected: string, passed: string[]) {
|
|
213
|
+
const filePath = join(projectDir, ".opencode", "opencode.json")
|
|
214
|
+
try {
|
|
215
|
+
const content = await readFile(filePath, "utf-8")
|
|
216
|
+
const config = JSON.parse(content)
|
|
217
|
+
|
|
218
|
+
if (!config.agent || typeof config.agent !== "object") return
|
|
219
|
+
|
|
220
|
+
for (const [agentName, agentConfig] of Object.entries<any>(config.agent)) {
|
|
221
|
+
if (!agentConfig || typeof agentConfig !== "object") continue
|
|
222
|
+
if (agentConfig.mode !== "subagent") continue
|
|
223
|
+
|
|
224
|
+
config.agent[agentName].model = selected
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
await writeFile(filePath, `${JSON.stringify(config, null, 2)}\n`, "utf-8")
|
|
228
|
+
} catch {
|
|
229
|
+
// no-op
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
export const ModelCheckerPlugin: Plugin = async ({ directory }) => {
|
|
234
|
+
if (process.env.OPENCODE_MODEL_CHECKER_ACTIVE === "1") {
|
|
235
|
+
return {}
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
if (process.argv[2] === "run") {
|
|
239
|
+
return {}
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
async function runChecks() {
|
|
243
|
+
const config = await readModelsJson(directory)
|
|
244
|
+
const { models, prompt, timeoutMs, concurrency, probeDir } = config
|
|
245
|
+
if (!models.length) return
|
|
246
|
+
|
|
247
|
+
await mkdir(probeDir, { recursive: true })
|
|
248
|
+
|
|
249
|
+
console.log("\nStarting LLM model availability check...")
|
|
250
|
+
console.log(`- models: ${models.length}, concurrency: ${Math.min(concurrency, models.length)}, timeout: ${timeoutMs}ms`)
|
|
251
|
+
const results: ModelResult[] = []
|
|
252
|
+
const probes = await runModelChecks(models, prompt, timeoutMs, concurrency, probeDir)
|
|
253
|
+
for (const [index, model] of models.entries()) {
|
|
254
|
+
const probe = probes[index]
|
|
255
|
+
const result = classifyResult(model, probe)
|
|
256
|
+
results.push(result)
|
|
257
|
+
console.log(
|
|
258
|
+
`- checking ${model}... ${result.status === "passed" ? "OK" : `FAIL (${result.error})`} (${probe.durationMs}ms)`,
|
|
259
|
+
)
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
const passedModels = results.filter((x) => x.status === "passed")
|
|
263
|
+
const failedModels = results.filter((x) => x.status === "failed")
|
|
264
|
+
const selected = passedModels[0]?.model ?? "none"
|
|
265
|
+
|
|
266
|
+
printLists(passedModels, failedModels)
|
|
267
|
+
console.log(`\nselected_model: ${selected}`)
|
|
268
|
+
|
|
269
|
+
if (selected !== "none") {
|
|
270
|
+
await regenerateOpencodeJson(directory, selected, passedModels.map((x) => x.model))
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
await sendTelegram(formatTelegramMessage(passedModels, failedModels, selected))
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
await runChecks()
|
|
277
|
+
|
|
278
|
+
return {}
|
|
279
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Plugin } from "@opencode-ai/plugin"
|
|
2
|
+
|
|
3
|
+
export const SoundNotificationPlugin: Plugin = async ({ $ }) => {
|
|
4
|
+
return {
|
|
5
|
+
event: async ({ event }) => {
|
|
6
|
+
if (event.type === "session.idle") {
|
|
7
|
+
try {
|
|
8
|
+
await $`afplay /System/Library/Sounds/Glass.aiff`
|
|
9
|
+
} catch {}
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import type { Plugin } from "@opencode-ai/plugin"
|
|
2
|
+
|
|
3
|
+
export const TelegramNotificationPlugin: Plugin = async ({ $, client, directory }) => {
|
|
4
|
+
return {
|
|
5
|
+
event: async ({ event }) => {
|
|
6
|
+
if (event.type === "session.idle") {
|
|
7
|
+
const botToken = process.env.OPENCODE_TELEGRAM_BOT_TOKEN
|
|
8
|
+
const chatId = process.env.OPENCODE_TELEGRAM_CHAT_ID
|
|
9
|
+
|
|
10
|
+
if (!botToken || !chatId) return
|
|
11
|
+
|
|
12
|
+
const sessionID = event.properties.sessionID
|
|
13
|
+
let messageText = "✅ Задача завершена"
|
|
14
|
+
let fullText = ""
|
|
15
|
+
|
|
16
|
+
try {
|
|
17
|
+
const sessionResult = await client.session.get({ path: { id: sessionID } })
|
|
18
|
+
const session = sessionResult.data
|
|
19
|
+
|
|
20
|
+
if (!sessionResult.error && session) {
|
|
21
|
+
messageText = `✅ ${session.title || "Задача завершена"}`
|
|
22
|
+
|
|
23
|
+
if (session.summary) {
|
|
24
|
+
messageText += `\n📊 +${session.summary.additions} -${session.summary.deletions} в ${session.summary.files} файл(ах)`
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const messagesResult = await client.session.messages({ path: { id: sessionID } })
|
|
28
|
+
if (!messagesResult.error && messagesResult.data?.length) {
|
|
29
|
+
const lastMessage = messagesResult.data[messagesResult.data.length - 1]
|
|
30
|
+
const textParts = lastMessage.parts?.filter(p => p.type === "text") || []
|
|
31
|
+
fullText = textParts.map(p => (p as any).text).join("")
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
} catch (e) {
|
|
35
|
+
await $`echo "Error: ${e}" >> ${directory}/.opencode/telegram-debug.log`
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
try {
|
|
39
|
+
if (fullText.length >= 4096) {
|
|
40
|
+
const formData = new FormData()
|
|
41
|
+
formData.append("chat_id", chatId)
|
|
42
|
+
formData.append(
|
|
43
|
+
"document",
|
|
44
|
+
new Blob([fullText], { type: "text/markdown" }),
|
|
45
|
+
`response-${sessionID.slice(0, 8)}.md`
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
await fetch(
|
|
49
|
+
`https://api.telegram.org/bot${botToken}/sendDocument`,
|
|
50
|
+
{ method: "POST", body: formData }
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
const shortText = fullText.slice(0, 3000)
|
|
54
|
+
await fetch(
|
|
55
|
+
`https://api.telegram.org/bot${botToken}/sendMessage`,
|
|
56
|
+
{
|
|
57
|
+
method: "POST",
|
|
58
|
+
headers: { "Content-Type": "application/json" },
|
|
59
|
+
body: JSON.stringify({
|
|
60
|
+
chat_id: chatId,
|
|
61
|
+
text: `${messageText}\n\n📎 Полный ответ в attachment (${fullText.length} символов):\n\n${shortText}...`
|
|
62
|
+
})
|
|
63
|
+
}
|
|
64
|
+
)
|
|
65
|
+
} else {
|
|
66
|
+
const textToSend = fullText
|
|
67
|
+
? `${messageText}\n\n${fullText}`
|
|
68
|
+
: messageText
|
|
69
|
+
|
|
70
|
+
await fetch(
|
|
71
|
+
`https://api.telegram.org/bot${botToken}/sendMessage`,
|
|
72
|
+
{
|
|
73
|
+
method: "POST",
|
|
74
|
+
headers: { "Content-Type": "application/json" },
|
|
75
|
+
body: JSON.stringify({
|
|
76
|
+
chat_id: chatId,
|
|
77
|
+
text: textToSend.slice(0, 4096)
|
|
78
|
+
})
|
|
79
|
+
}
|
|
80
|
+
)
|
|
81
|
+
}
|
|
82
|
+
} catch {}
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
}
|
|
86
|
+
}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: code_review_expert
|
|
3
|
+
description: "Code Review Expert for static analysis, security auditing, architecture review, and ensuring code quality standards."
|
|
4
|
+
metadata:
|
|
5
|
+
model: inherit
|
|
6
|
+
risk: unknown
|
|
7
|
+
source: community
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Purpose
|
|
11
|
+
Expert code reviewer specializing in static analysis, security auditing, architecture review, and ensuring code quality for Flutter/Dart applications. Validates that code meets team standards and is production-ready.
|
|
12
|
+
|
|
13
|
+
## Use this skill when
|
|
14
|
+
- Performing code reviews
|
|
15
|
+
- Conducting security audits
|
|
16
|
+
- Reviewing architecture decisions
|
|
17
|
+
- Running static analysis tools
|
|
18
|
+
- Validating code quality standards
|
|
19
|
+
- Checking code for vulnerabilities
|
|
20
|
+
|
|
21
|
+
## Do not use this skill when
|
|
22
|
+
- Writing new code (use flutter_expert for that)
|
|
23
|
+
- Only unit testing (use qa_expert for that)
|
|
24
|
+
|
|
25
|
+
## Capabilities
|
|
26
|
+
|
|
27
|
+
### Static Analysis
|
|
28
|
+
- **flutter analyze**: Dart static analysis
|
|
29
|
+
- **dart analyze**: Type checking and linting
|
|
30
|
+
- **Custom lints**: Team-specific rules
|
|
31
|
+
- **Dead code detection**: Unused imports, variables
|
|
32
|
+
- **Performance anti-patterns**: Inefficient patterns
|
|
33
|
+
|
|
34
|
+
### Security Auditing
|
|
35
|
+
- **OWASP Mobile Top 10**: Security vulnerability detection
|
|
36
|
+
- **Secret detection**: API keys, tokens in code
|
|
37
|
+
- **Input validation**: User input sanitization
|
|
38
|
+
- **Authentication flows**: Security validation
|
|
39
|
+
- **Data storage**: Secure storage practices
|
|
40
|
+
- **Network security**: Certificate pinning, HTTPS
|
|
41
|
+
|
|
42
|
+
### Architecture Review
|
|
43
|
+
- **Clean Architecture**: Layer separation validation
|
|
44
|
+
- **SOLID principles**: Code design compliance
|
|
45
|
+
- **Dependency injection**: Proper usage
|
|
46
|
+
- **State management**: Appropriate pattern usage
|
|
47
|
+
- **Error handling**: Consistent error management
|
|
48
|
+
|
|
49
|
+
### Code Quality Standards
|
|
50
|
+
- **Code style**: Flutter/Dart conventions
|
|
51
|
+
- **Documentation**: Public API docs
|
|
52
|
+
- **Naming conventions**: Clear, consistent names
|
|
53
|
+
- **Complexity**: Cyclomatic complexity limits
|
|
54
|
+
- **Testability**: Code testability assessment
|
|
55
|
+
|
|
56
|
+
### Build & Deployment Validation
|
|
57
|
+
- **Build verification**: `flutter build apk --debug`
|
|
58
|
+
- **Lint checks**: `flutter analyze`
|
|
59
|
+
- **Test execution**: `flutter test`
|
|
60
|
+
- **Bundle size**: APK size validation
|
|
61
|
+
|
|
62
|
+
## Behavioral Traits
|
|
63
|
+
- Provides constructive, actionable feedback
|
|
64
|
+
- Focuses on critical issues first
|
|
65
|
+
- Validates security from the start
|
|
66
|
+
- Ensures code is maintainable
|
|
67
|
+
- Approves only production-ready code
|
|
68
|
+
|
|
69
|
+
## Response Approach
|
|
70
|
+
1. **Run static analysis** - flutter analyze
|
|
71
|
+
2. **Review code structure** - architecture compliance
|
|
72
|
+
3. **Check security** - vulnerability scan
|
|
73
|
+
4. **Validate tests** - test quality and coverage
|
|
74
|
+
5. **Check build** - ensure compilation success
|
|
75
|
+
6. **Provide verdict** - approve or request changes
|
|
76
|
+
|
|
77
|
+
## Code Review Checklist
|
|
78
|
+
|
|
79
|
+
### Critical (Must Fix)
|
|
80
|
+
- [ ] Security vulnerabilities
|
|
81
|
+
- [ ] Crashes or runtime errors
|
|
82
|
+
- [ ] Memory leaks
|
|
83
|
+
- [ ] Data loss risks
|
|
84
|
+
|
|
85
|
+
### Major (Should Fix)
|
|
86
|
+
- [ ] Code style violations
|
|
87
|
+
- [ ] Missing documentation
|
|
88
|
+
- [ ] Performance issues
|
|
89
|
+
- [ ] Test coverage < 80%
|
|
90
|
+
|
|
91
|
+
### Minor (Nice to Fix)
|
|
92
|
+
- [ ] Naming improvements
|
|
93
|
+
- [ ] Code simplifications
|
|
94
|
+
- [ ] Comment improvements
|
|
95
|
+
|
|
96
|
+
## Security Checkpoints
|
|
97
|
+
|
|
98
|
+
```dart
|
|
99
|
+
// ❌ BAD: Hardcoded secrets
|
|
100
|
+
const apiKey = 'sk-1234567890';
|
|
101
|
+
|
|
102
|
+
// ✅ GOOD: Environment variables
|
|
103
|
+
final apiKey = const String.fromEnvironment('API_KEY');
|
|
104
|
+
|
|
105
|
+
// ❌ BAD: Insecure storage
|
|
106
|
+
SharedPreferences.setMockInitialValues({});
|
|
107
|
+
final prefs = await SharedPreferences.getInstance();
|
|
108
|
+
prefs.setString('token', token);
|
|
109
|
+
|
|
110
|
+
// ✅ GOOD: Secure storage
|
|
111
|
+
final secureStorage = SecureStorage();
|
|
112
|
+
await secureStorage.write(key: 'token', value: token);
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Verdict Format
|
|
116
|
+
|
|
117
|
+
### Code Review Report
|
|
118
|
+
```
|
|
119
|
+
| Check | Status | Notes |
|
|
120
|
+
|-------|--------|-------|
|
|
121
|
+
| Static Analysis | ✅/❌ | X warnings, Y errors |
|
|
122
|
+
| Security Audit | ✅/❌ | X vulnerabilities found |
|
|
123
|
+
| Architecture | ✅/❌ | Clean Architecture compliant |
|
|
124
|
+
| Code Quality | ✅/❌ | Team standards met |
|
|
125
|
+
| Tests | ✅/❌ | X tests, XX% coverage |
|
|
126
|
+
| Build | ✅/❌ | Builds successfully |
|
|
127
|
+
|
|
128
|
+
### Final Verdict
|
|
129
|
+
[APPROVED / REQUEST_CHANGES]
|
|
130
|
+
|
|
131
|
+
Comments:
|
|
132
|
+
- Issue 1: ...
|
|
133
|
+
- Issue 2: ...
|
|
134
|
+
|
|
135
|
+
### Feature Feasibility
|
|
136
|
+
[FEASIBLE / NOT_FEASIBLE]
|
|
137
|
+
|
|
138
|
+
Reasoning:
|
|
139
|
+
- Design is implementable: Yes/No
|
|
140
|
+
- Technical constraints: ...
|
|
141
|
+
- Risks: ...
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
Always provide clear approval or rejection with detailed reasoning.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: design_expert
|
|
3
|
+
description: "Expert UI/UX design intelligence for creating distinctive, high-craft, and mobile-first interfaces. Focuses on premium aesthetics, touch-first ergonomics, and Flutter performance."
|
|
4
|
+
metadata:
|
|
5
|
+
model: inherit
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Design Expert UX/UI (Distinctive, Production-Grade)
|
|
9
|
+
|
|
10
|
+
You are a **designer-engineer** specializing in high-end, memorable interfaces that feel premium and intentional. Your goal is to move beyond generic layouts and "AI design" tropes.
|
|
11
|
+
|
|
12
|
+
## 1. Core Mandates
|
|
13
|
+
- **Intentional Aesthetic**: Every design must have a named direction (e.g., *luxury minimal*, *industrial utilitarian*, *editorial brutalism*).
|
|
14
|
+
- **Visual Memorability**: Include at least one element or interaction that defines the project's identity.
|
|
15
|
+
- **Cohesive Restraint**: No random decoration. Every flourish must serve the aesthetic thesis.
|
|
16
|
+
|
|
17
|
+
## 2. Mobile & UX Psychology
|
|
18
|
+
- **Finger != Cursor**: Minimum touch targets 44-48px.
|
|
19
|
+
- **Thumb Zone**: Primary actions must be easily reachable by thumbs.
|
|
20
|
+
- **Fitts’ Law**: Reachability matters more than precision. Destructive actions should be harder to reach accidentally.
|
|
21
|
+
|
|
22
|
+
## 3. Flutter Performance Doctrine
|
|
23
|
+
- **`const` Everywhere**: Use constant constructors to minimize widget rebuilds.
|
|
24
|
+
- **Targeted Rebuilds**: Use specialized providers (Riverpod/Bloc) to rebuild only what's necessary.
|
|
25
|
+
- **ListView.builder**: Never use `ScrollView` for long lists; always use builders for lazy rendering.
|
|
26
|
+
|
|
27
|
+
## 4. Aesthetic Execution Tools
|
|
28
|
+
- **Typography Strategy**: Use one expressive display font for headlines and one restrained body font. Avoid system defaults.
|
|
29
|
+
- **Spatial Composition**: White space is a design element, not "empty" space. Break the grid occasionally for emphasis.
|
|
30
|
+
- **Texture & Depth**: Use noise, grain, layered translucency, or custom shadows with narrative intent.
|
|
31
|
+
|
|
32
|
+
## 5. Required Design Thinking Phase
|
|
33
|
+
Before writing code, define:
|
|
34
|
+
1. **Purpose**: What is the core user feeling this interface should evoke? (Trust, excitement, calm).
|
|
35
|
+
2. **Differentiation Anchor**: "If the logo were removed, how would a user recognize this design?"
|
|
36
|
+
3. **Tone**: Choose one dominant direction (Luxury, Brutalist, Playful, etc.). Do not blend more than two.
|
|
37
|
+
|
|
38
|
+
## 6. Anti-Patterns (Immediate Failure)
|
|
39
|
+
❌ Purple-on-white SaaS gradients.
|
|
40
|
+
❌ Generic "AI-generated" symmetrical layouts.
|
|
41
|
+
❌ Inter/Roboto/System fonts without a specific reason.
|
|
42
|
+
❌ Decoration without intent.
|