@event4u/agent-config 14.22.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 +333 -356
- 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 +48 -39
- 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 +9 -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 +13 -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 +36 -25
- 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/scripts/archive_completed_roadmaps.ts +106 -4
- 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-intelligence/SKILL.md +57 -1
- 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/git-workflow/references/push-closes-its-loop.md +9 -0
- 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 +60 -4
- 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/registry.js +1 -1
- package/dist/cli-delegate/archive_completed_roadmaps.js +52 -4
- package/dist/cli-delegate/check_update_banner.js +12 -1
- package/dist/cli-delegate/{chunk-TGIPZBCW.js → chunk-2KKXJW25.js} +22 -8
- package/dist/cli-delegate/{chunk-NLP54U3J.js → chunk-2XY7ILBT.js} +13 -1
- package/dist/cli-delegate/{chunk-4FS4WRXP.js → chunk-3FKR64R5.js} +34 -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-BIXEDQPZ.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 +24 -16
- 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 +4 -14
- 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 +27 -80
- 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 +9249 -8981
- package/dist/install/install.mjs +47 -8
- package/dist/mcp/registry-manifest.json +3 -3
- package/dist/mcp/server.json +2 -2
- package/dist/mcp/server.mjs +5496 -2400
- 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/_lib/lean_projection_mode.js +108 -0
- package/dist/scripts/_lib/router_match.js +243 -0
- package/dist/scripts/_lib/rule_injection.js +216 -0
- package/dist/scripts/condense.js +22 -25
- package/dist/scripts/project_thin_rules.js +139 -19
- package/dist/server/io/yamlIO.js +125 -17
- package/dist/server/schemas/settings.js +32 -5
- package/dist/shared/settingsSurface.js +6 -1
- package/docs/MIGRATION.md +56 -0
- package/docs/contracts/settings-classes.md +48 -7
- 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/notes-horizon-mechanics.md +90 -0
- 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/llms.txt +1 -1
- package/package.json +7 -3
- package/src/agent-src/scripts/archive_completed_roadmaps.ts +106 -4
- package/src/config/agent-settings.template.yml +94 -1
- package/src/config/ci-local-parity.yml +34 -0
- package/src/config/continuity-surface.json +8 -29
- package/src/config/evaluator-budgets.json +4 -4
- 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 +8 -7
- package/src/config/host-injection-effect.json +2 -2
- package/src/config/pack-size-budget.json +55 -4
- package/src/config/packed-binary-manifest.json +1 -1
- 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/routing-coverage-seed.json +9 -2
- package/src/config/rule-stub-ceilings.json +16 -9
- package/src/scripts/_cli/cmd_session_recycle.ts +2 -25
- package/src/scripts/_cli/cmd_settings_get.ts +22 -7
- package/src/scripts/_cli/handoff_sessions.ts +14 -44
- 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_slot.ts +295 -0
- package/src/scripts/_lib/continuity_writer.ts +312 -0
- 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/hook_settings.ts +85 -0
- package/src/scripts/_lib/lean_projection_mode.ts +127 -0
- package/src/scripts/_lib/obligation_frequency.ts +2 -3
- package/src/scripts/_lib/packed_binary_predicate.ts +37 -0
- package/src/scripts/_lib/platform_anchor.ts +1053 -0
- package/src/scripts/_lib/ratification_artifact.ts +278 -0
- package/src/scripts/_lib/recycle_envelope_paths.ts +109 -21
- package/src/scripts/_lib/regression_neighbourhood.ts +159 -22
- package/src/scripts/_lib/security_lint.ts +23 -2
- package/src/scripts/_lib/self_repair.ts +21 -0
- package/src/scripts/_lib/session_eol.ts +44 -0
- package/src/scripts/_lib/session_index_trust.ts +387 -0
- package/src/scripts/_lib/standing_bound_ratchet.ts +220 -0
- package/src/scripts/_lib/tolerance_shadow.ts +177 -0
- package/src/scripts/_lib/vendored_grammar_upstream.ts +280 -0
- package/src/scripts/ai_council/redact_low_impact_entry.ts +8 -0
- package/src/scripts/audit_mcp_tools.ts +69 -25
- package/src/scripts/autonomy_friction_traffic.ts +379 -0
- package/src/scripts/build_mcp_catalog.ts +24 -1
- package/src/scripts/check_host_tree_parity.ts +291 -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 +424 -7
- package/src/scripts/check_projected_rule_routes.ts +395 -0
- package/src/scripts/check_rule_projection_integrity.ts +102 -2
- package/src/scripts/ci_settle.ts +205 -5
- package/src/scripts/code_graph/build.ts +79 -0
- package/src/scripts/code_graph/cli.ts +264 -7
- package/src/scripts/code_graph/detect.ts +38 -0
- package/src/scripts/code_graph/query.ts +25 -2
- package/src/scripts/code_graph/sqlite_store.ts +16 -1
- package/src/scripts/code_graph/types.ts +52 -3
- package/src/scripts/code_graph/validate.ts +3 -1
- package/src/scripts/code_graph/verbs.ts +590 -0
- package/src/scripts/condense.ts +22 -26
- package/src/scripts/generate_host_cost_table.ts +354 -0
- package/src/scripts/handoff_context_hook.ts +39 -1
- package/src/scripts/hook_manifest.json +1 -1
- package/src/scripts/hook_manifest.yaml +59 -28
- package/src/scripts/hooks/block_speaking_inbox_dir.ts +182 -16
- package/src/scripts/hooks/category_a.ts +1 -1
- package/src/scripts/hooks/chain_nudge_hook.ts +311 -25
- package/src/scripts/hooks/code_graph_context_hook.ts +7 -18
- package/src/scripts/hooks/push_settle_hook.ts +3 -2
- package/src/scripts/hooks/rule_inject_hook.ts +107 -20
- package/src/scripts/hooks/session_eol_hook.ts +177 -145
- 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 +103 -408
- package/src/scripts/lint_evidence_artifacts.ts +1 -0
- package/src/scripts/lint_knowledge_scale.ts +0 -26
- package/src/scripts/lint_roadmap_blockers.ts +164 -1
- package/src/scripts/mcp_server/consumer_tool_catalog.json +152 -2
- package/src/scripts/mcp_server/graph_tools.ts +294 -0
- package/src/scripts/mcp_server/path_util.ts +31 -0
- package/src/scripts/mcp_server/tool_catalog_source.ts +7 -1
- package/src/scripts/mcp_server/tools.ts +3 -13
- package/src/scripts/memory_lookup.ts +9 -9
- package/src/scripts/model_rule_injection.ts +61 -4
- package/src/scripts/project_thin_rules.ts +149 -16
- package/src/scripts/report_standing_payload_by_host.ts +650 -0
- package/src/scripts/schemas/agent-settings.schema.json +7 -1
- package/src/scripts/session_memory_index.ts +86 -8
- package/src/scripts/sync_agent_settings.ts +270 -10
- package/src/server/io/yamlIO.ts +127 -17
- package/src/server/schemas/settings.ts +45 -6
- package/src/shared/settingsSurface.ts +13 -2
- package/src/templates/compact-instructions.md +8 -3
- package/src/vendor/grammars/README.md +27 -2
- package/dist/agent-src/commands/chat-history/import.md +0 -170
- package/dist/agent-src/commands/chat-history.md +0 -63
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
# Eloquent Model Guidelines
|
|
2
|
+
|
|
3
|
+
> Project-specific Eloquent conventions. Getter/setter pattern, casts, fillable, defaults.
|
|
4
|
+
|
|
5
|
+
**Related Skills:** `eloquent`, `database`, `migration-creator`
|
|
6
|
+
**Related Guidelines:** [patterns/repositories.md](patterns/repositories.md)
|
|
7
|
+
|
|
8
|
+
## Core Rules
|
|
9
|
+
|
|
10
|
+
- Add `$attributes` array for all columns with database defaults
|
|
11
|
+
- Use `$casts` for type casting (encrypted, arrays, enums, dates, booleans)
|
|
12
|
+
- Every model attribute MUST have a **getter** and a **fluent setter**
|
|
13
|
+
- Fluent setters: prefer `static` as return type (preserves subclass types). Use `self` when the class is `final` or when `self` is intentionally more precise.
|
|
14
|
+
|
|
15
|
+
## Getter/Setter Architecture
|
|
16
|
+
|
|
17
|
+
There are **two layers** — inside the model vs. outside the model. Never mix them up.
|
|
18
|
+
|
|
19
|
+
### Inside the model (implementing getters/setters)
|
|
20
|
+
|
|
21
|
+
**ALWAYS** use `getAttribute()` / `setAttribute()` — these are the Eloquent internals
|
|
22
|
+
that respect `$casts`, accessors, and mutators. **NEVER** use `$this->column_name`
|
|
23
|
+
magic property access inside the model — not for attributes, not for relationships.
|
|
24
|
+
|
|
25
|
+
**Cast the return value** when the attribute is NOT in `$casts`:
|
|
26
|
+
|
|
27
|
+
```php
|
|
28
|
+
// ✅ Good — getAttribute() with explicit cast (attribute NOT in $casts)
|
|
29
|
+
public function isActive(): bool
|
|
30
|
+
{
|
|
31
|
+
return (bool) $this->getAttribute('active');
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// user_id is not in $casts, so cast explicitly
|
|
35
|
+
public function getUserId(): ?int
|
|
36
|
+
{
|
|
37
|
+
$value = $this->getAttribute('user_id');
|
|
38
|
+
|
|
39
|
+
return null === $value ? null : (int) $value;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// ✅ Good — NO manual cast needed (attribute IS in $casts)
|
|
43
|
+
// protected $casts = ['is_paused' => 'boolean'];
|
|
44
|
+
public function isPaused(): bool
|
|
45
|
+
{
|
|
46
|
+
return $this->getAttribute('is_paused');
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// ❌ Bad — magic property access
|
|
50
|
+
public function isActive(): bool
|
|
51
|
+
{
|
|
52
|
+
return (bool) $this->active;
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Fluent setter pattern:
|
|
57
|
+
```php
|
|
58
|
+
public function setUserId(?int $userId): static
|
|
59
|
+
{
|
|
60
|
+
$this->setAttribute('user_id', $userId);
|
|
61
|
+
return $this;
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Outside the model (calling code: services, controllers, jobs, tests, etc.)
|
|
66
|
+
|
|
67
|
+
**Always use getters and setters. Never use `getAttribute()` / `setAttribute()` directly.**
|
|
68
|
+
|
|
69
|
+
```php
|
|
70
|
+
// ✅ Good — use getters/setters
|
|
71
|
+
$config->isPaused();
|
|
72
|
+
$config->setIsPaused(true)->save();
|
|
73
|
+
$name = $customer->getName();
|
|
74
|
+
|
|
75
|
+
// ❌ Bad — calling getAttribute/setAttribute from outside the model
|
|
76
|
+
$config->getAttribute('is_paused');
|
|
77
|
+
$config->setAttribute('is_paused', true)->save();
|
|
78
|
+
|
|
79
|
+
// ❌ Bad — direct property access
|
|
80
|
+
$config->is_paused;
|
|
81
|
+
$config->is_paused = true;
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
**Why:** Getters/setters provide type safety, IDE autocompletion, and a stable API.
|
|
85
|
+
If the underlying column changes, only the model internals need updating.
|
|
86
|
+
|
|
87
|
+
## Relationship Getters
|
|
88
|
+
|
|
89
|
+
Every relationship MUST have a **typed getter method** placed directly **above** the relationship method.
|
|
90
|
+
Outside the model, always use the getter — never access the magic property.
|
|
91
|
+
|
|
92
|
+
```php
|
|
93
|
+
// ✅ Good — getter uses getAttribute(), placed above the relationship method
|
|
94
|
+
public function getEquipment(): ?Equipment
|
|
95
|
+
{
|
|
96
|
+
return $this->getAttribute('equipment');
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
public function equipment(): BelongsTo
|
|
100
|
+
{
|
|
101
|
+
return $this->belongsTo(Equipment::class, 'item_id', 'item_id');
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// ✅ Good — calling code uses getter
|
|
105
|
+
$equipment = $repair->getEquipment();
|
|
106
|
+
|
|
107
|
+
// ❌ Bad — magic property inside getter
|
|
108
|
+
public function getEquipment(): ?Equipment
|
|
109
|
+
{
|
|
110
|
+
return $this->equipment; // NEVER do this
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// ❌ Bad — accessing magic property from outside the model
|
|
114
|
+
$equipment = $repair->equipment;
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
When checking if a relationship result exists, use `instanceof` instead of `null ===`:
|
|
118
|
+
|
|
119
|
+
```php
|
|
120
|
+
// ✅ Good — type-safe check
|
|
121
|
+
if (!$equipment instanceof Equipment) {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// ❌ Bad — less type-safe
|
|
126
|
+
if (null === $equipment) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## Observers over `booted()`
|
|
132
|
+
|
|
133
|
+
Do NOT use `booted()` / `boot()` for model lifecycle hooks (`saving`, `saved`, `deleted`, etc.).
|
|
134
|
+
Use a dedicated **Observer** class registered via the `#[ObservedBy]` attribute.
|
|
135
|
+
|
|
136
|
+
```php
|
|
137
|
+
// ✅ Good — Observer registered via attribute
|
|
138
|
+
#[ObservedBy([RepairObserver::class])]
|
|
139
|
+
class Repair extends Model { /* ... */ }
|
|
140
|
+
|
|
141
|
+
// ❌ Bad — lifecycle logic in booted()
|
|
142
|
+
class Repair extends Model
|
|
143
|
+
{
|
|
144
|
+
protected static function booted(): void
|
|
145
|
+
{
|
|
146
|
+
static::saving(static function (Repair $repair): void { /* ... */ });
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
**Why:** Observers keep models slim, make lifecycle logic testable and discoverable,
|
|
152
|
+
and follow the established project pattern (all other models use `#[ObservedBy]`).
|
|
153
|
+
|
|
154
|
+
## Default Attributes
|
|
155
|
+
|
|
156
|
+
```php
|
|
157
|
+
protected $attributes = [
|
|
158
|
+
'options' => [],
|
|
159
|
+
'default_role' => 'staff',
|
|
160
|
+
'verified' => false,
|
|
161
|
+
];
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### Expressive Setters
|
|
165
|
+
|
|
166
|
+
Prefer expressive method names over generic setters when they improve readability:
|
|
167
|
+
|
|
168
|
+
```php
|
|
169
|
+
// ✅ Better — intent is clear
|
|
170
|
+
$model->activate();
|
|
171
|
+
|
|
172
|
+
// 🆗 OK but less expressive
|
|
173
|
+
$model->setActive(true);
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
## Model Updates
|
|
177
|
+
|
|
178
|
+
Always use validated data — never `$request->all()`:
|
|
179
|
+
|
|
180
|
+
```php
|
|
181
|
+
// ✅ Good
|
|
182
|
+
$model->update($request->validated());
|
|
183
|
+
|
|
184
|
+
// ❌ Bad — passes unvalidated data
|
|
185
|
+
$model->update($request->all());
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
## Prefer Model Casts — No Redundant Manual Casting
|
|
189
|
+
|
|
190
|
+
When an attribute is defined in `$casts` (or `casts()` method), do **not** manually cast it again
|
|
191
|
+
in getters. The model already handles the conversion.
|
|
192
|
+
|
|
193
|
+
```php
|
|
194
|
+
// ✅ Good — no manual cast needed, model handles it
|
|
195
|
+
public function isPaused(): bool
|
|
196
|
+
{
|
|
197
|
+
return $this->getAttribute('is_paused');
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
// ❌ Bad — redundant (bool) cast when already in $casts
|
|
201
|
+
public function isPaused(): bool
|
|
202
|
+
{
|
|
203
|
+
return (bool) $this->getAttribute('is_paused');
|
|
204
|
+
}
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
This applies to all cast types: `boolean`, `integer`, `float`, `array`, `datetime`, enums, etc.
|
|
208
|
+
If the attribute is cast, trust the cast — do not re-cast in PHP.
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# Flux UI Guidelines
|
|
2
|
+
|
|
3
|
+
> Flux component conventions — usage, variants, forms, icons, Livewire integration.
|
|
4
|
+
|
|
5
|
+
**Related Skills:** `flux`, `livewire`, `blade-ui`
|
|
6
|
+
|
|
7
|
+
## Component Usage
|
|
8
|
+
|
|
9
|
+
- Use Flux components (`<flux:*>`) instead of raw HTML where a Flux equivalent exists.
|
|
10
|
+
- Follow the project's existing Flux usage patterns.
|
|
11
|
+
- Check Flux docs at https://fluxui.dev/docs for latest API.
|
|
12
|
+
|
|
13
|
+
## Common Components
|
|
14
|
+
|
|
15
|
+
```blade
|
|
16
|
+
{{-- Button --}}
|
|
17
|
+
<flux:button variant="primary">Save</flux:button>
|
|
18
|
+
<flux:button variant="danger" wire:click="delete">Delete</flux:button>
|
|
19
|
+
|
|
20
|
+
{{-- Input --}}
|
|
21
|
+
<flux:input wire:model="name" label="Name" placeholder="Enter name" />
|
|
22
|
+
|
|
23
|
+
{{-- Select --}}
|
|
24
|
+
<flux:select wire:model="status" label="Status">
|
|
25
|
+
<flux:option value="active">Active</flux:option>
|
|
26
|
+
<flux:option value="inactive">Inactive</flux:option>
|
|
27
|
+
</flux:select>
|
|
28
|
+
|
|
29
|
+
{{-- Modal --}}
|
|
30
|
+
<flux:modal name="confirm-delete">
|
|
31
|
+
<flux:heading>Delete item?</flux:heading>
|
|
32
|
+
<flux:text>This action cannot be undone.</flux:text>
|
|
33
|
+
<flux:button variant="danger" wire:click="delete">Confirm</flux:button>
|
|
34
|
+
</flux:modal>
|
|
35
|
+
|
|
36
|
+
{{-- Table --}}
|
|
37
|
+
<flux:table>
|
|
38
|
+
<flux:columns>
|
|
39
|
+
<flux:column>Name</flux:column>
|
|
40
|
+
</flux:columns>
|
|
41
|
+
<flux:rows>
|
|
42
|
+
@foreach($items as $item)
|
|
43
|
+
<flux:row :key="$item->id">
|
|
44
|
+
<flux:cell>{{ $item->name }}</flux:cell>
|
|
45
|
+
</flux:row>
|
|
46
|
+
@endforeach
|
|
47
|
+
</flux:rows>
|
|
48
|
+
</flux:table>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Variants and Styling
|
|
52
|
+
|
|
53
|
+
- Use `variant` prop: `primary`, `danger`, `ghost`, `subtle`, `outline`.
|
|
54
|
+
- Use `size` prop: `sm`, `base`, `lg`.
|
|
55
|
+
- Add custom Tailwind via `class` only when Flux doesn't cover the need.
|
|
56
|
+
- Don't override Flux's built-in styling with conflicting classes.
|
|
57
|
+
|
|
58
|
+
## Forms
|
|
59
|
+
|
|
60
|
+
- Use `<flux:input>`, `<flux:textarea>`, `<flux:select>`, `<flux:checkbox>`.
|
|
61
|
+
- Use `label` prop — Flux handles the `<label>` element.
|
|
62
|
+
- Use `wire:model` for Livewire binding.
|
|
63
|
+
- Flux components automatically display validation errors.
|
|
64
|
+
|
|
65
|
+
## Icons
|
|
66
|
+
|
|
67
|
+
- `<flux:icon name="heroicon-name" />` — Heroicons naming convention.
|
|
68
|
+
|
|
69
|
+
## Livewire Integration
|
|
70
|
+
|
|
71
|
+
- `wire:click`, `wire:submit`, `wire:model` work directly on Flux components.
|
|
72
|
+
- Modals: `$this->modal('name')->show()`.
|
|
73
|
+
|
|
74
|
+
## Do NOT
|
|
75
|
+
|
|
76
|
+
- Use raw `<button>`, `<input>`, `<select>` when Flux equivalent exists.
|
|
77
|
+
- Override Flux component styles globally — use variants or slots.
|
|
78
|
+
- Mix Flux with a different UI library in the same view.
|
|
79
|
+
- Skip `label` prop on form fields — accessibility matters.
|
|
80
|
+
- Add manual error rendering alongside Flux (it's built-in).
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
# PHP Guidelines
|
|
2
|
+
|
|
3
|
+
> PHP conventions and coding standards.
|
|
4
|
+
|
|
5
|
+
**Related Skills:** `php`, `php-coder`, `php-service`
|
|
6
|
+
**Related Rules:** `php-coding.md`
|
|
7
|
+
|
|
8
|
+
## Quick Reference
|
|
9
|
+
|
|
10
|
+
| Topic | Rule |
|
|
11
|
+
|-----------------|-------------------------------------------------------|
|
|
12
|
+
| Strict types | `declare(strict_types=1);` in every file |
|
|
13
|
+
| Variables | `camelCase` |
|
|
14
|
+
| Array keys | `snake_case` |
|
|
15
|
+
| Constants | `UPPER_SNAKE_CASE` |
|
|
16
|
+
| Strings | Single quotes (no interpolation), prefer concatenation (`.`), `sprintf()` only when complex |
|
|
17
|
+
| Comparisons | Always `===` / `!==`, Yoda style (`null === $var`) |
|
|
18
|
+
| Types | Explicit types for properties, parameters, returns |
|
|
19
|
+
|
|
20
|
+
## Naming
|
|
21
|
+
|
|
22
|
+
- Method names must be **expressive**, not declarative. No abbreviations.
|
|
23
|
+
- Boolean checks: `isValid()`, `hasPermission()` — not `valid()`, `check()`
|
|
24
|
+
- Retrieving: `getUser()`, `fetchUserData()` — not `user()`, `userData()`
|
|
25
|
+
- Actions: `sendEmail()`, `processPayment()` — not `email()`, `payment()`
|
|
26
|
+
|
|
27
|
+
## Variables
|
|
28
|
+
|
|
29
|
+
- **Don't assign single-use values to a variable** — pass the expression
|
|
30
|
+
directly to the call. Universal rule with carve-outs (side effects,
|
|
31
|
+
loops, debugger, type narrowing) lives in
|
|
32
|
+
[`code-clarity.md`](../code-clarity.md) § Don't assign single-use
|
|
33
|
+
values to a variable.
|
|
34
|
+
|
|
35
|
+
## Strings
|
|
36
|
+
|
|
37
|
+
- Single quotes when no interpolation: `$table = 'users';`
|
|
38
|
+
- Prefer concatenation with `.` operator: `'Hi ' . $name . '!'`
|
|
39
|
+
- Use `sprintf()` only when concatenation becomes unreadable (many placeholders, formatting): `sprintf('There are %d items in %s', $count, $location)`
|
|
40
|
+
|
|
41
|
+
## Control Structures
|
|
42
|
+
|
|
43
|
+
- **No one-liner IF** statements
|
|
44
|
+
- **Prefer early return** over `else` / nested `if`
|
|
45
|
+
- Ternary for short statements only
|
|
46
|
+
|
|
47
|
+
```php
|
|
48
|
+
// ✅ Early return
|
|
49
|
+
if (!$conditionA) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
// conditionA passed...
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Typed Properties
|
|
56
|
+
|
|
57
|
+
- Always use typed properties. Nullable with default `null`:
|
|
58
|
+
|
|
59
|
+
```php
|
|
60
|
+
// ✅ Good
|
|
61
|
+
public ?int $age = null;
|
|
62
|
+
|
|
63
|
+
// ❌ Bad
|
|
64
|
+
public int | null $age;
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Typed Arguments
|
|
68
|
+
|
|
69
|
+
- Prefer typed method arguments over arrays. Named arguments with spread for bulk:
|
|
70
|
+
|
|
71
|
+
```php
|
|
72
|
+
// ✅ Type-safe
|
|
73
|
+
public function createUser(int $id, string $name): void {}
|
|
74
|
+
|
|
75
|
+
// Call with array via spread
|
|
76
|
+
$data = ['id' => 1, 'name' => 'John'];
|
|
77
|
+
createUser(...$data);
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Comments and DocBlocks
|
|
81
|
+
|
|
82
|
+
A code comment earns its place only by stating a constraint the code
|
|
83
|
+
cannot show — a non-obvious invariant, a workaround for a known bug, a
|
|
84
|
+
hidden dependency. Never write comments that narrate ("added for X",
|
|
85
|
+
"this calls Y"), repeat the next line, or justify the change to the
|
|
86
|
+
reviewer. Full clause: [`code-clarity.md § Comment discipline`](../code-clarity.md#comment-discipline--state-a-constraint-not-a-narration).
|
|
87
|
+
|
|
88
|
+
DocBlocks:
|
|
89
|
+
|
|
90
|
+
- **Only** use DocBlocks to explain complex logic or when type hints are insufficient
|
|
91
|
+
- **Must** add DocBlock for iterable types: `@param array<int, MyObject> $items`
|
|
92
|
+
- Do NOT add DocBlocks that just repeat the type signature
|
|
93
|
+
|
|
94
|
+
## Arrays
|
|
95
|
+
|
|
96
|
+
- Short syntax only (`[]`, not `array()`)
|
|
97
|
+
- Trailing comma on each line
|
|
98
|
+
- Each item on a separate line
|
|
99
|
+
- Keys in `snake_case`
|
|
100
|
+
|
|
101
|
+
## Enums
|
|
102
|
+
|
|
103
|
+
- Cases must be **UPPERCASE**: `case MONDAY;`
|
|
104
|
+
- Use [backed enums](https://www.php.net/manual/en/language.enumerations.backed.php) for database values
|
|
105
|
+
|
|
106
|
+
## Operator Precedence — Always Use Parentheses
|
|
107
|
+
|
|
108
|
+
When mixing `?:` (ternary/elvis), `??` (null coalessce), or `.` (concatenation),
|
|
109
|
+
**always use explicit parentheses** to make the intended evaluation order unambiguous.
|
|
110
|
+
|
|
111
|
+
```php
|
|
112
|
+
// ❌ Bad — ambiguous: is it ($a ?: 'index ') . $i or $a ?: ('index ' . $i)?
|
|
113
|
+
$label = $a ?: 'index ' . $i;
|
|
114
|
+
|
|
115
|
+
// ✅ Good — explicit and unambiguous
|
|
116
|
+
$label = $a ?: ('index ' . $i);
|
|
117
|
+
|
|
118
|
+
// ❌ Bad — nested ternary/elvis without grouping
|
|
119
|
+
$value = $a ?: $b ?: $c . $d;
|
|
120
|
+
|
|
121
|
+
// ✅ Good
|
|
122
|
+
$value = $a ?: ($b ?: ($c . $d));
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
This applies to **any** combination of operators where precedence is not immediately obvious.
|
|
126
|
+
When in doubt, add parentheses — readability beats brevity.
|
|
127
|
+
|
|
128
|
+
## Performance Tips
|
|
129
|
+
|
|
130
|
+
### ❌ Avoid `array_merge()` in Loops
|
|
131
|
+
|
|
132
|
+
`array_merge()` inside a loop copies the entire array each iteration → **O(n²)**.
|
|
133
|
+
|
|
134
|
+
```php
|
|
135
|
+
// ❌ Bad — O(n²)
|
|
136
|
+
$all = [];
|
|
137
|
+
foreach ($pages as $page) {
|
|
138
|
+
$all = array_merge($all, $page->items());
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// ✅ Good — O(n)
|
|
142
|
+
$all = [];
|
|
143
|
+
foreach ($pages as $page) {
|
|
144
|
+
array_push($all, ...$page->items());
|
|
145
|
+
}
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
## Traits
|
|
149
|
+
|
|
150
|
+
- One `use` statement per line:
|
|
151
|
+
|
|
152
|
+
```php
|
|
153
|
+
// ✅ Good
|
|
154
|
+
use TraitA;
|
|
155
|
+
use TraitB;
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
## Interfaces
|
|
159
|
+
|
|
160
|
+
- Namespace: `App\Contracts` (grouped in subfolders)
|
|
161
|
+
- No `Interface` suffix: `SmsProvider`, not `SmsProviderInterface`
|
|
162
|
+
|
|
163
|
+
## Return Types — `static` vs `self`
|
|
164
|
+
|
|
165
|
+
- **Prefer `static`** for fluent methods (setters, builders, chainable methods) — it preserves the actual class type in subclasses.
|
|
166
|
+
- **Use `self`** when it is intentionally more precise — e.g., `final` classes, named constructors, or when you explicitly want to lock the return type to the declaring class.
|
|
167
|
+
- This is especially important for Eloquent models, DTOs, and any class that may be extended.
|
|
168
|
+
|
|
169
|
+
```php
|
|
170
|
+
// ✅ Preferred — preserves subclass type
|
|
171
|
+
public function setName(string $name): static
|
|
172
|
+
{
|
|
173
|
+
$this->name = $name;
|
|
174
|
+
return $this;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
// ✅ Also fine — class is final, self is more precise
|
|
178
|
+
final class Config
|
|
179
|
+
{
|
|
180
|
+
public function setName(string $name): self
|
|
181
|
+
{
|
|
182
|
+
$this->name = $name;
|
|
183
|
+
return $this;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
## Constructor Property Promotion
|
|
189
|
+
|
|
190
|
+
- Each property on a separate line, trailing comma on last property
|
|
191
|
+
- Preferred over manual assignment in constructor body
|
|
192
|
+
|
|
193
|
+
## JSON Handling
|
|
194
|
+
|
|
195
|
+
- **Always validate** — `json_decode()` with `JSON_THROW_ON_ERROR`, never silent failure.
|
|
196
|
+
- **Fix malformed JSON** — trailing commas, single quotes, unquoted keys. Clean before parsing.
|
|
197
|
+
- **Pretty-print** — `JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE` for readability.
|
|
198
|
+
- **Type safety** — decode to typed DTOs or interfaces, not untyped arrays/objects.
|
|
199
|
+
|
|
200
|
+
```php
|
|
201
|
+
// ✅ Safe JSON decoding
|
|
202
|
+
$data = json_decode($jsonString, true, 512, JSON_THROW_ON_ERROR);
|
|
203
|
+
|
|
204
|
+
// ❌ Silent failure
|
|
205
|
+
$data = json_decode($jsonString);
|
|
206
|
+
```
|
|
207
|
+
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
# Git & Version Control Guidelines
|
|
2
|
+
|
|
3
|
+
> Project-specific Git conventions. Branch naming, commit messages, PR workflow.
|
|
4
|
+
|
|
5
|
+
**Related Skills:** `git-workflow`, `conventional-commits-writing`
|
|
6
|
+
**Related Rules:** `commit-conventions.md`
|
|
7
|
+
|
|
8
|
+
## Branch Naming
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
{type}/{ticket-id}/{short-description}
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
| Type | When |
|
|
15
|
+
|---|---|
|
|
16
|
+
| `feat/` | New feature |
|
|
17
|
+
| `fix/` | Bug fix |
|
|
18
|
+
| `hotfix/` | Urgent production fix |
|
|
19
|
+
| `chore/` | Maintenance, refactoring, tooling |
|
|
20
|
+
| `docs/` | Documentation changes |
|
|
21
|
+
| `test/` | Test additions/changes |
|
|
22
|
+
|
|
23
|
+
### Examples
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
feat/DEV-1234/user-notification-preferences
|
|
27
|
+
fix/DEV-5678/null-pointer-in-import
|
|
28
|
+
chore/refactor-agent-setup
|
|
29
|
+
hotfix/DEV-999/critical-payment-bug
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Rules
|
|
33
|
+
|
|
34
|
+
- Always include the Jira ticket ID when one exists
|
|
35
|
+
- Use kebab-case for the description part
|
|
36
|
+
- Keep branch names short but descriptive
|
|
37
|
+
|
|
38
|
+
## Commit Messages
|
|
39
|
+
|
|
40
|
+
Follow [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/).
|
|
41
|
+
See `commit-conventions` rule for the base format and type table.
|
|
42
|
+
|
|
43
|
+
### Type selection rules
|
|
44
|
+
|
|
45
|
+
**`feat`** — a new capability is added; user or system can do something new.
|
|
46
|
+
|
|
47
|
+
**`fix`** — existing behavior was wrong; bug, regression, or broken edge case corrected.
|
|
48
|
+
|
|
49
|
+
**`refactor`** — structure changes, readability/maintainability improves, behavior unchanged.
|
|
50
|
+
Do NOT use `refactor` if behavior changes — use `feat` or `fix` instead.
|
|
51
|
+
|
|
52
|
+
**`docs`** — only documentation changes, no runtime or behavior change.
|
|
53
|
+
|
|
54
|
+
**`test`** — only tests added/updated, no production behavior changes.
|
|
55
|
+
|
|
56
|
+
**`ci`** — GitHub Actions, pipelines, CI checks, automation workflows, release jobs.
|
|
57
|
+
|
|
58
|
+
**`chore`** — maintenance, repo housekeeping, dependency bumps, non-functional cleanup
|
|
59
|
+
that is not better classified as `build`, `ci`, or `docs`.
|
|
60
|
+
|
|
61
|
+
**`perf`** — measurable performance improvement.
|
|
62
|
+
|
|
63
|
+
**`build`** — build tooling, packaging, Docker changes.
|
|
64
|
+
|
|
65
|
+
**`style`** — formatting only, no logic change (e.g. ECS/Rector auto-fixes).
|
|
66
|
+
|
|
67
|
+
### Scope guidance
|
|
68
|
+
|
|
69
|
+
Use a scope when it adds clarity. Good scopes:
|
|
70
|
+
|
|
71
|
+
- Jira ticket ID: `DEV-1234`
|
|
72
|
+
- Module/area: `api`, `auth`, `skills`, `rules`, `ci`, `frontend`, `linter`
|
|
73
|
+
|
|
74
|
+
Do not add a scope if it adds no value. `fix(core): fix typo` → just `fix: fix typo`.
|
|
75
|
+
|
|
76
|
+
### Description rules
|
|
77
|
+
|
|
78
|
+
- Describe **intent**, not implementation detail
|
|
79
|
+
- Describe **what changed**, not every low-level step
|
|
80
|
+
- Avoid generic wording: `update stuff`, `fix issue`, `changes`
|
|
81
|
+
|
|
82
|
+
Good: `fix(routes): preserve middleware order for api endpoints`
|
|
83
|
+
Bad: `fix: fix things`
|
|
84
|
+
|
|
85
|
+
### Breaking changes
|
|
86
|
+
|
|
87
|
+
Use `!` after type/scope or `BREAKING CHANGE:` in footer:
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
feat(api)!: rename invoice status values
|
|
91
|
+
refactor(auth)!: remove legacy session flow
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Commit splitting
|
|
95
|
+
|
|
96
|
+
If a change contains multiple unrelated concerns, split into multiple commits.
|
|
97
|
+
|
|
98
|
+
Bad: `refactor: cleanup skills and fix ci and update docs`
|
|
99
|
+
|
|
100
|
+
Better:
|
|
101
|
+
```
|
|
102
|
+
refactor(skills): remove duplicate routing helpers
|
|
103
|
+
ci(lint): add skill-lint workflow
|
|
104
|
+
docs(readme): document new lint tasks
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Squash merge titles
|
|
108
|
+
|
|
109
|
+
- Use Conventional Commit format
|
|
110
|
+
- Summarize the **net effect** of the PR
|
|
111
|
+
- Do not copy vague branch names
|
|
112
|
+
- Do not include issue noise if it hurts readability
|
|
113
|
+
|
|
114
|
+
### Examples by area
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
# Features
|
|
118
|
+
feat(DEV-2133): send email to customer when product is shipped
|
|
119
|
+
|
|
120
|
+
# Bug fixes
|
|
121
|
+
fix(import): handle null values in equipment JSON
|
|
122
|
+
|
|
123
|
+
# Refactoring
|
|
124
|
+
refactor: extract user sync logic into dedicated service
|
|
125
|
+
|
|
126
|
+
# Skills / Rules / Agent config
|
|
127
|
+
refactor(skills): merge duplicate analysis skills
|
|
128
|
+
feat(rules): add analysis routing quality gate
|
|
129
|
+
fix(skills): restore concrete validation in skill reviewer
|
|
130
|
+
|
|
131
|
+
# CI / Tooling
|
|
132
|
+
ci(lint): add skill linter workflow
|
|
133
|
+
feat(linter): detect pointer-only skills
|
|
134
|
+
|
|
135
|
+
# Docs
|
|
136
|
+
docs(roadmap): add phase 3 implementation plan
|
|
137
|
+
docs(readme): clarify source-of-truth workflow
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### Decision checklist
|
|
141
|
+
|
|
142
|
+
Before writing the commit message:
|
|
143
|
+
|
|
144
|
+
1. Did behavior change? → `feat` or `fix`
|
|
145
|
+
2. Was it only structure/cleanup? → `refactor`
|
|
146
|
+
3. Was it only docs, tests, or CI? → `docs`, `test`, `ci`
|
|
147
|
+
4. Is the scope useful or just noise?
|
|
148
|
+
5. Is this actually multiple commits hiding in one?
|
|
149
|
+
|
|
150
|
+
### Anti-patterns
|
|
151
|
+
|
|
152
|
+
- `update stuff` / `fix bug` / `changes` / `refactor everything`
|
|
153
|
+
- Using `chore` for meaningful behavior changes
|
|
154
|
+
- Using `refactor` for bug fixes
|
|
155
|
+
- Using one commit for multiple unrelated concerns
|
|
156
|
+
- Vague squash merge titles that don't describe the net effect
|
|
157
|
+
|
|
158
|
+
## Pull Requests
|
|
159
|
+
|
|
160
|
+
- PR title follows commit message format: `feat(DEV-1234): short description`
|
|
161
|
+
- Fill in the PR template (checklist, description, testing notes)
|
|
162
|
+
- Link the Jira ticket in the PR description
|
|
163
|
+
- Ensure all quality gates pass before requesting review
|
|
164
|
+
|