@event4u/agent-config 14.23.0 → 15.0.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/.augment-plugin/marketplace.json +3 -3
- package/.augment-plugin/plugin.json +1 -1
- package/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +198 -0
- package/README.md +1 -1
- package/dist/agent-src/commands/agent-handoff.md +8 -7
- package/dist/agent-src/commands/agents/init.md +1 -1
- package/dist/agent-src/commands/agents/user/accept.md +4 -4
- package/dist/agent-src/commands/agents/user/delete.md +2 -2
- package/dist/agent-src/commands/agents/user/init.md +3 -3
- package/dist/agent-src/commands/agents/user/review.md +3 -3
- package/dist/agent-src/commands/agents/user/show.md +3 -3
- package/dist/agent-src/commands/agents/user/update.md +2 -2
- package/dist/agent-src/commands/agents/user.md +6 -6
- package/dist/agent-src/commands/analytics/prune.md +1 -1
- package/dist/agent-src/commands/analytics/show.md +2 -2
- package/dist/agent-src/commands/analyze/decision.md +2 -2
- package/dist/agent-src/commands/analyze/inbox.md +5 -5
- package/dist/agent-src/commands/analyze/incident.md +3 -3
- package/dist/agent-src/commands/analyze/near-miss.md +3 -3
- package/dist/agent-src/commands/analyze/postmortem.md +4 -4
- package/dist/agent-src/commands/analyze/premortem.md +2 -2
- package/dist/agent-src/commands/analyze.md +2 -2
- package/dist/agent-src/commands/bug/fix.md +1 -1
- package/dist/agent-src/commands/bug/investigate.md +2 -2
- package/dist/agent-src/commands/cost/profile.md +3 -3
- package/dist/agent-src/commands/design.md +1 -1
- package/dist/agent-src/commands/feature/explore.md +1 -1
- package/dist/agent-src/commands/feature/plan.md +2 -2
- package/dist/agent-src/commands/feature/roadmap.md +2 -2
- package/dist/agent-src/commands/ghostwriter/fetch.md +4 -4
- package/dist/agent-src/commands/ghostwriter/list.md +1 -1
- package/dist/agent-src/commands/ghostwriter/show.md +1 -1
- package/dist/agent-src/commands/ghostwriter/write.md +9 -9
- package/dist/agent-src/commands/humanize.md +6 -6
- package/dist/agent-src/commands/jira-ticket.md +1 -1
- package/dist/agent-src/commands/judge/solo.md +1 -1
- package/dist/agent-src/commands/judge.md +1 -1
- package/dist/agent-src/commands/knowledge/cross-repo.md +1 -1
- package/dist/agent-src/commands/knowledge/forget.md +1 -1
- package/dist/agent-src/commands/knowledge/ingest.md +2 -2
- package/dist/agent-src/commands/knowledge/list.md +1 -1
- package/dist/agent-src/commands/memory/add.md +3 -3
- package/dist/agent-src/commands/memory/load.md +4 -4
- package/dist/agent-src/commands/memory/mine-session.md +1 -1
- package/dist/agent-src/commands/memory/promote.md +4 -4
- package/dist/agent-src/commands/memory/propose.md +2 -2
- package/dist/agent-src/commands/mode.md +5 -5
- package/dist/agent-src/commands/post-as/ghostwriter.md +3 -3
- package/dist/agent-src/commands/post-as/me.md +7 -7
- package/dist/agent-src/commands/pr/create.md +1 -1
- package/dist/agent-src/commands/pr/merge.md +1 -1
- package/dist/agent-src/commands/profile/activate.md +1 -1
- package/dist/agent-src/commands/profile/show.md +1 -1
- package/dist/agent-src/commands/research/deep.md +2 -2
- package/dist/agent-src/commands/research/report.md +2 -2
- package/dist/agent-src/commands/review/changes.md +1 -1
- package/dist/agent-src/commands/review/routing.md +1 -1
- package/dist/agent-src/commands/roadmap/create.md +1 -1
- package/dist/agent-src/commands/roadmap/materialize.md +2 -2
- package/dist/agent-src/commands/roadmap/next.md +1 -1
- package/dist/agent-src/commands/roadmap/process-full.md +2 -2
- package/dist/agent-src/commands/security-audit-config.md +3 -3
- package/dist/agent-src/commands/skill/preview.md +1 -1
- package/dist/agent-src/commands/skills/discover.md +1 -1
- package/dist/agent-src/commands/sync/agent-settings.md +2 -2
- package/dist/agent-src/commands/sync/gitignore/fix.md +1 -1
- package/dist/agent-src/commands/tests/create.md +1 -1
- package/dist/agent-src/commands/tests/e2e-heal.md +1 -1
- package/dist/agent-src/commands/tests/e2e-plan.md +1 -1
- package/dist/agent-src/contexts/authority/kernel-rule-edits.md +6 -6
- package/dist/agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +1 -2
- package/dist/agent-src/contexts/communication/rules-auto/think-before-action-mechanics.md +2 -2
- package/dist/agent-src/contexts/communication/rules-auto/token-efficiency-mechanics.md +88 -1
- package/dist/agent-src/contexts/communication/rules-auto/user-interaction-mechanics.md +1 -1
- package/dist/agent-src/contexts/contracts/frugality-charter.md +1 -1
- package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +1 -1
- package/dist/agent-src/contexts/execution/auto-orchestration-activation.md +1 -1
- package/dist/agent-src/contexts/execution/autonomy-mechanics.md +1 -1
- package/dist/agent-src/contexts/execution/cheap-question-mechanics.md +1 -1
- package/dist/agent-src/contexts/execution/contract-decision-sheet.md +3 -3
- package/dist/agent-src/contexts/execution/mandated-lines.md +1 -1
- package/dist/agent-src/contexts/execution/non-interactive-contract.md +1 -1
- package/dist/agent-src/contexts/execution/orchestration-telemetry.md +1 -1
- package/dist/agent-src/contexts/execution/plan-confidence-gate.md +5 -5
- package/dist/agent-src/contexts/execution/roadmap-execution-contract.md +1 -1
- package/dist/agent-src/contexts/execution/subagent-modes-detail.md +1 -1
- package/dist/agent-src/contexts/execution/subagent-routing.md +2 -2
- package/dist/agent-src/contexts/execution/subagent-spawn-contract.md +1 -1
- package/dist/agent-src/contexts/execution/user-memory-channels.md +3 -3
- package/dist/agent-src/contexts/execution/verification-mechanics.md +1 -1
- package/dist/agent-src/contexts/judges/persona-voice-rubric.md +2 -2
- package/dist/agent-src/guidelines/abstraction-thresholds.md +88 -0
- package/dist/agent-src/guidelines/agent-infra/5w2h-analysis.md +260 -0
- package/dist/agent-src/guidelines/agent-infra/active-remediation-mechanics.md +99 -0
- package/dist/agent-src/guidelines/agent-infra/agent-interaction-and-decision-quality.md +325 -0
- package/dist/agent-src/guidelines/agent-infra/api-cost-levers.md +177 -0
- package/dist/agent-src/guidelines/agent-infra/artifact-drafting-protocol-mechanics.md +222 -0
- package/dist/agent-src/guidelines/agent-infra/ask-when-uncertain-demos.md +134 -0
- package/dist/agent-src/guidelines/agent-infra/asking-and-brevity-examples.md +198 -0
- package/dist/agent-src/guidelines/agent-infra/break-glass-usage.md +113 -0
- package/dist/agent-src/guidelines/agent-infra/carve-out-predicates.md +17 -0
- package/dist/agent-src/guidelines/agent-infra/comparison-matrix.md +179 -0
- package/dist/agent-src/guidelines/agent-infra/context-hygiene-mechanics.md +165 -0
- package/dist/agent-src/guidelines/agent-infra/corpus-grounding-authoring.md +91 -0
- package/dist/agent-src/guidelines/agent-infra/critical-thinking.md +156 -0
- package/dist/agent-src/guidelines/agent-infra/cross-source-consistency-mechanics.md +109 -0
- package/dist/agent-src/guidelines/agent-infra/developer-judgment.md +82 -0
- package/dist/agent-src/guidelines/agent-infra/direct-answers-demos.md +142 -0
- package/dist/agent-src/guidelines/agent-infra/domain-adoption-gates.md +112 -0
- package/dist/agent-src/guidelines/agent-infra/domain-eval-anti-pattern.md +53 -0
- package/dist/agent-src/guidelines/agent-infra/domain-pack-architecture.md +56 -0
- package/dist/agent-src/guidelines/agent-infra/downstream-changes-mechanics.md +91 -0
- package/dist/agent-src/guidelines/agent-infra/emphasis-budget.md +45 -0
- package/dist/agent-src/guidelines/agent-infra/engineering-memory-data-format.md +210 -0
- package/dist/agent-src/guidelines/agent-infra/evaluator-independence-mechanics.md +92 -0
- package/dist/agent-src/guidelines/agent-infra/existence-question-verdicts.md +80 -0
- package/dist/agent-src/guidelines/agent-infra/failure-signatures.md +70 -0
- package/dist/agent-src/guidelines/agent-infra/false-green.md +233 -0
- package/dist/agent-src/guidelines/agent-infra/first-principles.md +192 -0
- package/dist/agent-src/guidelines/agent-infra/framework-neutrality-patterns.md +66 -0
- package/dist/agent-src/guidelines/agent-infra/frontier-reasoning-operating-profile.md +169 -0
- package/dist/agent-src/guidelines/agent-infra/gate-authoring.md +177 -0
- package/dist/agent-src/guidelines/agent-infra/guarded-baseline.md +39 -0
- package/dist/agent-src/guidelines/agent-infra/installed-tools-manifest.md +142 -0
- package/dist/agent-src/guidelines/agent-infra/inversion-thinking.md +388 -0
- package/dist/agent-src/guidelines/agent-infra/ios-simulator-guide.md +378 -0
- package/dist/agent-src/guidelines/agent-infra/language-and-tone-examples.md +141 -0
- package/dist/agent-src/guidelines/agent-infra/layered-settings.md +317 -0
- package/dist/agent-src/guidelines/agent-infra/linked-projects-onboarding-gate.md +80 -0
- package/dist/agent-src/guidelines/agent-infra/mcp-request-signing.md +197 -0
- package/dist/agent-src/guidelines/agent-infra/memory-access.md +149 -0
- package/dist/agent-src/guidelines/agent-infra/mental-models.md +314 -0
- package/dist/agent-src/guidelines/agent-infra/minimal-safe-diff-mechanics.md +241 -0
- package/dist/agent-src/guidelines/agent-infra/missing-tool-handling.md +66 -0
- package/dist/agent-src/guidelines/agent-infra/model-recommendation.md +101 -0
- package/dist/agent-src/guidelines/agent-infra/naming.md +69 -0
- package/dist/agent-src/guidelines/agent-infra/notes-horizon-mechanics.md +90 -0
- package/dist/agent-src/guidelines/agent-infra/output-patterns.md +117 -0
- package/dist/agent-src/guidelines/agent-infra/recurring-criticism-mechanics.md +96 -0
- package/dist/agent-src/guidelines/agent-infra/reuse-verdict-mechanics.md +71 -0
- package/dist/agent-src/guidelines/agent-infra/review-routing-data-format.md +143 -0
- package/dist/agent-src/guidelines/agent-infra/roadmap-deferred-resolution-provenance.md +54 -0
- package/dist/agent-src/guidelines/agent-infra/roadmap-progress-mechanics.md +274 -0
- package/dist/agent-src/guidelines/agent-infra/role-contracts.md +209 -0
- package/dist/agent-src/guidelines/agent-infra/role-mode-router.md +89 -0
- package/dist/agent-src/guidelines/agent-infra/rule-body-migration-inventory.md +241 -0
- package/dist/agent-src/guidelines/agent-infra/rule-type-governance.md +73 -0
- package/dist/agent-src/guidelines/agent-infra/runtime-layer.md +89 -0
- package/dist/agent-src/guidelines/agent-infra/scqa-framework.md +526 -0
- package/dist/agent-src/guidelines/agent-infra/security-lint-containment.md +121 -0
- package/dist/agent-src/guidelines/agent-infra/self-improvement-pipeline.md +134 -0
- package/dist/agent-src/guidelines/agent-infra/simplicity-and-goal-demos.md +211 -0
- package/dist/agent-src/guidelines/agent-infra/six-hats.md +353 -0
- package/dist/agent-src/guidelines/agent-infra/size-and-scope.md +229 -0
- package/dist/agent-src/guidelines/agent-infra/skill-quality-checklist.md +157 -0
- package/dist/agent-src/guidelines/agent-infra/source-confidentiality-mechanics.md +109 -0
- package/dist/agent-src/guidelines/agent-infra/symptom-driven-harvest-loop.md +104 -0
- package/dist/agent-src/guidelines/agent-infra/systems-thinking.md +220 -0
- package/dist/agent-src/guidelines/agent-infra/tool-description-as-policy.md +35 -0
- package/dist/agent-src/guidelines/agent-infra/tool-integration.md +73 -0
- package/dist/agent-src/guidelines/agent-infra/traceability-field-mechanics.md +50 -0
- package/dist/agent-src/guidelines/agent-infra/untrusted-input-spotlighting.md +166 -0
- package/dist/agent-src/guidelines/agent-infra/verify-before-complete-demos.md +128 -0
- package/dist/agent-src/guidelines/augment-portability-patterns.md +70 -0
- package/dist/agent-src/guidelines/code-clarity.md +350 -0
- package/dist/agent-src/guidelines/component-oriented-and-oop-development.md +189 -0
- package/dist/agent-src/guidelines/cross-role-handoff.md +127 -0
- package/dist/agent-src/guidelines/design-antipatterns-triggers.json +18 -0
- package/dist/agent-src/guidelines/design-antipatterns.md +327 -0
- package/dist/agent-src/guidelines/design-asset-discipline.md +38 -0
- package/dist/agent-src/guidelines/design-canon.md +63 -0
- package/dist/agent-src/guidelines/design-fidelity-mechanics.md +293 -0
- package/dist/agent-src/guidelines/design-fidelity-routing.md +78 -0
- package/dist/agent-src/guidelines/design-handover-extraction.md +117 -0
- package/dist/agent-src/guidelines/design-modes.md +143 -0
- package/dist/agent-src/guidelines/design-reconciliation.md +172 -0
- package/dist/agent-src/guidelines/docs/readme-size-and-splitting.md +209 -0
- package/dist/agent-src/guidelines/e2e/playwright.md +363 -0
- package/dist/agent-src/guidelines/gtm-handoff.md +114 -0
- package/dist/agent-src/guidelines/monorepo-antipatterns.md +141 -0
- package/dist/agent-src/guidelines/php/api-design.md +115 -0
- package/dist/agent-src/guidelines/php/artisan-commands.md +81 -0
- package/dist/agent-src/guidelines/php/blade-ui.md +78 -0
- package/dist/agent-src/guidelines/php/controllers.md +90 -0
- package/dist/agent-src/guidelines/php/database.md +194 -0
- package/dist/agent-src/guidelines/php/eloquent.md +208 -0
- package/dist/agent-src/guidelines/php/flux.md +80 -0
- package/dist/agent-src/guidelines/php/general.md +207 -0
- package/dist/agent-src/guidelines/php/git.md +164 -0
- package/dist/agent-src/guidelines/php/jobs.md +111 -0
- package/dist/agent-src/guidelines/php/livewire.md +71 -0
- package/dist/agent-src/guidelines/php/logging.md +79 -0
- package/dist/agent-src/guidelines/php/naming.md +89 -0
- package/dist/agent-src/guidelines/php/patterns/dependency-injection.md +57 -0
- package/dist/agent-src/guidelines/php/patterns/dtos.md +199 -0
- package/dist/agent-src/guidelines/php/patterns/events.md +67 -0
- package/dist/agent-src/guidelines/php/patterns/factory.md +53 -0
- package/dist/agent-src/guidelines/php/patterns/pipelines.md +66 -0
- package/dist/agent-src/guidelines/php/patterns/policies.md +66 -0
- package/dist/agent-src/guidelines/php/patterns/repositories.md +122 -0
- package/dist/agent-src/guidelines/php/patterns/service-layer.md +64 -0
- package/dist/agent-src/guidelines/php/patterns/strategy.md +247 -0
- package/dist/agent-src/guidelines/php/patterns.md +28 -0
- package/dist/agent-src/guidelines/php/performance.md +92 -0
- package/dist/agent-src/guidelines/php/php-coding-patterns.md +80 -0
- package/dist/agent-src/guidelines/php/resources.md +100 -0
- package/dist/agent-src/guidelines/php/security.md +110 -0
- package/dist/agent-src/guidelines/php/sql.md +97 -0
- package/dist/agent-src/guidelines/php/validations.md +119 -0
- package/dist/agent-src/guidelines/php/websocket.md +100 -0
- package/dist/agent-src/guidelines/prompt-templates.md +189 -0
- package/dist/agent-src/guidelines/redundancy-taxonomy.md +208 -0
- package/dist/agent-src/guidelines/wing4-handoff.md +127 -0
- package/dist/agent-src/personas/README.md +1 -1
- package/dist/agent-src/personas/_template-specialist/persona.md +1 -1
- package/dist/agent-src/personas/product-owner.md +1 -1
- package/dist/agent-src/rules/active-remediation.md +1 -1
- package/dist/agent-src/rules/architecture.md +2 -2
- package/dist/agent-src/rules/artifact-drafting-protocol.md +1 -1
- package/dist/agent-src/rules/ask-when-uncertain.md +2 -2
- package/dist/agent-src/rules/brand-source-of-truth.md +9 -7
- package/dist/agent-src/rules/code-comment-discipline.md +2 -2
- package/dist/agent-src/rules/code-provenance.md +1 -1
- package/dist/agent-src/rules/content-quoting-floor.md +1 -1
- package/dist/agent-src/rules/context-hygiene.md +5 -5
- package/dist/agent-src/rules/cross-source-consistency.md +1 -1
- package/dist/agent-src/rules/design-fidelity.md +36 -46
- package/dist/agent-src/rules/direct-answers.md +2 -2
- package/dist/agent-src/rules/domain-adoption-policy.md +1 -1
- package/dist/agent-src/rules/evaluator-independence.md +1 -1
- package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +1 -1
- package/dist/agent-src/rules/icon-consistency.md +5 -1
- package/dist/agent-src/rules/improve-before-implement.md +1 -1
- package/dist/agent-src/rules/language-and-tone.md +3 -3
- package/dist/agent-src/rules/minimal-safe-diff.md +1 -1
- package/dist/agent-src/rules/notes-first-reasoning.md +2 -2
- package/dist/agent-src/rules/recurring-criticism.md +1 -1
- package/dist/agent-src/rules/roadmap-progress-sync.md +1 -1
- package/dist/agent-src/rules/role-mode-adherence.md +2 -2
- package/dist/agent-src/rules/security-sensitive-stop.md +1 -1
- package/dist/agent-src/rules/size-enforcement.md +1 -1
- package/dist/agent-src/rules/source-confidentiality.md +2 -2
- package/dist/agent-src/rules/think-before-action.md +1 -1
- package/dist/agent-src/rules/token-efficiency.md +7 -5
- package/dist/agent-src/rules/ui-audit-gate.md +3 -2
- package/dist/agent-src/rules/untrusted-input-defense.md +3 -3
- package/dist/agent-src/skills/activation-design/SKILL.md +2 -2
- package/dist/agent-src/skills/adr-create/SKILL.md +5 -5
- package/dist/agent-src/skills/ai-council/SKILL.md +1 -1
- package/dist/agent-src/skills/ai-council/references/advanced-modes.md +1 -1
- package/dist/agent-src/skills/blade-ui/SKILL.md +1 -1
- package/dist/agent-src/skills/blast-radius-analyzer/SKILL.md +1 -1
- package/dist/agent-src/skills/brand-to-tokens/SKILL.md +24 -3
- package/dist/agent-src/skills/bug-analyzer/SKILL.md +1 -1
- package/dist/agent-src/skills/build-buy-partner/SKILL.md +1 -1
- package/dist/agent-src/skills/churn-prevention/SKILL.md +2 -2
- package/dist/agent-src/skills/code-refactoring/SKILL.md +3 -3
- package/dist/agent-src/skills/code-review/SKILL.md +3 -3
- package/dist/agent-src/skills/command-writing/SKILL.md +3 -3
- package/dist/agent-src/skills/comp-banding/SKILL.md +1 -1
- package/dist/agent-src/skills/competitive-moat-analysis/SKILL.md +1 -1
- package/dist/agent-src/skills/competitive-positioning/SKILL.md +2 -2
- package/dist/agent-src/skills/complexity-first-planning/SKILL.md +1 -1
- package/dist/agent-src/skills/condense-memory/SKILL.md +1 -1
- package/dist/agent-src/skills/content-funnel-design/SKILL.md +2 -2
- package/dist/agent-src/skills/contracts-cognition/SKILL.md +1 -1
- package/dist/agent-src/skills/copilot-agents-optimization/SKILL.md +2 -2
- package/dist/agent-src/skills/corpus-grounding/SKILL.md +2 -2
- package/dist/agent-src/skills/customer-research/SKILL.md +2 -2
- package/dist/agent-src/skills/dashboard-design/SKILL.md +1 -1
- package/dist/agent-src/skills/data-handling-judgment/SKILL.md +1 -1
- package/dist/agent-src/skills/deal-qualification-meddic/SKILL.md +2 -2
- package/dist/agent-src/skills/decision-record/SKILL.md +3 -3
- package/dist/agent-src/skills/decision-review/SKILL.md +8 -8
- package/dist/agent-src/skills/deep-reading-analyst/SKILL.md +22 -22
- package/dist/agent-src/skills/design-intelligence/SKILL.md +4 -4
- package/dist/agent-src/skills/design-intelligence/references/context-and-registers.md +2 -2
- package/dist/agent-src/skills/design-review/SKILL.md +4 -4
- package/dist/agent-src/skills/design-system-capture/references/design-system-json.md +20 -1
- package/dist/agent-src/skills/design-tokens/SKILL.md +17 -2
- package/dist/agent-src/skills/design-variations/SKILL.md +2 -2
- package/dist/agent-src/skills/developer-like-execution/SKILL.md +2 -2
- package/dist/agent-src/skills/discovery-interview/SKILL.md +2 -2
- package/dist/agent-src/skills/doc-coauthoring/SKILL.md +3 -3
- package/dist/agent-src/skills/editorial-calendar/SKILL.md +2 -2
- package/dist/agent-src/skills/existing-ui-audit/SKILL.md +44 -1
- package/dist/agent-src/skills/existing-ui-audit/references/anti-slop-cross-reference.md +2 -2
- package/dist/agent-src/skills/expansion-playbook/SKILL.md +2 -2
- package/dist/agent-src/skills/experiment-loop/SKILL.md +1 -1
- package/dist/agent-src/skills/experiment-loop/references/protocol.md +1 -1
- package/dist/agent-src/skills/fe-design/SKILL.md +3 -3
- package/dist/agent-src/skills/fe-design/references/design-patterns.md +1 -1
- package/dist/agent-src/skills/fe-design/references/design-read-and-memory.md +3 -3
- package/dist/agent-src/skills/fe-design/references/source-led-port.md +1 -1
- package/dist/agent-src/skills/feature-planning/SKILL.md +1 -1
- package/dist/agent-src/skills/flux/SKILL.md +1 -1
- package/dist/agent-src/skills/forecast-accuracy/SKILL.md +2 -2
- package/dist/agent-src/skills/forecasting/SKILL.md +2 -2
- package/dist/agent-src/skills/fundraising-narrative/SKILL.md +2 -2
- package/dist/agent-src/skills/funnel-analysis/SKILL.md +2 -2
- package/dist/agent-src/skills/gtm-launch/SKILL.md +2 -2
- package/dist/agent-src/skills/hiring-loop-design/SKILL.md +1 -1
- package/dist/agent-src/skills/html-deck/SKILL.md +5 -5
- package/dist/agent-src/skills/humanizer/SKILL.md +1 -1
- package/dist/agent-src/skills/humanizer/data/patterns.md +1 -1
- package/dist/agent-src/skills/iconography/SKILL.md +3 -3
- package/dist/agent-src/skills/judge-synthesis/SKILL.md +1 -1
- package/dist/agent-src/skills/laravel-api-endpoint/SKILL.md +2 -2
- package/dist/agent-src/skills/launch-readiness/SKILL.md +3 -3
- package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +6 -6
- package/dist/agent-src/skills/livewire/SKILL.md +1 -1
- package/dist/agent-src/skills/market-entry-analysis/SKILL.md +1 -1
- package/dist/agent-src/skills/mcp-builder/SKILL.md +1 -1
- package/dist/agent-src/skills/memory-consolidation/SKILL.md +3 -3
- package/dist/agent-src/skills/messaging-architecture/SKILL.md +2 -2
- package/dist/agent-src/skills/monorepo-workspace/SKILL.md +1 -1
- package/dist/agent-src/skills/onboarding-design/SKILL.md +2 -2
- package/dist/agent-src/skills/onboarding-program/SKILL.md +1 -1
- package/dist/agent-src/skills/one-on-one-cadence/SKILL.md +1 -1
- package/dist/agent-src/skills/org-design/SKILL.md +1 -1
- package/dist/agent-src/skills/overbuild-review-lens/SKILL.md +3 -3
- package/dist/agent-src/skills/override-management/SKILL.md +1 -1
- package/dist/agent-src/skills/perf-feedback-craft/SKILL.md +1 -1
- package/dist/agent-src/skills/persona-writing/SKILL.md +1 -1
- package/dist/agent-src/skills/php-coder/SKILL.md +1 -1
- package/dist/agent-src/skills/pipeline-strategy/SKILL.md +2 -2
- package/dist/agent-src/skills/playwright-testing/SKILL.md +3 -3
- package/dist/agent-src/skills/po-discovery/SKILL.md +1 -1
- package/dist/agent-src/skills/positioning-strategy/SKILL.md +2 -2
- package/dist/agent-src/skills/privacy-review/SKILL.md +1 -1
- package/dist/agent-src/skills/prompt-optimizer/SKILL.md +3 -3
- package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +1 -1
- package/dist/agent-src/skills/reasoning-orchestrator/SKILL.md +2 -2
- package/dist/agent-src/skills/receiving-code-review/SKILL.md +1 -1
- package/dist/agent-src/skills/refine-ticket/SKILL.md +2 -2
- package/dist/agent-src/skills/release-comms/SKILL.md +2 -2
- package/dist/agent-src/skills/retention-loops/SKILL.md +2 -2
- package/dist/agent-src/skills/review-routing/SKILL.md +2 -2
- package/dist/agent-src/skills/roadmap-management/SKILL.md +1 -1
- package/dist/agent-src/skills/roadmap-management/references/archival.md +1 -1
- package/dist/agent-src/skills/roadmap-writing/SKILL.md +5 -5
- package/dist/agent-src/skills/rule-writing/SKILL.md +6 -6
- package/dist/agent-src/skills/runway-cognition/SKILL.md +2 -2
- package/dist/agent-src/skills/scenario-modeling/SKILL.md +2 -2
- package/dist/agent-src/skills/skill-writing/SKILL.md +2 -2
- package/dist/agent-src/skills/skill-writing/references/procedure.md +1 -1
- package/dist/agent-src/skills/skill-writing/references/section-patterns.md +3 -3
- package/dist/agent-src/skills/spreadsheet-authoring/SKILL.md +1 -1
- package/dist/agent-src/skills/stakeholder-tradeoff/SKILL.md +3 -3
- package/dist/agent-src/skills/subagent-orchestration/SKILL.md +1 -1
- package/dist/agent-src/skills/supply-chain-intake/SKILL.md +1 -1
- package/dist/agent-src/skills/systematic-debugging/SKILL.md +2 -2
- package/dist/agent-src/skills/tailwind-engineer/SKILL.md +11 -5
- package/dist/agent-src/skills/throughput-vs-morale-tradeoff/SKILL.md +1 -1
- package/dist/agent-src/skills/token-optimizer/SKILL.md +1 -1
- package/dist/agent-src/skills/typography-system/SKILL.md +2 -2
- package/dist/agent-src/skills/ui-component-architect/SKILL.md +28 -8
- package/dist/agent-src/skills/unit-economics-modeling/SKILL.md +2 -2
- package/dist/agent-src/skills/upstream-contribute/SKILL.md +1 -1
- package/dist/agent-src/skills/validate-feature-fit/SKILL.md +2 -2
- package/dist/agent-src/skills/verify-repair-loop/SKILL.md +2 -2
- package/dist/agent-src/skills/vision-articulation/SKILL.md +1 -1
- package/dist/agent-src/skills/voc-extract/SKILL.md +2 -2
- package/dist/agent-src/skills/voice-and-tone-design/SKILL.md +2 -2
- package/dist/agent-src/skills/wireframe/SKILL.md +1 -1
- package/dist/agent-src/skills/workspace-link/SKILL.md +1 -1
- package/dist/agent-src/templates/agent-settings.md +6 -6
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/contexts/knowledge-pages.md +2 -3
- package/dist/agent-src/templates/copilot-instructions.md +1 -1
- package/dist/agent-src/templates/roadmaps.md +1 -1
- package/dist/agent-src/templates/scripts/README.md +2 -2
- package/dist/agent-src/user-types/_template/user-type.md +1 -1
- package/dist/cli-delegate/check_update_banner.js +12 -1
- package/dist/cli-delegate/{chunk-NLP54U3J.js → chunk-2XY7ILBT.js} +13 -1
- package/dist/cli-delegate/{chunk-IAI3XL43.js → chunk-3FKR64R5.js} +22 -6
- package/dist/cli-delegate/{chunk-J3RFNKG4.js → chunk-55ACLDUE.js} +2 -2
- package/dist/cli-delegate/{chunk-PKOBQADP.js → chunk-57PN4GYJ.js} +1 -1
- package/dist/cli-delegate/{chunk-KCNTUSPI.js → chunk-AK6HODNQ.js} +4 -4
- package/dist/cli-delegate/{chunk-2FTMENJL.js → chunk-GYC3VRYN.js} +1 -1
- package/dist/cli-delegate/{chunk-LWTYTX6F.js → chunk-HZ52BRGG.js} +24 -18
- package/dist/cli-delegate/{chunk-6RJA2F5A.js → chunk-IVBPRCQO.js} +1 -1
- package/dist/cli-delegate/{chunk-I6RHFQEG.js → chunk-YUM5KURG.js} +17 -1
- package/dist/cli-delegate/cmd_analyze_session.js +1 -1
- package/dist/cli-delegate/cmd_brand_status.js +1 -1
- package/dist/cli-delegate/cmd_conformance.js +3 -3
- package/dist/cli-delegate/cmd_doctor.js +3 -3
- package/dist/cli-delegate/cmd_explain.js +2 -2
- package/dist/cli-delegate/cmd_export.js +4 -4
- package/dist/cli-delegate/cmd_handoff.js +4 -4
- package/dist/cli-delegate/cmd_mcp_available.js +1 -1
- package/dist/cli-delegate/cmd_memory_get.js +1 -1
- package/dist/cli-delegate/cmd_migrate.js +2 -2
- package/dist/cli-delegate/cmd_packs_active.js +2 -2
- package/dist/cli-delegate/cmd_prune.js +4 -4
- package/dist/cli-delegate/cmd_route_audit.js +3 -3
- package/dist/cli-delegate/cmd_route_explain.js +1 -1
- package/dist/cli-delegate/cmd_session_recycle.js +1 -1
- package/dist/cli-delegate/cmd_settings_get.js +15 -9
- package/dist/cli-delegate/cmd_settings_migrate.js +4 -4
- package/dist/cli-delegate/cmd_settings_set.js +41 -11
- package/dist/cli-delegate/cmd_sync.js +4 -4
- package/dist/cli-delegate/cmd_uninstall.js +4 -4
- package/dist/cli-delegate/cmd_update.js +1 -1
- package/dist/cli-delegate/cmd_upgrade.js +1 -1
- package/dist/cli-delegate/cmd_validate.js +4 -4
- package/dist/cli-delegate/cmd_versions.js +1 -1
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +22 -75
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +3 -3
- package/dist/discovery/dormancy-report.md +1 -1
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +5 -7
- package/dist/discovery/trust-report.md +2 -2
- package/dist/discovery/workspaces.json +4 -6
- package/dist/hooks/dispatch.js +8607 -8930
- package/dist/install/install.mjs +35 -8
- package/dist/mcp/registry-manifest.json +3 -3
- package/dist/mcp/server.json +2 -2
- package/dist/mcp/server.mjs +1433 -1342
- package/dist/router.json +1 -1
- package/dist/scripts/_lib/agent_settings.js +73 -0
- package/dist/scripts/_lib/agent_src.js +20 -0
- package/dist/scripts/_lib/guidelines_lane.js +158 -0
- package/dist/scripts/condense.js +2 -5
- package/dist/server/io/yamlIO.js +125 -17
- package/dist/server/schemas/settings.js +18 -4
- package/dist/shared/settingsSurface.js +6 -1
- package/docs/contracts/settings-classes.md +18 -9
- package/docs/guidelines/abstraction-thresholds.md +35 -0
- package/docs/guidelines/agent-infra/active-remediation-mechanics.md +3 -3
- package/docs/guidelines/agent-infra/false-green.md +2 -2
- package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +1 -1
- package/docs/guidelines/agent-infra/skill-quality-checklist.md +1 -1
- package/docs/guidelines/design-fidelity-mechanics.md +4 -0
- package/docs/guidelines/design-fidelity-routing.md +78 -0
- package/docs/guidelines/design-reconciliation.md +172 -0
- package/docs/guidelines/gtm-handoff.md +2 -2
- package/docs/guidelines/wing4-handoff.md +2 -2
- package/package.json +7 -3
- package/src/config/agent-settings.template.yml +55 -8
- package/src/config/ci-local-parity.yml +34 -0
- package/src/config/continuity-surface.json +4 -32
- package/src/config/gate-coverage.yml +31 -8
- package/src/config/gate-reachability-exemptions.json +1 -0
- package/src/config/gate-violation-baselines.json +3 -3
- package/src/config/hook-token-budget.json +1 -1
- package/src/config/host-injection-effect.json +2 -2
- package/src/config/pack-size-budget.json +55 -4
- package/src/config/platform-anchor.json +47 -0
- package/src/config/preamble-payload-budget.json +2 -3
- package/src/config/publish-surface.json +4 -2
- package/src/config/ratification-policy.json +7 -0
- package/src/config/rule-stub-ceilings.json +16 -9
- package/src/scripts/_cli/cmd_settings_get.ts +22 -7
- package/src/scripts/_lib/agent_settings.ts +85 -0
- package/src/scripts/_lib/agent_src.ts +21 -0
- package/src/scripts/_lib/artifact_maturity.ts +242 -0
- package/src/scripts/_lib/conformance_report.ts +403 -0
- package/src/scripts/_lib/continuity_writer.ts +72 -13
- package/src/scripts/_lib/design_system_import.ts +20 -0
- package/src/scripts/_lib/design_tolerance.ts +281 -0
- package/src/scripts/_lib/guidelines_lane.ts +164 -0
- package/src/scripts/_lib/obligation_frequency.ts +2 -3
- package/src/scripts/_lib/platform_anchor.ts +1053 -0
- package/src/scripts/_lib/ratification_artifact.ts +278 -0
- package/src/scripts/_lib/security_lint.ts +23 -2
- package/src/scripts/_lib/self_repair.ts +21 -0
- package/src/scripts/_lib/session_index_trust.ts +42 -1
- package/src/scripts/_lib/standing_bound_ratchet.ts +103 -37
- package/src/scripts/_lib/tolerance_shadow.ts +177 -0
- package/src/scripts/ai_council/redact_low_impact_entry.ts +8 -0
- package/src/scripts/autonomy_friction_traffic.ts +379 -0
- package/src/scripts/check_kernel_edit_ratified.ts +462 -0
- package/src/scripts/check_loss_class_declared.ts +793 -46
- package/src/scripts/check_platform_anchor.ts +390 -0
- package/src/scripts/check_preamble_payload_budget.ts +292 -4
- package/src/scripts/check_projected_rule_routes.ts +395 -0
- package/src/scripts/code_graph/cli.ts +6 -0
- package/src/scripts/condense.ts +2 -6
- package/src/scripts/generate_host_cost_table.ts +354 -0
- package/src/scripts/hook_manifest.json +1 -1
- package/src/scripts/hook_manifest.yaml +35 -27
- package/src/scripts/hooks/category_a.ts +1 -1
- package/src/scripts/hooks/chain_nudge_hook.ts +311 -25
- package/src/scripts/hooks/session_eol_hook.ts +68 -154
- package/src/scripts/hooks/source_first_gate_hook.ts +12 -0
- package/src/scripts/hooks/ui_route_nudge_hook.ts +52 -15
- package/src/scripts/hot_context_hook.ts +41 -401
- package/src/scripts/lint_evidence_artifacts.ts +1 -0
- package/src/scripts/lint_knowledge_scale.ts +0 -26
- package/src/scripts/memory_lookup.ts +9 -9
- package/src/scripts/report_standing_payload_by_host.ts +7 -7
- package/src/scripts/session_memory_index.ts +5 -0
- package/src/scripts/sync_agent_settings.ts +270 -10
- package/src/server/io/yamlIO.ts +127 -17
- package/src/server/schemas/settings.ts +25 -5
- package/src/shared/settingsSurface.ts +13 -2
- package/src/templates/compact-instructions.md +8 -3
- package/dist/agent-src/commands/chat-history/import.md +0 -170
- package/dist/agent-src/commands/chat-history.md +0 -63
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# API Design Guidelines
|
|
2
|
+
|
|
3
|
+
> API conventions — response format, status codes, pagination, error handling, rate limiting, route naming.
|
|
4
|
+
|
|
5
|
+
**Related Skills:** `api-design`, `laravel-api-endpoint`, `api-testing`
|
|
6
|
+
**Related Guidelines:** [controllers.md](controllers.md), [resources.md](resources.md)
|
|
7
|
+
|
|
8
|
+
## Response Format
|
|
9
|
+
|
|
10
|
+
- **Always use API Resource classes** — never return raw models or arrays.
|
|
11
|
+
- **Single item:** `{ "data": { ... } }`
|
|
12
|
+
- **Collection:** `{ "data": [ ... ], "meta": { ... }, "links": { ... } }`
|
|
13
|
+
|
|
14
|
+
## HTTP Status Codes
|
|
15
|
+
|
|
16
|
+
| Code | When |
|
|
17
|
+
|---|---|
|
|
18
|
+
| `200` | Successful GET, PUT, PATCH |
|
|
19
|
+
| `201` | Successful POST (resource created) |
|
|
20
|
+
| `204` | Successful DELETE (no content) |
|
|
21
|
+
| `400` | Bad request (malformed input) |
|
|
22
|
+
| `401` | Unauthenticated |
|
|
23
|
+
| `403` | Unauthorized (forbidden) |
|
|
24
|
+
| `404` | Resource not found |
|
|
25
|
+
| `422` | Validation error |
|
|
26
|
+
| `429` | Rate limited |
|
|
27
|
+
| `500` | Server error |
|
|
28
|
+
|
|
29
|
+
## Pagination
|
|
30
|
+
|
|
31
|
+
Use Laravel's built-in pagination for list endpoints:
|
|
32
|
+
|
|
33
|
+
```php
|
|
34
|
+
$projects = Project::query()
|
|
35
|
+
->filter($filters)
|
|
36
|
+
->paginate(perPage: $request->integer('per_page', 15));
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
| Parameter | Default | Description |
|
|
40
|
+
|---|---|---|
|
|
41
|
+
| `page` | 1 | Current page number |
|
|
42
|
+
| `per_page` | 15 | Items per page |
|
|
43
|
+
|
|
44
|
+
## Filtering and Sorting
|
|
45
|
+
|
|
46
|
+
- Use the project's **filter pipeline** pattern (see `agents/reference/docs/query-filter.md`).
|
|
47
|
+
- Filter classes are dedicated, testable units — not inline query logic.
|
|
48
|
+
- Sorting via `sort` query parameter.
|
|
49
|
+
|
|
50
|
+
## Error Responses
|
|
51
|
+
|
|
52
|
+
### Validation errors (422)
|
|
53
|
+
|
|
54
|
+
Laravel's default format:
|
|
55
|
+
|
|
56
|
+
```json
|
|
57
|
+
{
|
|
58
|
+
"message": "The given data was invalid.",
|
|
59
|
+
"errors": {
|
|
60
|
+
"field": ["The field is required."]
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Application errors
|
|
66
|
+
|
|
67
|
+
```json
|
|
68
|
+
{
|
|
69
|
+
"message": "Human-readable error description."
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Error format must match existing project convention — not RFC 7807 or other standards.
|
|
74
|
+
|
|
75
|
+
## Rate Limiting
|
|
76
|
+
|
|
77
|
+
```php
|
|
78
|
+
// bootstrap/app.php or RouteServiceProvider
|
|
79
|
+
RateLimiter::for('api', function (Request $request) {
|
|
80
|
+
return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip());
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
RateLimiter::for('auth', function (Request $request) {
|
|
84
|
+
return Limit::perMinute(5)->by($request->ip());
|
|
85
|
+
});
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Include in responses: `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `Retry-After` (on 429).
|
|
89
|
+
|
|
90
|
+
## Idempotency
|
|
91
|
+
|
|
92
|
+
For non-idempotent operations (POST), support idempotency keys:
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
POST /api/v1/orders
|
|
96
|
+
Idempotency-Key: unique-client-generated-uuid
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Route Naming
|
|
100
|
+
|
|
101
|
+
- Dot notation: `v1.projects.index`, `v1.projects.show`
|
|
102
|
+
- Route prefixes in kebab-case: `/api/v1/client-software`
|
|
103
|
+
- Controllers in singular: `ProjectController`
|
|
104
|
+
- Implicit route model binding where possible
|
|
105
|
+
- Scope bindings for nested resources
|
|
106
|
+
- Max nesting depth: 2 levels (`/users/{id}/orders/{id}`)
|
|
107
|
+
|
|
108
|
+
## Do NOT
|
|
109
|
+
|
|
110
|
+
- Return raw Eloquent models — always use API Resources.
|
|
111
|
+
- Put business logic in controllers — delegate to services.
|
|
112
|
+
- Create breaking changes in existing versions — create a new version.
|
|
113
|
+
- Use inconsistent response formats between endpoints.
|
|
114
|
+
- Expose internal IDs or database column names that should be hidden.
|
|
115
|
+
- Skip rate limiting on authentication endpoints.
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Artisan Command Guidelines
|
|
2
|
+
|
|
3
|
+
> Console command conventions — naming, structure, input/output, safety, scheduling.
|
|
4
|
+
|
|
5
|
+
**Related Skills:** `artisan-commands`
|
|
6
|
+
**Related Guidelines:** [patterns/service-layer.md](patterns/service-layer.md)
|
|
7
|
+
|
|
8
|
+
## Naming
|
|
9
|
+
|
|
10
|
+
- Clear, intention-revealing names: `users:cleanup`, `orders:sync`, `reports:generate`
|
|
11
|
+
- Follow Laravel naming style: `{domain}:{action}`
|
|
12
|
+
|
|
13
|
+
## Structure
|
|
14
|
+
|
|
15
|
+
- Commands **orchestrate** — they accept input, validate conditions, call services, report results.
|
|
16
|
+
- Heavy business logic belongs in services/actions, not in `handle()`.
|
|
17
|
+
- Keep `handle()` readable and linear.
|
|
18
|
+
|
|
19
|
+
## Input
|
|
20
|
+
|
|
21
|
+
- **Arguments** for required primary input.
|
|
22
|
+
- **Options** for toggles, filters, execution modes.
|
|
23
|
+
- Validate critical inputs before expensive/destructive work.
|
|
24
|
+
- Provide safe defaults where appropriate.
|
|
25
|
+
- Use `--force` flag for destructive commands — always check it.
|
|
26
|
+
|
|
27
|
+
## Output
|
|
28
|
+
|
|
29
|
+
- Use `$this->info()`, `$this->warn()`, `$this->error()`, `$this->table()`, progress bars.
|
|
30
|
+
- Keep output readable for both humans and logs.
|
|
31
|
+
- Don't flood the console — use verbose mode for noisy output.
|
|
32
|
+
- `$this->info()` is suppressed in quiet mode — use `$this->line()` for critical info.
|
|
33
|
+
|
|
34
|
+
## Interactive vs Automated
|
|
35
|
+
|
|
36
|
+
- Use confirmations for destructive operations in manual commands.
|
|
37
|
+
- **Never** add interactive prompts to scheduler/CI commands.
|
|
38
|
+
- Support non-interactive execution (`--no-interaction`).
|
|
39
|
+
|
|
40
|
+
## Batch and Long-Running
|
|
41
|
+
|
|
42
|
+
- Use chunking, cursors, or batching for large datasets.
|
|
43
|
+
- Report progress for long-running tasks.
|
|
44
|
+
- Handle partial failures intentionally.
|
|
45
|
+
- Avoid loading large datasets into memory at once.
|
|
46
|
+
|
|
47
|
+
## Safety
|
|
48
|
+
|
|
49
|
+
- Treat cleanup, repair, sync, and deletion as high-risk.
|
|
50
|
+
- Add safeguards for destructive operations.
|
|
51
|
+
- Be explicit about dry-run behavior if supported.
|
|
52
|
+
- Never perform irreversible work silently.
|
|
53
|
+
- Add environment checks for production commands.
|
|
54
|
+
|
|
55
|
+
## Scheduling
|
|
56
|
+
|
|
57
|
+
Commands for the scheduler must:
|
|
58
|
+
- Run non-interactively
|
|
59
|
+
- Be idempotent where possible
|
|
60
|
+
- Log/report useful status
|
|
61
|
+
- Fail loudly enough for monitoring
|
|
62
|
+
|
|
63
|
+
## Error Handling
|
|
64
|
+
|
|
65
|
+
- Fail with meaningful messages.
|
|
66
|
+
- Don't swallow exceptions silently.
|
|
67
|
+
- Return appropriate exit codes.
|
|
68
|
+
- Surface enough context to diagnose without exposing sensitive data.
|
|
69
|
+
|
|
70
|
+
## Testing
|
|
71
|
+
|
|
72
|
+
- Test behavior, not just class existence.
|
|
73
|
+
- Assert: exit codes, console output, side effects, option/argument behavior.
|
|
74
|
+
|
|
75
|
+
## Do NOT
|
|
76
|
+
|
|
77
|
+
- Put business logic in commands — delegate to services.
|
|
78
|
+
- Use `dd()` or `var_dump()` — use `$this->info()` / `$this->error()`.
|
|
79
|
+
- Skip input validation in command signatures.
|
|
80
|
+
- Make scheduled commands interactive.
|
|
81
|
+
- Run destructive operations without safeguards.
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Blade UI Guidelines
|
|
2
|
+
|
|
3
|
+
> Blade template conventions — views, components, partials, forms, escaping, styling.
|
|
4
|
+
|
|
5
|
+
**Related Skills:** `blade-ui`, `livewire`, `flux`
|
|
6
|
+
**Related Guidelines:** [controllers.md](controllers.md)
|
|
7
|
+
|
|
8
|
+
## View Structure
|
|
9
|
+
|
|
10
|
+
- Use the project's existing layout system.
|
|
11
|
+
- Organize templates into clear sections.
|
|
12
|
+
- Extract repeated sections into partials or components.
|
|
13
|
+
- Prefer semantic HTML.
|
|
14
|
+
- Avoid deeply nested conditionals — use a partial/component instead.
|
|
15
|
+
|
|
16
|
+
## Blade Logic
|
|
17
|
+
|
|
18
|
+
- Use Blade directives for **simple presentation logic** only.
|
|
19
|
+
- Keep conditionals small and view-focused.
|
|
20
|
+
- No business calculations or database access in templates.
|
|
21
|
+
- No heavy data transformations in Blade.
|
|
22
|
+
- Move non-trivial formatting to controllers, view models, presenters, or components.
|
|
23
|
+
|
|
24
|
+
## Components
|
|
25
|
+
|
|
26
|
+
- Use Blade components for reusable UI pieces (when project already uses them).
|
|
27
|
+
- Keep component APIs clean and explicit — clear prop/slot names.
|
|
28
|
+
- Don't create a component for something used only once (unless it significantly improves clarity).
|
|
29
|
+
|
|
30
|
+
## Partials
|
|
31
|
+
|
|
32
|
+
- Use partials for repeated markup fragments when a full component is unnecessary.
|
|
33
|
+
- Name partials clearly per project conventions.
|
|
34
|
+
- Avoid deep partial hierarchies that make UI hard to trace.
|
|
35
|
+
|
|
36
|
+
## Forms
|
|
37
|
+
|
|
38
|
+
- Follow the project's form style for labels, inputs, validation messages, old values, session feedback.
|
|
39
|
+
- Use CSRF protection correctly.
|
|
40
|
+
- Render validation errors consistently.
|
|
41
|
+
- Preserve user input using project conventions.
|
|
42
|
+
- Reuse existing field components/partials — don't duplicate.
|
|
43
|
+
|
|
44
|
+
## Validation and Feedback
|
|
45
|
+
|
|
46
|
+
- Display validation errors clearly and consistently.
|
|
47
|
+
- Show success/error flash messages per project conventions.
|
|
48
|
+
- Keep feedback near the relevant UI.
|
|
49
|
+
- Don't invent a second feedback pattern if one already exists.
|
|
50
|
+
|
|
51
|
+
## Escaping and Output Safety
|
|
52
|
+
|
|
53
|
+
- Escape output by default — use `{{ }}`.
|
|
54
|
+
- Use `{!! !!}` only when intentionally safe and already sanitized.
|
|
55
|
+
- Be careful with rich content, HTML snippets, and user-generated content.
|
|
56
|
+
|
|
57
|
+
## Styling
|
|
58
|
+
|
|
59
|
+
- Reuse existing CSS/Tailwind conventions.
|
|
60
|
+
- Don't introduce a new styling approach in one template.
|
|
61
|
+
- Match class usage with neighboring templates.
|
|
62
|
+
- If the project uses design-system components, follow them.
|
|
63
|
+
- Always use utility classes — not inline styles.
|
|
64
|
+
|
|
65
|
+
## Accessibility
|
|
66
|
+
|
|
67
|
+
- Use labels for form fields.
|
|
68
|
+
- Prefer semantic elements.
|
|
69
|
+
- Add ARIA only where it meaningfully improves accessibility.
|
|
70
|
+
|
|
71
|
+
## Do NOT
|
|
72
|
+
|
|
73
|
+
- Place business logic in Blade templates.
|
|
74
|
+
- Query the database from views.
|
|
75
|
+
- Echo unescaped user data without explicit sanitization.
|
|
76
|
+
- Inline large blocks of CSS or JS — use asset files.
|
|
77
|
+
- Duplicate repeated markup when a component/partial exists.
|
|
78
|
+
- `@include` shares parent scope — components don't. Know the difference.
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# Controller Guidelines
|
|
2
|
+
|
|
3
|
+
> Project-specific controller conventions. Thin controllers, single-action pattern, OpenAPI annotations.
|
|
4
|
+
|
|
5
|
+
**Related Skills:** `laravel-api-endpoint`, `laravel`, `openapi`
|
|
6
|
+
**Related Guidelines:** [validations.md](validations.md), [resources.md](resources.md)
|
|
7
|
+
|
|
8
|
+
## Core Rules
|
|
9
|
+
|
|
10
|
+
- **Single Action Controllers** only (`__invoke()`) — no Resource Controllers
|
|
11
|
+
- Each controller must have: FormRequest, OpenAPI schema attributes
|
|
12
|
+
- Use Resource responses where applicable (not all controllers return JSON — e.g. Delete returns an empty response, file downloads return a file stream)
|
|
13
|
+
- Thin controllers — business logic in Services/Actions
|
|
14
|
+
|
|
15
|
+
## Naming Schema
|
|
16
|
+
|
|
17
|
+
| Action | Controller | FormRequest | Resource |
|
|
18
|
+
|---------|-----------------------------|----------------------------|----------------------|
|
|
19
|
+
| Create | `Create{Entity}Controller` | `Create{Entity}Request` | `{Entity}Resource` |
|
|
20
|
+
| List | `List{Entities}Controller` | `List{Entities}Request` | `{Entity}Resource` |
|
|
21
|
+
| Show | `Show{Entity}Controller` | `Show{Entity}Request` | `{Entity}Resource` |
|
|
22
|
+
| Update | `Update{Entity}Controller` | `Update{Entity}Request` | `{Entity}Resource` |
|
|
23
|
+
| Delete | `Delete{Entity}Controller` | `Delete{Entity}Request` | empty `Response` |
|
|
24
|
+
| Restore | `Restore{Entity}Controller` | `Restore{Entity}Request` | `{Entity}Resource` |
|
|
25
|
+
|
|
26
|
+
> List uses **plural** entity name. All others use **singular**.
|
|
27
|
+
|
|
28
|
+
## HTTP Actions
|
|
29
|
+
|
|
30
|
+
| Action | Method | Path | Notes |
|
|
31
|
+
|---------|--------|----------------------|-------------------------------------------|
|
|
32
|
+
| Create | POST | `/api/{entities}` | JSON body |
|
|
33
|
+
| List | GET | `/api/{entities}` | Filters, Pagination |
|
|
34
|
+
| Show | GET | `/api/{entities}/{id}` | |
|
|
35
|
+
| Update | PATCH | `/api/{entities}/{id}` | JSON body |
|
|
36
|
+
| Delete | DELETE | `/api/{entities}/{id}` | `?force=true` for hard delete |
|
|
37
|
+
| Restore | GET | `/api/{entities}/{id}/restore` | |
|
|
38
|
+
|
|
39
|
+
## Controller Pattern
|
|
40
|
+
|
|
41
|
+
```php
|
|
42
|
+
class CreateLinkController extends Controller
|
|
43
|
+
{
|
|
44
|
+
#[CreateLinkRequestSchema(path: '/links', version: '1', resource: LinkResource::class)]
|
|
45
|
+
#[CreateResourceResponseSchema(LinkResource::class)]
|
|
46
|
+
#[ValidationErrorResponse]
|
|
47
|
+
public function __invoke(CreateLinkRequest $request): LinkResource
|
|
48
|
+
{
|
|
49
|
+
$link = Link::create($request->validated());
|
|
50
|
+
return LinkResource::make($link);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
**Key points:**
|
|
56
|
+
- Use `$request->validated()` — never `$request->all()`
|
|
57
|
+
- Use `Resource::make()` instead of `new Resource()` (easier to test)
|
|
58
|
+
- Simple CRUD can live directly in the controller
|
|
59
|
+
- Complex logic → Service class / Repository
|
|
60
|
+
|
|
61
|
+
## Filters & Ordering
|
|
62
|
+
|
|
63
|
+
Use the `pipeline` / `paginatedPipeline` macros with filter classes:
|
|
64
|
+
|
|
65
|
+
```php
|
|
66
|
+
$links = Link::query()
|
|
67
|
+
->paginatedPipeline([
|
|
68
|
+
StringFilter::on('text')->isLike()->some(),
|
|
69
|
+
DateFilter::on('created_at')->all(),
|
|
70
|
+
OrderFilter::on(['id', 'name'])->default(['id' => 'asc']),
|
|
71
|
+
]);
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## OpenAPI Documentation
|
|
75
|
+
|
|
76
|
+
- Always extend `{Action}ResourceRequestSchema` for Create/Update/List (keeps controllers clean)
|
|
77
|
+
- Show/Delete/Restore use the base schema classes directly
|
|
78
|
+
- No per-endpoint auth/permission error schemas (documented globally)
|
|
79
|
+
- **`ValidationErrorResponse`** must be added to **every** controller that accepts input (Create, Update, etc.)
|
|
80
|
+
- **`ResourceNotFoundResponse`** must be added to every controller that queries a single entity (Show, Update, Delete, Restore)
|
|
81
|
+
|
|
82
|
+
| Action | Request Schema | Response Schema | Error Responses |
|
|
83
|
+
|---------|--------------------------|----------------------------|----------------------------------------------------|
|
|
84
|
+
| Create | Extended (custom class) | `CreateResourceResponseSchema` | `ValidationErrorResponse` |
|
|
85
|
+
| List | Extended (custom class) | `ListResourceResponseSchema` | |
|
|
86
|
+
| Show | `ShowResourceRequestSchema` | `ShowResourceResponseSchema` | `ResourceNotFoundResponse` |
|
|
87
|
+
| Update | Extended (custom class) | `UpdateResourceResponseSchema` | `ValidationErrorResponse`, `ResourceNotFoundResponse` |
|
|
88
|
+
| Delete | `DeleteResourceRequestSchema` | `DeleteResourceResponseSchema` | `ResourceNotFoundResponse` |
|
|
89
|
+
| Restore | `RestoreResourceRequestSchema` | `RestoreResourceResponseSchema` | `ResourceNotFoundResponse` |
|
|
90
|
+
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
# Database Guidelines
|
|
2
|
+
|
|
3
|
+
> Database conventions — indexing, query optimization, migrations, transactions, multi-connection patterns.
|
|
4
|
+
|
|
5
|
+
**Related Skills:** `database`, `eloquent`, `multi-tenancy`
|
|
6
|
+
**Related Guidelines:** [eloquent.md](eloquent.md)
|
|
7
|
+
|
|
8
|
+
## Indexing
|
|
9
|
+
|
|
10
|
+
Three separate things get conflated here, and keeping them apart is what makes
|
|
11
|
+
the rest of this section decidable:
|
|
12
|
+
|
|
13
|
+
1. **Declaring an integrity constraint** — a uniqueness or foreign-key
|
|
14
|
+
constraint. This is a correctness decision about the data model.
|
|
15
|
+
2. **Indexing the referencing column** — the child side of a foreign key, which
|
|
16
|
+
is what makes the lookup and the constraint check fast.
|
|
17
|
+
3. **Adding an optional query-performance index** — everything else.
|
|
18
|
+
|
|
19
|
+
The row-count guidance below governs **(3) only**. It has never governed (1),
|
|
20
|
+
and it must not be read as governing (2).
|
|
21
|
+
|
|
22
|
+
### When to add indexes
|
|
23
|
+
|
|
24
|
+
- Columns in `WHERE` clauses
|
|
25
|
+
- Columns in `JOIN` conditions
|
|
26
|
+
- Columns in `ORDER BY` (especially with pagination)
|
|
27
|
+
- Foreign key columns (Laravel adds with `foreignId()`)
|
|
28
|
+
- Columns carrying a declared uniqueness constraint
|
|
29
|
+
|
|
30
|
+
### When NOT to add indexes
|
|
31
|
+
|
|
32
|
+
These apply to **optional performance indexes** — category (3) above:
|
|
33
|
+
|
|
34
|
+
- Boolean columns with low selectivity (99% same value)
|
|
35
|
+
- Tables that are both small (< 1000 rows) **and rarely accessed**
|
|
36
|
+
- Frequently updated columns (indexes slow writes)
|
|
37
|
+
|
|
38
|
+
**Row count decides nothing on its own.** A 40-row lookup table joined in every
|
|
39
|
+
report query and a 40-row config table read twice a week are the same size and
|
|
40
|
+
not the same decision — index the first on its observed access pattern, leave
|
|
41
|
+
the second alone. "Small" without "rarely accessed" is the folklore half of this
|
|
42
|
+
rule.
|
|
43
|
+
|
|
44
|
+
**Foreign-key and uniqueness indexes are created regardless of table size.**
|
|
45
|
+
They serve integrity and lookup latency, and a row count bears on neither. A
|
|
46
|
+
40-row child table pointing at a customers table gets its foreign-key column
|
|
47
|
+
indexed like any other. Omit one only on the strength of inspected schema
|
|
48
|
+
behavior plus a representative workload measurement showing it serves no access
|
|
49
|
+
path — never on an anticipated write cost.
|
|
50
|
+
|
|
51
|
+
### Composite indexes
|
|
52
|
+
|
|
53
|
+
Order matters, and what decides it is the **predicate shape**, not selectivity:
|
|
54
|
+
|
|
55
|
+
1. Columns compared with **equality** (`=`, `IN`) come first.
|
|
56
|
+
2. Then the column compared with a **range** (`<`, `>`, `BETWEEN`, `LIKE 'x%'`).
|
|
57
|
+
3. Then columns the query only **orders by**.
|
|
58
|
+
|
|
59
|
+
Selectivity is a tie-break *within* a group, never the primary key of the
|
|
60
|
+
decision. An index cannot use any column after the first range predicate for
|
|
61
|
+
lookup, so a highly selective range column placed first throws away every column
|
|
62
|
+
behind it.
|
|
63
|
+
|
|
64
|
+
```php
|
|
65
|
+
// WHERE customer_id = ? AND created_at > ? ORDER BY created_at
|
|
66
|
+
$table->index(['customer_id', 'created_at']);
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
`customer_id` leads because it is the **equality** predicate — not because it is
|
|
70
|
+
more selective. Reverse the order and the equality column sits behind a range,
|
|
71
|
+
where the index can no longer seek on it. That holds even when `created_at` is
|
|
72
|
+
the more selective of the two, which is exactly the case the folklore rule gets
|
|
73
|
+
wrong.
|
|
74
|
+
|
|
75
|
+
## Query Optimization
|
|
76
|
+
|
|
77
|
+
### EXPLAIN analysis
|
|
78
|
+
|
|
79
|
+
| Column | Value worth a second look | The question it raises |
|
|
80
|
+
|---|---|---|
|
|
81
|
+
| `rows` | High number | Too many rows examined |
|
|
82
|
+
| `Extra` | `Using filesort` | Sorting without index |
|
|
83
|
+
| `Extra` | `Using temporary` | Temp table — optimize GROUP BY/DISTINCT |
|
|
84
|
+
| `key` | `NULL` | No index used |
|
|
85
|
+
|
|
86
|
+
Good values: `type` = `ref`, `eq_ref`, `const`; `Extra` = `Using index`.
|
|
87
|
+
|
|
88
|
+
**`type = ALL` is a full table scan, and a full table scan is often the correct
|
|
89
|
+
plan.** It belongs in no "bad value" column, because the row itself does not
|
|
90
|
+
decide:
|
|
91
|
+
|
|
92
|
+
- On a table small enough to sit in a page or two, the scan is **cheaper** than
|
|
93
|
+
an index lookup — the index costs a second read plus a row fetch per hit.
|
|
94
|
+
- On a predicate that matches a large fraction of the table, the planner picks
|
|
95
|
+
the scan **on purpose**; forcing an index there is slower, and many planners
|
|
96
|
+
will ignore the hint.
|
|
97
|
+
- On a table with hundreds of thousands of rows and a predicate matching a
|
|
98
|
+
handful, `ALL` is the defect.
|
|
99
|
+
|
|
100
|
+
The question to answer is *how many rows the predicate matches, out of how
|
|
101
|
+
many* — not whether `type` reads `ALL`. Compare the planner's `rows` estimate
|
|
102
|
+
against the table's size before concluding anything.
|
|
103
|
+
|
|
104
|
+
### Anti-patterns
|
|
105
|
+
|
|
106
|
+
| Anti-pattern | Fix |
|
|
107
|
+
|---|---|
|
|
108
|
+
| `SELECT *` in production | Select only needed columns |
|
|
109
|
+
| `LIKE '%search%'` | Fulltext search or `LIKE 'search%'` |
|
|
110
|
+
| `OFFSET` on large tables | Cursor pagination |
|
|
111
|
+
| `ORDER BY RAND()` | Application-level randomization |
|
|
112
|
+
|
|
113
|
+
**Subqueries in `WHERE` are not on that list**, and the unconditional "rewrite
|
|
114
|
+
as a JOIN" they used to carry here was wrong more often than it was right:
|
|
115
|
+
|
|
116
|
+
| The subquery is | Do |
|
|
117
|
+
|---|---|
|
|
118
|
+
| **correlated** — it references the outer row, so it re-executes per row | rewrite as a JOIN, or as a derived table joined once. This is the case the folklore rule was built for |
|
|
119
|
+
| an **uncorrelated `IN` / `EXISTS`** | leave it. Planners flatten these into a semi-join already, and the hand-written JOIN often introduces the duplicate rows a semi-join was avoiding |
|
|
120
|
+
| a **bound on the driving set** — it produces a small list the outer query then filters on | leave it. Rewriting widens the driving set, which is the opposite of the intent |
|
|
121
|
+
|
|
122
|
+
Check the plan before rewriting: if the subquery already shows as a semi-join or
|
|
123
|
+
a materialized derived table executed once, the rewrite buys nothing and costs
|
|
124
|
+
correctness.
|
|
125
|
+
### Pagination
|
|
126
|
+
|
|
127
|
+
Always paginate list endpoints — never `get()` on unbounded queries:
|
|
128
|
+
|
|
129
|
+
```php
|
|
130
|
+
// Standard
|
|
131
|
+
$users = User::query()->paginate(15);
|
|
132
|
+
|
|
133
|
+
// Cursor pagination for large tables
|
|
134
|
+
$users = User::query()->orderBy('id')->cursorPaginate(15);
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## Migrations
|
|
138
|
+
|
|
139
|
+
- Use `php artisan make:migration` to generate.
|
|
140
|
+
- Use `decimal` for money — never `float`.
|
|
141
|
+
- Add foreign keys with `constrained()`, and **choose** the `onDelete()` action
|
|
142
|
+
rather than copying one: `cascade` when the child is expendable without its
|
|
143
|
+
parent, `restrict` when the child is a record in its own right (an invoice, an
|
|
144
|
+
audit row, a payment), `set null` when it survives the parent with the link
|
|
145
|
+
removed — which needs a nullable column. The decision table lives in
|
|
146
|
+
[`laravel-migration`](../../skills/laravel-migration/SKILL.md)
|
|
147
|
+
§ Referential action is a decision.
|
|
148
|
+
- Always add indexes for searchable/filterable columns.
|
|
149
|
+
- One logical change per migration.
|
|
150
|
+
- **Declare recovery, always.** Either a `down()` that restores the prior state,
|
|
151
|
+
or — when restoration is genuinely impossible — a roll-forward plan written in
|
|
152
|
+
the migration file itself, naming why restoration is impossible with the
|
|
153
|
+
evidence, the ordered recovery steps and their inputs, the criteria that say
|
|
154
|
+
recovery succeeded, and the responsible owner. Silence is the violation, not
|
|
155
|
+
the absence of `down()`. Full contract:
|
|
156
|
+
[`laravel-migration`](../../skills/laravel-migration/SKILL.md)
|
|
157
|
+
§ The recovery contract.
|
|
158
|
+
|
|
159
|
+
### Multi-connection migrations
|
|
160
|
+
|
|
161
|
+
```php
|
|
162
|
+
Schema::connection('tenant_database')->create('projects', function (Blueprint $table) {
|
|
163
|
+
// ...
|
|
164
|
+
});
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## Transactions
|
|
168
|
+
|
|
169
|
+
```php
|
|
170
|
+
// Single connection
|
|
171
|
+
DB::transaction(function () use ($order, $items): void {
|
|
172
|
+
$order->save();
|
|
173
|
+
$order->items()->createMany($items);
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
// Explicit connection
|
|
177
|
+
DB::connection('tenant_database')->transaction(function () {
|
|
178
|
+
// Tenant-specific operations
|
|
179
|
+
});
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
## Multi-Connection Architecture
|
|
183
|
+
|
|
184
|
+
- Always specify `$connection` on models.
|
|
185
|
+
- Use explicit connection in migrations targeting specific databases.
|
|
186
|
+
- Transactions are per-connection — cross-connection requires manual begin/commit/rollback.
|
|
187
|
+
|
|
188
|
+
## Do NOT
|
|
189
|
+
|
|
190
|
+
- Use raw SQL with user input — always parameterize.
|
|
191
|
+
- Use `float` for money — use `decimal`.
|
|
192
|
+
- Use `get()` or `all()` on large tables without pagination.
|
|
193
|
+
- Run migrations without specifying connection in multi-DB project.
|
|
194
|
+
- Add indexes without checking existing ones — duplicates waste write performance.
|