@synapta/skills 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +11 -4
- package/package.json +3 -4
- package/skills/ATTRIBUTION.md +80 -0
- package/skills/accessibility-audit/SKILL.md +325 -0
- package/skills/accessibility-audit/reference/wcag-checklist.md +103 -0
- package/skills/apns-notifier/SKILL.md +86 -0
- package/skills/approval-policy-enforcer/SKILL.md +66 -0
- package/skills/apps-sdk-builder/LICENSE.txt +201 -0
- package/skills/apps-sdk-builder/SKILL.md +328 -0
- package/skills/apps-sdk-builder/agents/openai.yaml +13 -0
- package/skills/apps-sdk-builder/references/app-archetypes.md +132 -0
- package/skills/apps-sdk-builder/references/apps-sdk-docs-workflow.md +135 -0
- package/skills/apps-sdk-builder/references/interactive-state-sync-patterns.md +113 -0
- package/skills/apps-sdk-builder/references/repo-contract-and-validation.md +93 -0
- package/skills/apps-sdk-builder/references/search-fetch-standard.md +67 -0
- package/skills/apps-sdk-builder/references/upstream-example-workflow.md +79 -0
- package/skills/apps-sdk-builder/references/window-openai-patterns.md +79 -0
- package/skills/apps-sdk-builder/scripts/scaffold_node_ext_apps.mjs +606 -0
- package/skills/architecture-selector/SKILL.md +64 -0
- package/skills/backlog-planner/SKILL.md +68 -0
- package/skills/carplay-entitlement-checker/SKILL.md +82 -0
- package/skills/concept-deepener/SKILL.md +86 -0
- package/skills/concept-discovery/SKILL.md +517 -0
- package/skills/concept-discovery/assets/sample-analysis.json +81 -0
- package/skills/concept-discovery/expected_outputs/sample-enum-dictionary.md +25 -0
- package/skills/concept-discovery/expected_outputs/sample-page-user-list.md +83 -0
- package/skills/concept-discovery/expected_outputs/sample-prd-readme.md +43 -0
- package/skills/concept-discovery/references/framework-patterns.md +228 -0
- package/skills/concept-discovery/references/prd-quality-checklist.md +65 -0
- package/skills/concept-discovery/scripts/codebase_analyzer.py +732 -0
- package/skills/concept-discovery/scripts/prd_scaffolder.py +435 -0
- package/skills/dast-zap/SKILL.md +453 -0
- package/skills/dast-zap/assets/.gitkeep +9 -0
- package/skills/dast-zap/assets/github_action.yml +207 -0
- package/skills/dast-zap/assets/gitlab_ci.yml +226 -0
- package/skills/dast-zap/assets/zap_automation.yaml +196 -0
- package/skills/dast-zap/assets/zap_context.xml +192 -0
- package/skills/dast-zap/references/EXAMPLE.md +40 -0
- package/skills/dast-zap/references/api_testing_guide.md +475 -0
- package/skills/dast-zap/references/authentication_guide.md +431 -0
- package/skills/dast-zap/references/false_positive_handling.md +427 -0
- package/skills/dast-zap/references/owasp_mapping.md +255 -0
- package/skills/dep-sbom-scan/SKILL.md +466 -0
- package/skills/deploy-cloudflare/SKILL.md +930 -0
- package/skills/deploy-docker/SKILL.md +55 -0
- package/skills/deploy-fly/SKILL.md +228 -0
- package/skills/deploy-k8s/SKILL.md +108 -0
- package/skills/deploy-k8s/assets/logo.png +0 -0
- package/skills/deploy-k8s/docs/README.md +29 -0
- package/skills/deploy-k8s/docs/SUMMARY.md +56 -0
- package/skills/deploy-k8s/docs/advanced/token-efficiency.md +61 -0
- package/skills/deploy-k8s/docs/architecture/multi-tenancy.md +96 -0
- package/skills/deploy-k8s/docs/architecture/storage-and-state.md +102 -0
- package/skills/deploy-k8s/docs/architecture/workload-patterns.md +87 -0
- package/skills/deploy-k8s/docs/book.json +16 -0
- package/skills/deploy-k8s/docs/community/changelog.md +34 -0
- package/skills/deploy-k8s/docs/community/contributing.md +67 -0
- package/skills/deploy-k8s/docs/core-concepts/failure-modes.md +153 -0
- package/skills/deploy-k8s/docs/core-concepts/philosophy.md +83 -0
- package/skills/deploy-k8s/docs/core-concepts/workflow.md +124 -0
- package/skills/deploy-k8s/docs/examples/bad-patterns.md +47 -0
- package/skills/deploy-k8s/docs/examples/do-dont-checklist.md +37 -0
- package/skills/deploy-k8s/docs/examples/good-patterns.md +49 -0
- package/skills/deploy-k8s/docs/failure-modes/api-drift.md +104 -0
- package/skills/deploy-k8s/docs/failure-modes/fragile-rollouts.md +99 -0
- package/skills/deploy-k8s/docs/failure-modes/insecure-workload-defaults.md +80 -0
- package/skills/deploy-k8s/docs/failure-modes/network-exposure.md +98 -0
- package/skills/deploy-k8s/docs/failure-modes/privilege-sprawl.md +91 -0
- package/skills/deploy-k8s/docs/failure-modes/resource-starvation.md +85 -0
- package/skills/deploy-k8s/docs/getting-started/installation.md +152 -0
- package/skills/deploy-k8s/docs/getting-started/quick-start.md +115 -0
- package/skills/deploy-k8s/docs/guides/helm-patterns.md +71 -0
- package/skills/deploy-k8s/docs/guides/kustomize-patterns.md +65 -0
- package/skills/deploy-k8s/docs/guides/observability.md +67 -0
- package/skills/deploy-k8s/docs/guides/security-hardening.md +59 -0
- package/skills/deploy-k8s/docs/guides/validation-and-policy.md +66 -0
- package/skills/deploy-k8s/docs/integrations/mcp-integration.md +52 -0
- package/skills/deploy-k8s/docs/package-lock.json +2892 -0
- package/skills/deploy-k8s/docs/package.json +13 -0
- package/skills/deploy-k8s/references/api-drift.md +298 -0
- package/skills/deploy-k8s/references/conditional/aks-patterns.md +70 -0
- package/skills/deploy-k8s/references/conditional/eks-patterns.md +79 -0
- package/skills/deploy-k8s/references/conditional/gitops-controllers.md +71 -0
- package/skills/deploy-k8s/references/conditional/gke-patterns.md +74 -0
- package/skills/deploy-k8s/references/conditional/observability-stacks.md +80 -0
- package/skills/deploy-k8s/references/conditional/openshift-patterns.md +67 -0
- package/skills/deploy-k8s/references/daemonset-operator-patterns.md +155 -0
- package/skills/deploy-k8s/references/deployment-patterns.md +146 -0
- package/skills/deploy-k8s/references/do-dont-patterns.md +87 -0
- package/skills/deploy-k8s/references/examples-bad.md +282 -0
- package/skills/deploy-k8s/references/examples-good.md +440 -0
- package/skills/deploy-k8s/references/fragile-rollouts.md +303 -0
- package/skills/deploy-k8s/references/helm-patterns.md +203 -0
- package/skills/deploy-k8s/references/insecure-workload-defaults.md +300 -0
- package/skills/deploy-k8s/references/job-patterns.md +120 -0
- package/skills/deploy-k8s/references/kustomize-patterns.md +239 -0
- package/skills/deploy-k8s/references/multi-tenancy.md +343 -0
- package/skills/deploy-k8s/references/network-exposure.md +481 -0
- package/skills/deploy-k8s/references/observability.md +302 -0
- package/skills/deploy-k8s/references/privilege-sprawl.md +273 -0
- package/skills/deploy-k8s/references/resource-starvation.md +374 -0
- package/skills/deploy-k8s/references/security-hardening.md +209 -0
- package/skills/deploy-k8s/references/stateful-patterns.md +130 -0
- package/skills/deploy-k8s/references/storage-and-state.md +330 -0
- package/skills/deploy-k8s/references/validation-and-policy.md +242 -0
- package/skills/deploy-railway/SKILL.md +235 -0
- package/skills/deploy-railway/references/analyze-db-mongo.md +84 -0
- package/skills/deploy-railway/references/analyze-db-mysql.md +254 -0
- package/skills/deploy-railway/references/analyze-db-postgres.md +479 -0
- package/skills/deploy-railway/references/analyze-db-redis.md +208 -0
- package/skills/deploy-railway/references/analyze-db.md +344 -0
- package/skills/deploy-railway/references/configure.md +309 -0
- package/skills/deploy-railway/references/deploy.md +195 -0
- package/skills/deploy-railway/references/operate.md +214 -0
- package/skills/deploy-railway/references/request.md +248 -0
- package/skills/deploy-railway/references/setup.md +312 -0
- package/skills/deploy-railway/scripts/analyze-mongo.py +1549 -0
- package/skills/deploy-railway/scripts/analyze-mysql.py +1195 -0
- package/skills/deploy-railway/scripts/analyze-postgres.py +3058 -0
- package/skills/deploy-railway/scripts/analyze-redis.py +1090 -0
- package/skills/deploy-railway/scripts/dal.py +671 -0
- package/skills/deploy-railway/scripts/enable-pg-stats.py +170 -0
- package/skills/deploy-railway/scripts/pg-extensions.py +370 -0
- package/skills/deploy-railway/scripts/railway-api.sh +52 -0
- package/skills/deploy-ssh/SKILL.md +91 -0
- package/skills/deploy-vercel/SKILL.md +304 -0
- package/skills/deploy-vercel/resources/deploy-codex.sh +301 -0
- package/skills/deploy-vercel/resources/deploy.sh +301 -0
- package/skills/docs-runbooks/SKILL.md +399 -0
- package/skills/drive-status-renderer/SKILL.md +62 -0
- package/skills/iac-scan/SKILL.md +680 -0
- package/skills/iac-scan/assets/.gitkeep +9 -0
- package/skills/iac-scan/assets/checkov_config.yaml +94 -0
- package/skills/iac-scan/assets/github_actions.yml +199 -0
- package/skills/iac-scan/assets/gitlab_ci.yml +218 -0
- package/skills/iac-scan/assets/pre_commit_config.yaml +92 -0
- package/skills/iac-scan/references/EXAMPLE.md +40 -0
- package/skills/iac-scan/references/compliance_mapping.md +237 -0
- package/skills/iac-scan/references/custom_policies.md +460 -0
- package/skills/iac-scan/references/suppression_guide.md +431 -0
- package/skills/incident-briefing/SKILL.md +66 -0
- package/skills/incident-triage/SKILL.md +481 -0
- package/{LICENSE → skills/mcp-builder/LICENSE.txt} +15 -14
- package/skills/mcp-builder/SKILL.md +244 -0
- package/skills/mcp-builder/reference/evaluation.md +602 -0
- package/skills/mcp-builder/reference/mcp_best_practices.md +249 -0
- package/skills/mcp-builder/reference/node_mcp_server.md +970 -0
- package/skills/mcp-builder/reference/python_mcp_server.md +719 -0
- package/skills/mcp-builder/scripts/connections.py +151 -0
- package/skills/mcp-builder/scripts/evaluation.py +373 -0
- package/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
- package/skills/mcp-builder/scripts/requirements.txt +2 -0
- package/skills/mobile-pairing/SKILL.md +52 -0
- package/skills/ops-sre/SKILL.md +297 -0
- package/skills/playwright-qa/LICENSE.txt +201 -0
- package/skills/playwright-qa/NOTICE.txt +14 -0
- package/skills/playwright-qa/SKILL.md +156 -0
- package/skills/playwright-qa/agents/openai.yaml +6 -0
- package/skills/playwright-qa/assets/playwright-small.svg +3 -0
- package/skills/playwright-qa/assets/playwright.png +0 -0
- package/skills/playwright-qa/references/cli.md +116 -0
- package/skills/playwright-qa/references/workflows.md +95 -0
- package/skills/playwright-qa/scripts/playwright_cli.sh +25 -0
- package/skills/release-publish/SKILL.md +85 -0
- package/skills/repo-bootstrap/SKILL.md +92 -0
- package/skills/repo-bootstrap/assets/example-workflows/validate-agents.yml +89 -0
- package/skills/repo-bootstrap/assets/root-thin.md +141 -0
- package/skills/repo-bootstrap/assets/root-verbose.md +149 -0
- package/skills/repo-bootstrap/assets/scoped/backend-go.md +107 -0
- package/skills/repo-bootstrap/assets/scoped/backend-php.md +94 -0
- package/skills/repo-bootstrap/assets/scoped/backend-python.md +84 -0
- package/skills/repo-bootstrap/assets/scoped/backend-typescript.md +89 -0
- package/skills/repo-bootstrap/assets/scoped/claude-code-skill.md +101 -0
- package/skills/repo-bootstrap/assets/scoped/cli.md +83 -0
- package/skills/repo-bootstrap/assets/scoped/concourse.md +196 -0
- package/skills/repo-bootstrap/assets/scoped/ddev.md +68 -0
- package/skills/repo-bootstrap/assets/scoped/docker.md +160 -0
- package/skills/repo-bootstrap/assets/scoped/documentation.md +98 -0
- package/skills/repo-bootstrap/assets/scoped/examples.md +96 -0
- package/skills/repo-bootstrap/assets/scoped/frontend-typescript.md +88 -0
- package/skills/repo-bootstrap/assets/scoped/github-actions.md +174 -0
- package/skills/repo-bootstrap/assets/scoped/gitlab-ci.md +174 -0
- package/skills/repo-bootstrap/assets/scoped/oro-bundle.md +209 -0
- package/skills/repo-bootstrap/assets/scoped/oro-project.md +170 -0
- package/skills/repo-bootstrap/assets/scoped/python-modern.md +170 -0
- package/skills/repo-bootstrap/assets/scoped/resources.md +96 -0
- package/skills/repo-bootstrap/assets/scoped/skill-repo.md +139 -0
- package/skills/repo-bootstrap/assets/scoped/symfony.md +168 -0
- package/skills/repo-bootstrap/assets/scoped/testing.md +87 -0
- package/skills/repo-bootstrap/assets/scoped/typo3-docs.md +103 -0
- package/skills/repo-bootstrap/assets/scoped/typo3-extension.md +133 -0
- package/skills/repo-bootstrap/assets/scoped/typo3-project.md +137 -0
- package/skills/repo-bootstrap/assets/scoped/typo3-testing.md +80 -0
- package/skills/repo-bootstrap/checkpoints.yaml +279 -0
- package/skills/repo-bootstrap/evals/evals.json +385 -0
- package/skills/repo-bootstrap/references/ai-contribution-guidelines.md +63 -0
- package/skills/repo-bootstrap/references/ai-tool-compatibility.md +223 -0
- package/skills/repo-bootstrap/references/directory-coverage.md +82 -0
- package/skills/repo-bootstrap/references/examples/coding-agent-cli/AGENTS.md +70 -0
- package/skills/repo-bootstrap/references/examples/coding-agent-cli/go.mod +3 -0
- package/skills/repo-bootstrap/references/examples/coding-agent-cli/scripts-AGENTS.md +389 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/.env.example +13 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/AGENTS.md +91 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/package.json +33 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/pnpm-lock.yaml +3 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/src/AGENTS.md +91 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/src/config.ts +28 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/src/controllers/userController.ts +74 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/src/index.ts +26 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/src/middleware/errorHandler.ts +45 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/src/middleware/requestLogger.ts +18 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/src/routes/health.ts +18 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/src/routes/users.ts +13 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/src/utils/errors.ts +40 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/src/utils/logger.ts +14 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/tsconfig.json +24 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/.env.example +19 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/AGENTS.md +92 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/pyproject.toml +88 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/src/AGENTS.md +85 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/src/__init__.py +3 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/src/config.py +49 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/src/main.py +66 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/src/models/__init__.py +13 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/src/models/item.py +43 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/src/models/user.py +40 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/src/routes/__init__.py +5 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/src/routes/health.py +20 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/src/routes/items.py +61 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/src/routes/users.py +55 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/src/services/__init__.py +6 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/src/services/item_service.py +77 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/src/services/user_service.py +69 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/uv.lock +4 -0
- package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/.scopes +3 -0
- package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/AGENTS.md +86 -0
- package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/admin/package.json +20 -0
- package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/admin/src/App.tsx +5 -0
- package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/cmd/api/main.go +7 -0
- package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/go.mod +2 -0
- package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/main.go +7 -0
- package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/.scopes +3 -0
- package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/AGENTS.md +89 -0
- package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/go.mod +2 -0
- package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/AGENTS.md +90 -0
- package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/package.json +17 -0
- package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/src/App.tsx +1 -0
- package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/src/Button.tsx +1 -0
- package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/src/Footer.tsx +1 -0
- package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/src/Header.tsx +1 -0
- package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/src/Sidebar.tsx +1 -0
- package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/main.go +7 -0
- package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/package-lock.json +0 -0
- package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/package.json +12 -0
- package/skills/repo-bootstrap/references/examples/ldap-selfservice/AGENTS.md +70 -0
- package/skills/repo-bootstrap/references/examples/ldap-selfservice/go.mod +3 -0
- package/skills/repo-bootstrap/references/examples/ldap-selfservice/internal-AGENTS.md +371 -0
- package/skills/repo-bootstrap/references/examples/ldap-selfservice/internal-web-AGENTS.md +448 -0
- package/skills/repo-bootstrap/references/examples/php-with-frontend/.scopes +3 -0
- package/skills/repo-bootstrap/references/examples/php-with-frontend/AGENTS.md +91 -0
- package/skills/repo-bootstrap/references/examples/php-with-frontend/composer.json +8 -0
- package/skills/repo-bootstrap/references/examples/php-with-frontend/package.json +15 -0
- package/skills/repo-bootstrap/references/examples/php-with-frontend/pnpm-lock.yaml +0 -0
- package/skills/repo-bootstrap/references/examples/php-with-frontend/src/Controller.php +3 -0
- package/skills/repo-bootstrap/references/examples/php-with-frontend/web/AGENTS.md +92 -0
- package/skills/repo-bootstrap/references/examples/php-with-frontend/web/package.json +26 -0
- package/skills/repo-bootstrap/references/examples/php-with-frontend/web/src/App.tsx +3 -0
- package/skills/repo-bootstrap/references/examples/php-with-frontend/web/src/Button.tsx +10 -0
- package/skills/repo-bootstrap/references/examples/php-with-frontend/web/src/Footer.tsx +9 -0
- package/skills/repo-bootstrap/references/examples/php-with-frontend/web/src/Header.tsx +9 -0
- package/skills/repo-bootstrap/references/examples/php-with-frontend/web/src/main.tsx +3 -0
- package/skills/repo-bootstrap/references/examples/php-with-frontend/web/tsconfig.json +13 -0
- package/skills/repo-bootstrap/references/examples/pnpm-workspace/AGENTS.md +75 -0
- package/skills/repo-bootstrap/references/examples/pnpm-workspace/package.json +7 -0
- package/skills/repo-bootstrap/references/examples/pnpm-workspace/packages/web/package.json +11 -0
- package/skills/repo-bootstrap/references/examples/pnpm-workspace/packages/web/src/index.ts +11 -0
- package/skills/repo-bootstrap/references/examples/pnpm-workspace/pnpm-lock.yaml +42 -0
- package/skills/repo-bootstrap/references/examples/pnpm-workspace/pnpm-workspace.yaml +2 -0
- package/skills/repo-bootstrap/references/examples/simple-ldap-go/AGENTS.md +70 -0
- package/skills/repo-bootstrap/references/examples/simple-ldap-go/examples-AGENTS.md +45 -0
- package/skills/repo-bootstrap/references/examples/simple-ldap-go/go.mod +3 -0
- package/skills/repo-bootstrap/references/examples/t3x-rte-ckeditor-image/AGENTS.md +70 -0
- package/skills/repo-bootstrap/references/examples/t3x-rte-ckeditor-image/Classes-AGENTS.md +392 -0
- package/skills/repo-bootstrap/references/examples/t3x-rte-ckeditor-image/composer.json +8 -0
- package/skills/repo-bootstrap/references/feedback-memory-schema.md +135 -0
- package/skills/repo-bootstrap/references/git-hooks-setup.md +79 -0
- package/skills/repo-bootstrap/references/output-structure.md +124 -0
- package/skills/repo-bootstrap/references/scripts-guide.md +175 -0
- package/skills/repo-bootstrap/references/verification-guide.md +137 -0
- package/skills/repo-bootstrap/scripts/analyze-git-history.sh +315 -0
- package/skills/repo-bootstrap/scripts/check-freshness.sh +230 -0
- package/skills/repo-bootstrap/scripts/detect-golden-samples.sh +161 -0
- package/skills/repo-bootstrap/scripts/detect-heuristics.sh +93 -0
- package/skills/repo-bootstrap/scripts/detect-project.sh +486 -0
- package/skills/repo-bootstrap/scripts/detect-scopes.sh +330 -0
- package/skills/repo-bootstrap/scripts/detect-utilities.sh +133 -0
- package/skills/repo-bootstrap/scripts/extract-adrs.sh +194 -0
- package/skills/repo-bootstrap/scripts/extract-agent-configs.sh +331 -0
- package/skills/repo-bootstrap/scripts/extract-architecture-rules.sh +522 -0
- package/skills/repo-bootstrap/scripts/extract-ci-commands.sh +385 -0
- package/skills/repo-bootstrap/scripts/extract-ci-rules.sh +384 -0
- package/skills/repo-bootstrap/scripts/extract-commands.sh +358 -0
- package/skills/repo-bootstrap/scripts/extract-documentation.sh +308 -0
- package/skills/repo-bootstrap/scripts/extract-github-rulesets.sh +96 -0
- package/skills/repo-bootstrap/scripts/extract-github-settings.sh +88 -0
- package/skills/repo-bootstrap/scripts/extract-ide-settings.sh +228 -0
- package/skills/repo-bootstrap/scripts/extract-platform-files.sh +290 -0
- package/skills/repo-bootstrap/scripts/extract-quality-configs.sh +442 -0
- package/skills/repo-bootstrap/scripts/generate-agents.sh +2424 -0
- package/skills/repo-bootstrap/scripts/generate-file-map.sh +153 -0
- package/skills/repo-bootstrap/scripts/lib/config-root.sh +211 -0
- package/skills/repo-bootstrap/scripts/lib/summary.sh +244 -0
- package/skills/repo-bootstrap/scripts/lib/template.sh +397 -0
- package/skills/repo-bootstrap/scripts/validate-structure.sh +324 -0
- package/skills/repo-bootstrap/scripts/verify-commands.sh +615 -0
- package/skills/repo-bootstrap/scripts/verify-content.sh +302 -0
- package/skills/schema-api-contracts/SKILL.md +56 -0
- package/skills/secret-hygiene/SKILL.md +511 -0
- package/skills/secret-hygiene/assets/.gitkeep +9 -0
- package/skills/secret-hygiene/assets/config-balanced.toml +81 -0
- package/skills/secret-hygiene/assets/config-custom.toml +178 -0
- package/skills/secret-hygiene/assets/config-strict.toml +48 -0
- package/skills/secret-hygiene/assets/github-action.yml +181 -0
- package/skills/secret-hygiene/assets/gitlab-ci.yml +257 -0
- package/skills/secret-hygiene/assets/precommit-config.yaml +70 -0
- package/skills/secret-hygiene/references/EXAMPLE.md +40 -0
- package/skills/secret-hygiene/references/compliance_mapping.md +538 -0
- package/skills/secret-hygiene/references/detection_rules.md +276 -0
- package/skills/secret-hygiene/references/false_positives.md +598 -0
- package/skills/secret-hygiene/references/remediation_guide.md +530 -0
- package/skills/stack-selector/SKILL.md +56 -0
- package/skills/telegram-control/SKILL.md +110 -0
- package/skills/telegram-control/references/architecture.md +184 -0
- package/skills/telegram-control/references/convex.md +173 -0
- package/skills/telegram-control/references/error_handling.md +212 -0
- package/skills/telegram-control/references/initial_setup.md +165 -0
- package/skills/telegram-control/references/telegram_api.md +156 -0
- package/skills/telegram-control/scripts/cancel_message.ts +53 -0
- package/skills/telegram-control/scripts/list_scheduled.ts +103 -0
- package/skills/telegram-control/scripts/logger.ts +121 -0
- package/skills/telegram-control/scripts/proxy-util.ts +11 -0
- package/skills/telegram-control/scripts/schedule_message.ts +216 -0
- package/skills/telegram-control/scripts/send_message.ts +115 -0
- package/skills/telegram-control/scripts/setup.ts +185 -0
- package/skills/telegram-control/scripts/types.ts +75 -0
- package/skills/telegram-control/scripts/view_history.ts +74 -0
- package/skills/test-strategy/SKILL.md +352 -0
- package/skills/threat-model/SKILL.md +303 -0
- package/skills/threat-model/examples/example-output.md +196 -0
- package/skills/threat-model/template.md +96 -0
- package/skills/ts-lint/SKILL.md +80 -0
- package/skills/ui-flow/SKILL.md +668 -0
- package/skills/voice-command-router/SKILL.md +51 -0
- package/skills/widget-live-activity-sync/SKILL.md +66 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# User List
|
|
2
|
+
|
|
3
|
+
> **Route:** `/users`
|
|
4
|
+
> **Module:** User Management
|
|
5
|
+
> **Generated:** 2026-03-17
|
|
6
|
+
|
|
7
|
+
## Overview
|
|
8
|
+
|
|
9
|
+
Displays all system users in a searchable, paginated table. Supports creating, editing, and deleting users. Only ADMIN and MANAGER roles can access this page.
|
|
10
|
+
|
|
11
|
+
## Layout
|
|
12
|
+
|
|
13
|
+
- **Top bar**: Search input + "Create User" button
|
|
14
|
+
- **Main area**: Data table with pagination
|
|
15
|
+
- **Modal**: Create/Edit user form (triggered by buttons)
|
|
16
|
+
|
|
17
|
+
## Fields
|
|
18
|
+
|
|
19
|
+
### Search Filters
|
|
20
|
+
|
|
21
|
+
| Field | Type | Required | Options | Default | Notes |
|
|
22
|
+
|-------|------|----------|---------|---------|-------|
|
|
23
|
+
| Keyword | Text input | No | — | — | Searches name and email |
|
|
24
|
+
| Role | Select dropdown | No | Admin, Manager, User | All | Filters by role |
|
|
25
|
+
| Status | Select dropdown | No | Active, Inactive, Suspended | All | Filters by status |
|
|
26
|
+
|
|
27
|
+
### Data Table
|
|
28
|
+
|
|
29
|
+
| Column | Format | Sortable | Filterable | Notes |
|
|
30
|
+
|--------|--------|----------|-----------|-------|
|
|
31
|
+
| Name | Text | Yes | No | Full name |
|
|
32
|
+
| Email | Text (link) | Yes | No | Clickable → opens detail |
|
|
33
|
+
| Role | Badge | No | Yes | Color-coded by role |
|
|
34
|
+
| Status | Badge | No | Yes | Green=active, Red=suspended |
|
|
35
|
+
| Created | Date (YYYY-MM-DD) | Yes | No | — |
|
|
36
|
+
| Actions | Buttons | No | No | Edit, Delete |
|
|
37
|
+
|
|
38
|
+
### Actions
|
|
39
|
+
|
|
40
|
+
| Button | Visibility | Behavior |
|
|
41
|
+
|--------|-----------|----------|
|
|
42
|
+
| Create User | ADMIN, MANAGER | Opens create modal |
|
|
43
|
+
| Edit | ADMIN, MANAGER | Opens edit modal with prefilled data |
|
|
44
|
+
| Delete | ADMIN only | Confirmation dialog → soft delete |
|
|
45
|
+
|
|
46
|
+
## Interactions
|
|
47
|
+
|
|
48
|
+
### Page Load
|
|
49
|
+
- Fetches first page of users via `GET /api/users?page=1&size=20`
|
|
50
|
+
- Default sort: `created_at` descending
|
|
51
|
+
|
|
52
|
+
### Search
|
|
53
|
+
- **Trigger:** User types in search field (300ms debounce)
|
|
54
|
+
- **Behavior:** Re-fetches users with `keyword` param, resets to page 1
|
|
55
|
+
- **Special rules:** Minimum 2 characters to trigger search
|
|
56
|
+
|
|
57
|
+
### Create User
|
|
58
|
+
- **Trigger:** Click "Create User" button
|
|
59
|
+
- **Modal content:** Name (required, max 50), Email (required, email format), Role (required, select), Status (default: Active)
|
|
60
|
+
- **Validation:** Name required + max length, Email required + format check
|
|
61
|
+
- **API:** `POST /api/users` with form data
|
|
62
|
+
- **On success:** Toast "User created", close modal, refresh list
|
|
63
|
+
- **On failure:** Show API error below form
|
|
64
|
+
|
|
65
|
+
### Delete User
|
|
66
|
+
- **Trigger:** Click "Delete" button on row
|
|
67
|
+
- **Behavior:** Confirmation dialog "Are you sure you want to delete {name}?"
|
|
68
|
+
- **API:** `DELETE /api/users/:id`
|
|
69
|
+
- **On success:** Toast "User deleted", refresh list
|
|
70
|
+
|
|
71
|
+
## API Dependencies
|
|
72
|
+
|
|
73
|
+
| API | Method | Path | Trigger | Notes |
|
|
74
|
+
|-----|--------|------|---------|-------|
|
|
75
|
+
| List users | GET | /api/users | Load, search, paginate | Params: page, size, keyword, role, status |
|
|
76
|
+
| Create user | POST | /api/users | Submit create form | Body: name, email, role |
|
|
77
|
+
| Delete user | DELETE | /api/users/:id | Confirm delete | — |
|
|
78
|
+
|
|
79
|
+
## Page Relationships
|
|
80
|
+
|
|
81
|
+
- **From:** Dashboard (click "View Users" link)
|
|
82
|
+
- **To:** User Detail (click email or row)
|
|
83
|
+
- **Data coupling:** Creating/deleting a user triggers dashboard stats refresh
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# My App — Product Requirements Document
|
|
2
|
+
|
|
3
|
+
## System Overview
|
|
4
|
+
|
|
5
|
+
My App is a user management platform for internal teams. It provides CRUD operations for users, a dashboard with key metrics, and system settings. Built with Next.js 14 (App Router) and Tailwind CSS.
|
|
6
|
+
|
|
7
|
+
## Module Overview
|
|
8
|
+
|
|
9
|
+
| Module | Pages | Core Functionality |
|
|
10
|
+
|--------|-------|--------------------|
|
|
11
|
+
| Dashboard | Dashboard | Key metrics, activity feed |
|
|
12
|
+
| User Management | User list, User detail | CRUD users, role assignment |
|
|
13
|
+
| Settings | Settings | System configuration |
|
|
14
|
+
|
|
15
|
+
## Page Inventory
|
|
16
|
+
|
|
17
|
+
| # | Page Name | Route | Module | Doc Link |
|
|
18
|
+
|---|-----------|-------|--------|----------|
|
|
19
|
+
| 1 | Home | / | — | [→](./pages/01-home.md) |
|
|
20
|
+
| 2 | Dashboard | /dashboard | Dashboard | [→](./pages/02-dashboard.md) |
|
|
21
|
+
| 3 | User List | /users | User Mgmt | [→](./pages/03-user-list.md) |
|
|
22
|
+
| 4 | User Detail | /users/:id | User Mgmt | [→](./pages/04-user-detail.md) |
|
|
23
|
+
| 5 | Settings | /settings | Settings | [→](./pages/05-settings.md) |
|
|
24
|
+
|
|
25
|
+
## API Inventory
|
|
26
|
+
|
|
27
|
+
| # | Method | Path | Status | Notes |
|
|
28
|
+
|---|--------|------|--------|-------|
|
|
29
|
+
| 1 | GET | /api/users | Integrated | Paginated list |
|
|
30
|
+
| 2 | POST | /api/users | Integrated | Create user |
|
|
31
|
+
| 3 | GET | /api/users/:id | Integrated | User detail |
|
|
32
|
+
| 4 | PUT | /api/users/:id | Integrated | Update user |
|
|
33
|
+
| 5 | GET | /api/dashboard/stats | Mock | Dashboard metrics |
|
|
34
|
+
|
|
35
|
+
## Global Notes
|
|
36
|
+
|
|
37
|
+
### Permission Model
|
|
38
|
+
Role-based access: ADMIN (full access), MANAGER (read + edit), USER (read-only).
|
|
39
|
+
|
|
40
|
+
### Common Interaction Patterns
|
|
41
|
+
- All delete operations require confirmation modal
|
|
42
|
+
- Lists default to `created_at` descending, 20 items per page
|
|
43
|
+
- Form validation shows inline errors below each field
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
# Framework-Specific Patterns
|
|
2
|
+
|
|
3
|
+
Quick reference for identifying routes, components, state, and APIs across frontend and backend frameworks.
|
|
4
|
+
|
|
5
|
+
## React (CRA / Vite)
|
|
6
|
+
|
|
7
|
+
| Aspect | Where to Look |
|
|
8
|
+
|--------|--------------|
|
|
9
|
+
| Routes | `react-router-dom` — `<Route path="...">` or `createBrowserRouter` |
|
|
10
|
+
| Components | `.tsx` / `.jsx` files, default exports |
|
|
11
|
+
| State | Redux (`store/`), Zustand, Jotai, Recoil, React Context |
|
|
12
|
+
| API | `axios`, `fetch`, TanStack Query (`useQuery`), SWR (`useSWR`) |
|
|
13
|
+
| Forms | React Hook Form, Formik, Ant Design Form, custom `useState` |
|
|
14
|
+
| i18n | `react-i18next`, `react-intl` |
|
|
15
|
+
|
|
16
|
+
## Next.js (App Router)
|
|
17
|
+
|
|
18
|
+
| Aspect | Where to Look |
|
|
19
|
+
|--------|--------------|
|
|
20
|
+
| Routes | `app/` directory — `page.tsx` = route, folders = segments |
|
|
21
|
+
| Layouts | `layout.tsx` per directory |
|
|
22
|
+
| Loading | `loading.tsx`, `error.tsx`, `not-found.tsx` |
|
|
23
|
+
| API routes | `app/api/` or `pages/api/` (Pages Router) |
|
|
24
|
+
| Server actions | `"use server"` directive |
|
|
25
|
+
| Middleware | `middleware.ts` at root |
|
|
26
|
+
|
|
27
|
+
## Next.js (Pages Router)
|
|
28
|
+
|
|
29
|
+
| Aspect | Where to Look |
|
|
30
|
+
|--------|--------------|
|
|
31
|
+
| Routes | `pages/` directory — filename = route |
|
|
32
|
+
| Data fetching | `getServerSideProps`, `getStaticProps`, `getStaticPaths` |
|
|
33
|
+
| API routes | `pages/api/` |
|
|
34
|
+
|
|
35
|
+
## Vue 3
|
|
36
|
+
|
|
37
|
+
| Aspect | Where to Look |
|
|
38
|
+
|--------|--------------|
|
|
39
|
+
| Routes | `vue-router` — `routes` array in `router/index.ts` |
|
|
40
|
+
| Components | `.vue` SFCs (`<template>`, `<script setup>`, `<style>`) |
|
|
41
|
+
| State | Pinia (`stores/`), Vuex (`store/`) |
|
|
42
|
+
| API | `axios`, `fetch`, VueQuery |
|
|
43
|
+
| Forms | VeeValidate, FormKit, custom `ref()` / `reactive()` |
|
|
44
|
+
| i18n | `vue-i18n` |
|
|
45
|
+
|
|
46
|
+
## Nuxt 3
|
|
47
|
+
|
|
48
|
+
| Aspect | Where to Look |
|
|
49
|
+
|--------|--------------|
|
|
50
|
+
| Routes | `pages/` directory (file-system routing) |
|
|
51
|
+
| Layouts | `layouts/` |
|
|
52
|
+
| API routes | `server/api/` |
|
|
53
|
+
| Data fetching | `useFetch`, `useAsyncData`, `$fetch` |
|
|
54
|
+
| State | `useState`, Pinia |
|
|
55
|
+
| Middleware | `middleware/` |
|
|
56
|
+
|
|
57
|
+
## Angular
|
|
58
|
+
|
|
59
|
+
| Aspect | Where to Look |
|
|
60
|
+
|--------|--------------|
|
|
61
|
+
| Routes | `app-routing.module.ts` or `Routes` array |
|
|
62
|
+
| Components | `@Component` decorator, `*.component.ts` |
|
|
63
|
+
| State | NgRx (`store/`), services with `BehaviorSubject` |
|
|
64
|
+
| API | `HttpClient` in services |
|
|
65
|
+
| Forms | Reactive Forms (`FormGroup`), Template-driven forms |
|
|
66
|
+
| i18n | `@angular/localize`, `ngx-translate` |
|
|
67
|
+
| Guards | `CanActivate`, `CanDeactivate` |
|
|
68
|
+
|
|
69
|
+
## Svelte / SvelteKit
|
|
70
|
+
|
|
71
|
+
| Aspect | Where to Look |
|
|
72
|
+
|--------|--------------|
|
|
73
|
+
| Routes | `src/routes/` (file-system routing with `+page.svelte`) |
|
|
74
|
+
| Layouts | `+layout.svelte` |
|
|
75
|
+
| Data loading | `+page.ts` / `+page.server.ts` (`load` function) |
|
|
76
|
+
| API routes | `+server.ts` |
|
|
77
|
+
| State | Svelte stores (`writable`, `readable`, `derived`) |
|
|
78
|
+
|
|
79
|
+
## NestJS
|
|
80
|
+
|
|
81
|
+
| Aspect | Where to Look |
|
|
82
|
+
|--------|--------------|
|
|
83
|
+
| Routes | `@Controller('prefix')` + `@Get()/@Post()/@Put()/@Delete()` decorators |
|
|
84
|
+
| Modules | `*.module.ts` — `@Module({ controllers, providers, imports })` |
|
|
85
|
+
| Services | `*.service.ts` — injected via constructor, contains business logic |
|
|
86
|
+
| DTOs | `*.dto.ts` — `class-validator` decorators define validation rules |
|
|
87
|
+
| Entities | `*.entity.ts` — TypeORM `@Entity()` / Prisma schemas |
|
|
88
|
+
| Auth | `@UseGuards(AuthGuard)`, `@Roles('admin')`, Passport strategies |
|
|
89
|
+
| Middleware | `*.middleware.ts`, registered in module `configure()` |
|
|
90
|
+
| Pipes | `ValidationPipe`, `ParseIntPipe` — input transformation |
|
|
91
|
+
| Config | `ConfigModule`, `.env` files, `config/` directory |
|
|
92
|
+
|
|
93
|
+
## Express / Fastify
|
|
94
|
+
|
|
95
|
+
| Aspect | Where to Look |
|
|
96
|
+
|--------|--------------|
|
|
97
|
+
| Routes | `router.get('/path', handler)`, `app.post('/path', ...)` |
|
|
98
|
+
| Middleware | `app.use(...)`, `router.use(...)` |
|
|
99
|
+
| Controllers | Route handler files in `routes/`, `controllers/` |
|
|
100
|
+
| Models | Mongoose schemas (`*.model.ts`), Sequelize models, Prisma |
|
|
101
|
+
| Auth | `passport`, `jsonwebtoken`, middleware auth checks |
|
|
102
|
+
| Validation | `express-validator`, `joi`, `zod`, custom middleware |
|
|
103
|
+
|
|
104
|
+
## Django
|
|
105
|
+
|
|
106
|
+
| Aspect | Where to Look |
|
|
107
|
+
|--------|--------------|
|
|
108
|
+
| Routes | `urls.py` — `urlpatterns = [path('...', view)]` |
|
|
109
|
+
| Views | `views.py` — function-based or class-based views (`APIView`, `ViewSet`) |
|
|
110
|
+
| Models | `models.py` — `class MyModel(models.Model)` with field definitions |
|
|
111
|
+
| Forms | `forms.py` — `ModelForm`, `Form` with validation |
|
|
112
|
+
| Serializers | `serializers.py` (DRF) — `ModelSerializer`, field-level validation |
|
|
113
|
+
| Admin | `admin.py` — `@admin.register`, `list_display`, `search_fields`, `list_filter` |
|
|
114
|
+
| Templates | `templates/` — Jinja2/Django template HTML files |
|
|
115
|
+
| Middleware | `MIDDLEWARE` in `settings.py` |
|
|
116
|
+
| Auth | `django.contrib.auth`, `rest_framework.permissions`, `@login_required` |
|
|
117
|
+
| Signals | `signals.py` — `post_save`, `pre_delete` hooks (hidden business logic) |
|
|
118
|
+
| Management commands | `management/commands/` — CLI operations |
|
|
119
|
+
| Celery tasks | `tasks.py` — async/background operations |
|
|
120
|
+
|
|
121
|
+
## Django REST Framework (DRF)
|
|
122
|
+
|
|
123
|
+
| Aspect | Where to Look |
|
|
124
|
+
|--------|--------------|
|
|
125
|
+
| Endpoints | `router.register('prefix', ViewSet)` in `urls.py` |
|
|
126
|
+
| ViewSets | `viewsets.py` — `ModelViewSet` (full CRUD), `ReadOnlyModelViewSet` |
|
|
127
|
+
| Serializers | `serializers.py` — field types, validators, nested relations |
|
|
128
|
+
| Permissions | `permission_classes = [IsAuthenticated, IsAdminUser]` |
|
|
129
|
+
| Filtering | `django-filter`, `search_fields`, `ordering_fields` |
|
|
130
|
+
| Pagination | `DEFAULT_PAGINATION_CLASS` in settings, per-view override |
|
|
131
|
+
| Throttling | `DEFAULT_THROTTLE_CLASSES`, per-view `throttle_classes` |
|
|
132
|
+
|
|
133
|
+
## FastAPI
|
|
134
|
+
|
|
135
|
+
| Aspect | Where to Look |
|
|
136
|
+
|--------|--------------|
|
|
137
|
+
| Routes | `@app.get('/path')`, `@router.post('/path')` decorators |
|
|
138
|
+
| Models | Pydantic `BaseModel` classes — request/response schemas |
|
|
139
|
+
| Dependencies | `Depends(...)` — auth, DB sessions, shared logic |
|
|
140
|
+
| DB | SQLAlchemy models, Tortoise ORM, or raw SQL |
|
|
141
|
+
| Auth | `OAuth2PasswordBearer`, JWT middleware, `Depends(get_current_user)` |
|
|
142
|
+
| Background | `BackgroundTasks`, Celery integration |
|
|
143
|
+
|
|
144
|
+
## Common Patterns Across Frameworks
|
|
145
|
+
|
|
146
|
+
### Mock Detection
|
|
147
|
+
```
|
|
148
|
+
# Likely mock
|
|
149
|
+
setTimeout(() => resolve(data), 500)
|
|
150
|
+
Promise.resolve(mockData)
|
|
151
|
+
import { data } from './fixtures'
|
|
152
|
+
faker.name.firstName()
|
|
153
|
+
|
|
154
|
+
# Likely real
|
|
155
|
+
axios.get('/api/users')
|
|
156
|
+
fetch('/api/data')
|
|
157
|
+
httpClient.post(url, body)
|
|
158
|
+
useSWR('/api/resource')
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### Permission Patterns
|
|
162
|
+
```
|
|
163
|
+
# React
|
|
164
|
+
{hasPermission('admin') && <Button>Delete</Button>}
|
|
165
|
+
<ProtectedRoute roles={['admin', 'manager']}>
|
|
166
|
+
|
|
167
|
+
# Vue
|
|
168
|
+
v-if="user.role === 'admin'"
|
|
169
|
+
v-permission="'user:delete'"
|
|
170
|
+
|
|
171
|
+
# Angular
|
|
172
|
+
*ngIf="authService.hasRole('admin')"
|
|
173
|
+
canActivate: [AuthGuard]
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### Form Validation
|
|
177
|
+
```
|
|
178
|
+
# React Hook Form
|
|
179
|
+
{ required: 'Name is required', maxLength: { value: 50, message: 'Too long' } }
|
|
180
|
+
|
|
181
|
+
# VeeValidate (Vue)
|
|
182
|
+
rules="required|email|max:100"
|
|
183
|
+
|
|
184
|
+
# Angular Reactive Forms
|
|
185
|
+
Validators.required, Validators.minLength(3), Validators.pattern(...)
|
|
186
|
+
|
|
187
|
+
# NestJS (class-validator)
|
|
188
|
+
@IsString() @IsNotEmpty() @MaxLength(50) name: string;
|
|
189
|
+
@IsEmail() email: string;
|
|
190
|
+
@IsEnum(UserRole) role: UserRole;
|
|
191
|
+
|
|
192
|
+
# Django Forms
|
|
193
|
+
name = forms.CharField(max_length=50, required=True)
|
|
194
|
+
email = forms.EmailField()
|
|
195
|
+
|
|
196
|
+
# DRF Serializers
|
|
197
|
+
name = serializers.CharField(max_length=50)
|
|
198
|
+
email = serializers.EmailField(required=True)
|
|
199
|
+
|
|
200
|
+
# FastAPI (Pydantic)
|
|
201
|
+
name: str = Field(max_length=50)
|
|
202
|
+
email: EmailStr
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
### Database Model Patterns
|
|
206
|
+
```
|
|
207
|
+
# Django
|
|
208
|
+
class Order(models.Model):
|
|
209
|
+
status = models.CharField(max_length=20, choices=STATUS_CHOICES)
|
|
210
|
+
user = models.ForeignKey(User, on_delete=models.CASCADE)
|
|
211
|
+
total = models.DecimalField(max_digits=10, decimal_places=2)
|
|
212
|
+
|
|
213
|
+
# TypeORM (NestJS)
|
|
214
|
+
@Entity()
|
|
215
|
+
export class Order {
|
|
216
|
+
@Column({ type: 'enum', enum: OrderStatus })
|
|
217
|
+
status: OrderStatus;
|
|
218
|
+
@ManyToOne(() => User)
|
|
219
|
+
user: User;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
# Prisma
|
|
223
|
+
model Order {
|
|
224
|
+
status OrderStatus
|
|
225
|
+
user User @relation(fields: [userId], references: [id])
|
|
226
|
+
total Decimal
|
|
227
|
+
}
|
|
228
|
+
```
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# PRD Quality Checklist
|
|
2
|
+
|
|
3
|
+
Use this checklist to validate generated PRDs before delivery.
|
|
4
|
+
|
|
5
|
+
## Completeness
|
|
6
|
+
|
|
7
|
+
- [ ] Every route/page has a corresponding document
|
|
8
|
+
- [ ] All form fields listed with type, required, validation, default
|
|
9
|
+
- [ ] All table columns listed with format, sortable, filterable
|
|
10
|
+
- [ ] All action buttons documented with visibility conditions
|
|
11
|
+
- [ ] All API endpoints listed with method, path, trigger, params
|
|
12
|
+
- [ ] Mock vs integrated APIs clearly distinguished
|
|
13
|
+
- [ ] All enums exhaustively listed with every value
|
|
14
|
+
- [ ] Page load behavior documented for every page
|
|
15
|
+
- [ ] Page relationships mapped (inbound, outbound, data coupling)
|
|
16
|
+
|
|
17
|
+
## Accuracy
|
|
18
|
+
|
|
19
|
+
- [ ] Route paths match actual code
|
|
20
|
+
- [ ] Field names match UI labels (not variable names)
|
|
21
|
+
- [ ] Validation rules match actual code logic
|
|
22
|
+
- [ ] Permission conditions match auth guard implementations
|
|
23
|
+
- [ ] API paths match actual service layer calls
|
|
24
|
+
- [ ] Enum values match source constants (no fabrication)
|
|
25
|
+
- [ ] Uncertain items marked `[TBC]` with explanation
|
|
26
|
+
|
|
27
|
+
## Readability
|
|
28
|
+
|
|
29
|
+
- [ ] Business language used (not implementation details)
|
|
30
|
+
- [ ] Each page doc is self-contained
|
|
31
|
+
- [ ] No component names used as page names
|
|
32
|
+
- [ ] Interactions described as user action → system response
|
|
33
|
+
- [ ] Modals/drawers documented within their parent page
|
|
34
|
+
- [ ] README system overview written for non-technical reader
|
|
35
|
+
|
|
36
|
+
## Structure
|
|
37
|
+
|
|
38
|
+
- [ ] `prd/README.md` exists with system overview + page inventory
|
|
39
|
+
- [ ] `prd/pages/` contains numbered page files
|
|
40
|
+
- [ ] `prd/appendix/enum-dictionary.md` exists
|
|
41
|
+
- [ ] `prd/appendix/api-inventory.md` exists
|
|
42
|
+
- [ ] `prd/appendix/page-relationships.md` exists
|
|
43
|
+
- [ ] Cross-references use relative links
|
|
44
|
+
|
|
45
|
+
## Backend-Specific Checks
|
|
46
|
+
|
|
47
|
+
- [ ] All controller/view endpoints documented with method, path, auth
|
|
48
|
+
- [ ] DTO/serializer fields listed with type, required, validation
|
|
49
|
+
- [ ] Database model relationships mapped (FK, M2M, O2O)
|
|
50
|
+
- [ ] Django admin customizations documented (list_display, actions, inlines)
|
|
51
|
+
- [ ] Background tasks/Celery jobs documented with trigger and schedule
|
|
52
|
+
- [ ] Middleware pipeline documented (auth, logging, rate limiting)
|
|
53
|
+
- [ ] Environment-dependent behavior noted (dev vs prod differences)
|
|
54
|
+
- [ ] Database migrations reviewed for field constraints and defaults
|
|
55
|
+
|
|
56
|
+
## Common Issues to Watch
|
|
57
|
+
|
|
58
|
+
| Issue | How to Detect | Fix |
|
|
59
|
+
|-------|--------------|-----|
|
|
60
|
+
| Missing modal content | Search for `Modal`, `Dialog`, `Drawer` components | Add as subsection in parent page |
|
|
61
|
+
| Undocumented field linking | Search for conditional renders based on field values | Add to interaction logic |
|
|
62
|
+
| Hidden permissions | Search for `v-if`, `v-show`, role checks, auth guards | Add visibility conditions |
|
|
63
|
+
| Stale mock data | Compare mock shapes with API types/interfaces | Flag as `[Mock - verify with backend]` |
|
|
64
|
+
| Missing error states | Search for error boundaries, catch blocks, toast errors | Add failure paths to interactions |
|
|
65
|
+
| Unlinked pages | Cross-reference route params with navigation calls | Complete page relationships |
|