@event4u/agent-config 1.15.0 → 1.16.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.
Files changed (244) hide show
  1. package/.agent-src/commands/bug-fix.md +1 -1
  2. package/.agent-src/commands/bug-investigate.md +2 -2
  3. package/.agent-src/commands/chat-history-checkpoint.md +1 -1
  4. package/.agent-src/commands/chat-history-clear.md +1 -1
  5. package/.agent-src/commands/chat-history.md +1 -1
  6. package/.agent-src/commands/check-current-md.md +1 -1
  7. package/.agent-src/commands/council-design.md +96 -0
  8. package/.agent-src/commands/council-optimize.md +115 -0
  9. package/.agent-src/commands/council-pr.md +123 -0
  10. package/.agent-src/commands/council.md +219 -0
  11. package/.agent-src/commands/create-pr.md +23 -0
  12. package/.agent-src/commands/do-and-judge.md +3 -3
  13. package/.agent-src/commands/do-in-steps.md +4 -4
  14. package/.agent-src/commands/e2e-heal.md +1 -1
  15. package/.agent-src/commands/e2e-plan.md +1 -1
  16. package/.agent-src/commands/feature-dev.md +8 -0
  17. package/.agent-src/commands/feature-explore.md +6 -1
  18. package/.agent-src/commands/feature-plan.md +33 -2
  19. package/.agent-src/commands/feature-refactor.md +5 -0
  20. package/.agent-src/commands/feature-roadmap.md +6 -1
  21. package/.agent-src/commands/feature.md +58 -0
  22. package/.agent-src/commands/fix-ci.md +5 -0
  23. package/.agent-src/commands/fix-portability.md +5 -0
  24. package/.agent-src/commands/fix-pr-bot-comments.md +5 -0
  25. package/.agent-src/commands/fix-pr-comments.md +5 -0
  26. package/.agent-src/commands/fix-pr-developer-comments.md +5 -0
  27. package/.agent-src/commands/fix-references.md +5 -0
  28. package/.agent-src/commands/fix-seeder.md +5 -0
  29. package/.agent-src/commands/fix.md +60 -0
  30. package/.agent-src/commands/jira-ticket.md +1 -1
  31. package/.agent-src/commands/judge.md +1 -1
  32. package/.agent-src/commands/memory-add.md +3 -3
  33. package/.agent-src/commands/memory-full.md +2 -2
  34. package/.agent-src/commands/memory-promote.md +2 -2
  35. package/.agent-src/commands/mode.md +5 -5
  36. package/.agent-src/commands/onboard.md +3 -3
  37. package/.agent-src/commands/optimize-agents.md +6 -1
  38. package/.agent-src/commands/optimize-augmentignore.md +5 -0
  39. package/.agent-src/commands/optimize-rtk-filters.md +5 -0
  40. package/.agent-src/commands/optimize-skills.md +6 -1
  41. package/.agent-src/commands/optimize.md +54 -0
  42. package/.agent-src/commands/propose-memory.md +2 -2
  43. package/.agent-src/commands/review-changes.md +26 -1
  44. package/.agent-src/commands/review-routing.md +1 -1
  45. package/.agent-src/commands/roadmap-create.md +29 -2
  46. package/.agent-src/commands/set-cost-profile.md +3 -3
  47. package/.agent-src/commands/sync-agent-settings.md +2 -2
  48. package/.agent-src/commands/tests-create.md +1 -1
  49. package/.agent-src/commands/upstream-contribute.md +1 -1
  50. package/.agent-src/contexts/authority/commit-mechanics.md +57 -0
  51. package/.agent-src/contexts/authority/destructive-mechanics.md +66 -0
  52. package/.agent-src/contexts/authority/scope-mechanics.md +87 -0
  53. package/.agent-src/contexts/execution/autonomy-detection.md +54 -0
  54. package/.agent-src/contexts/execution/autonomy-examples.md +90 -0
  55. package/.agent-src/contexts/execution/autonomy-mechanics.md +29 -0
  56. package/.agent-src/contexts/execution/verification-mechanics.md +80 -0
  57. package/.agent-src/personas/README.md +1 -1
  58. package/.agent-src/rules/agent-authority.md +24 -0
  59. package/.agent-src/rules/architecture.md +1 -1
  60. package/.agent-src/rules/artifact-drafting-protocol.md +1 -1
  61. package/.agent-src/rules/artifact-engagement-recording.md +1 -1
  62. package/.agent-src/rules/ask-when-uncertain.md +1 -1
  63. package/.agent-src/rules/autonomous-execution.md +78 -114
  64. package/.agent-src/rules/capture-learnings.md +1 -1
  65. package/.agent-src/rules/chat-history-cadence.md +3 -3
  66. package/.agent-src/rules/chat-history-ownership.md +3 -3
  67. package/.agent-src/rules/chat-history-visibility.md +3 -3
  68. package/.agent-src/rules/{command-suggestion.md → command-suggestion-policy.md} +7 -7
  69. package/.agent-src/rules/commit-conventions.md +1 -1
  70. package/.agent-src/rules/commit-policy.md +14 -42
  71. package/.agent-src/rules/context-hygiene.md +3 -3
  72. package/.agent-src/rules/direct-answers.md +1 -1
  73. package/.agent-src/rules/docs-sync.md +1 -1
  74. package/.agent-src/rules/e2e-testing.md +1 -1
  75. package/.agent-src/rules/guidelines.md +4 -4
  76. package/.agent-src/rules/improve-before-implement.md +2 -2
  77. package/.agent-src/rules/language-and-tone.md +37 -96
  78. package/.agent-src/rules/minimal-safe-diff.md +3 -3
  79. package/.agent-src/rules/model-recommendation.md +4 -4
  80. package/.agent-src/rules/no-cheap-questions.md +89 -0
  81. package/.agent-src/rules/non-destructive-by-default.md +15 -49
  82. package/.agent-src/rules/onboarding-gate.md +5 -5
  83. package/.agent-src/rules/review-routing-awareness.md +9 -9
  84. package/.agent-src/rules/roadmap-progress-sync.md +26 -33
  85. package/.agent-src/rules/role-mode-adherence.md +2 -2
  86. package/.agent-src/rules/scope-control.md +65 -46
  87. package/.agent-src/rules/security-sensitive-stop.md +2 -2
  88. package/.agent-src/rules/size-enforcement.md +1 -1
  89. package/.agent-src/rules/think-before-action.md +5 -5
  90. package/.agent-src/rules/token-efficiency.md +4 -4
  91. package/.agent-src/rules/{ui-audit-before-build.md → ui-audit-gate.md} +3 -3
  92. package/.agent-src/rules/user-interaction.md +3 -3
  93. package/.agent-src/rules/verify-before-complete.md +12 -67
  94. package/.agent-src/scripts/update_roadmap_progress.py +9 -4
  95. package/.agent-src/skills/ai-council/SKILL.md +333 -0
  96. package/.agent-src/skills/api-endpoint/SKILL.md +2 -2
  97. package/.agent-src/skills/blade-ui/SKILL.md +1 -1
  98. package/.agent-src/skills/blast-radius-analyzer/SKILL.md +1 -1
  99. package/.agent-src/skills/bug-analyzer/SKILL.md +1 -1
  100. package/.agent-src/skills/command-routing/SKILL.md +1 -1
  101. package/.agent-src/skills/command-writing/SKILL.md +1 -1
  102. package/.agent-src/skills/conventional-commits-writing/SKILL.md +1 -1
  103. package/.agent-src/skills/copilot-agents-optimization/SKILL.md +2 -2
  104. package/.agent-src/skills/developer-like-execution/SKILL.md +2 -2
  105. package/.agent-src/skills/flux/SKILL.md +1 -1
  106. package/.agent-src/skills/git-workflow/SKILL.md +1 -1
  107. package/.agent-src/skills/guideline-writing/SKILL.md +11 -11
  108. package/.agent-src/skills/learning-to-rule-or-skill/SKILL.md +4 -4
  109. package/.agent-src/skills/livewire/SKILL.md +1 -1
  110. package/.agent-src/skills/override-management/SKILL.md +2 -2
  111. package/.agent-src/skills/php-coder/SKILL.md +1 -1
  112. package/.agent-src/skills/playwright-testing/SKILL.md +2 -2
  113. package/.agent-src/skills/readme-reviewer/SKILL.md +1 -1
  114. package/.agent-src/skills/readme-writing/SKILL.md +1 -1
  115. package/.agent-src/skills/readme-writing-package/SKILL.md +1 -1
  116. package/.agent-src/skills/receiving-code-review/SKILL.md +1 -1
  117. package/.agent-src/skills/review-routing/SKILL.md +2 -2
  118. package/.agent-src/skills/rule-writing/SKILL.md +1 -1
  119. package/.agent-src/skills/skill-reviewer/SKILL.md +1 -1
  120. package/.agent-src/skills/skill-writing/SKILL.md +3 -3
  121. package/.agent-src/skills/subagent-orchestration/SKILL.md +1 -0
  122. package/.agent-src/skills/systematic-debugging/SKILL.md +1 -1
  123. package/.agent-src/skills/upstream-contribute/SKILL.md +1 -1
  124. package/.agent-src/skills/validate-feature-fit/SKILL.md +2 -2
  125. package/.agent-src/skills/{verify-before-complete → verify-completion-evidence}/SKILL.md +2 -2
  126. package/.agent-src/templates/agent-settings.md +8 -8
  127. package/.agent-src/templates/contexts/auth-model.md +1 -1
  128. package/.agent-src/templates/scripts/README.md +2 -2
  129. package/.agent-src/templates/scripts/telemetry/aggregator.py +16 -1
  130. package/.agent-src/templates/scripts/telemetry/engagement.py +59 -0
  131. package/.agent-src/templates/scripts/telemetry/report_renderer.py +28 -1
  132. package/.agent-src/templates/scripts/telemetry_record.py +14 -1
  133. package/.claude-plugin/marketplace.json +10 -2
  134. package/AGENTS.md +11 -9
  135. package/CHANGELOG.md +123 -1
  136. package/README.md +28 -30
  137. package/config/agent-settings.template.yml +58 -1
  138. package/config/gitignore-block.txt +3 -0
  139. package/docs/architecture.md +4 -4
  140. package/docs/catalog.md +331 -0
  141. package/docs/contracts/STABILITY.md +39 -0
  142. package/docs/contracts/adr-command-suggestion.md +3 -3
  143. package/docs/contracts/adr-product-ui-track.md +2 -2
  144. package/docs/contracts/agent-memory-contract.md +2 -2
  145. package/docs/contracts/artifact-engagement-flow.md +1 -1
  146. package/docs/contracts/command-clusters.md +2 -2
  147. package/docs/contracts/command-suggestion-flow.md +3 -3
  148. package/docs/contracts/implement-ticket-flow.md +2 -2
  149. package/docs/contracts/linear-ai-rules-inclusion.md +1 -1
  150. package/docs/contracts/load-context-schema.md +186 -0
  151. package/docs/contracts/rule-interactions.yml +96 -0
  152. package/docs/contracts/rule-priority-hierarchy.md +87 -0
  153. package/docs/contracts/ui-track-flow.md +1 -1
  154. package/docs/customization.md +14 -0
  155. package/docs/end-to-end-walkthroughs.md +165 -0
  156. package/docs/getting-started.md +26 -8
  157. package/docs/github-topics.md +12 -3
  158. package/docs/guidelines/agent-infra/language-and-tone-examples.md +79 -0
  159. package/{.agent-src → docs}/guidelines/docs/readme-size-and-splitting.md +26 -25
  160. package/docs/guidelines/php/git.md +164 -0
  161. package/docs/migrations/commands-1.15.0.md +1 -1
  162. package/docs/showcase.md +9 -4
  163. package/docs/skills-catalog.md +14 -8
  164. package/docs/ui-track-mental-model.md +2 -2
  165. package/llms.txt +13 -7
  166. package/package.json +1 -1
  167. package/scripts/agent-config +23 -0
  168. package/scripts/ai_council/__init__.py +39 -0
  169. package/scripts/ai_council/_default_prices.py +41 -0
  170. package/scripts/ai_council/_one_off_rebalancing_audit.py +149 -0
  171. package/scripts/ai_council/_one_off_roundtrip.py +106 -0
  172. package/scripts/ai_council/budget_guard.py +172 -0
  173. package/scripts/ai_council/bundler.py +261 -0
  174. package/scripts/ai_council/clients.py +381 -0
  175. package/scripts/ai_council/modes.py +127 -0
  176. package/scripts/ai_council/orchestrator.py +350 -0
  177. package/scripts/ai_council/pricing.py +213 -0
  178. package/scripts/ai_council/project_context.py +159 -0
  179. package/scripts/ai_council/prompts.py +232 -0
  180. package/scripts/ai_council/session.py +144 -0
  181. package/scripts/check_always_budget.py +126 -0
  182. package/scripts/check_augmentignore.py +69 -0
  183. package/scripts/check_command_count_messaging.py +120 -0
  184. package/scripts/check_portability.py +55 -0
  185. package/scripts/check_public_catalog_links.py +122 -0
  186. package/scripts/check_references.py +4 -1
  187. package/scripts/check_roadmap_trackable.py +111 -0
  188. package/scripts/command_suggester/cooldown.py +1 -1
  189. package/scripts/generate_index.py +266 -0
  190. package/scripts/install_anthropic_key.sh +5 -0
  191. package/scripts/install_openai_key.sh +106 -0
  192. package/scripts/lint_load_context.py +163 -0
  193. package/scripts/schemas/command.schema.json +20 -0
  194. package/scripts/schemas/rule.schema.json +10 -0
  195. package/scripts/skill_linter.py +12 -4
  196. package/scripts/sync_agent_settings.py +1 -1
  197. package/scripts/update_counts.py +9 -4
  198. package/scripts/update_prices.py +124 -0
  199. package/.agent-src/guidelines/php/git.md +0 -96
  200. /package/.agent-src/rules/{slash-commands.md → slash-command-routing-policy.md} +0 -0
  201. /package/{.agent-src → docs}/guidelines/agent-infra/agent-interaction-and-decision-quality.md +0 -0
  202. /package/{.agent-src → docs}/guidelines/agent-infra/break-glass-usage.md +0 -0
  203. /package/{.agent-src → docs}/guidelines/agent-infra/developer-judgment.md +0 -0
  204. /package/{.agent-src → docs}/guidelines/agent-infra/engineering-memory-data-format.md +0 -0
  205. /package/{.agent-src → docs}/guidelines/agent-infra/layered-settings.md +0 -0
  206. /package/{.agent-src → docs}/guidelines/agent-infra/memory-access.md +0 -0
  207. /package/{.agent-src → docs}/guidelines/agent-infra/naming.md +0 -0
  208. /package/{.agent-src → docs}/guidelines/agent-infra/output-patterns.md +0 -0
  209. /package/{.agent-src → docs}/guidelines/agent-infra/review-routing-data-format.md +0 -0
  210. /package/{.agent-src → docs}/guidelines/agent-infra/role-contracts.md +0 -0
  211. /package/{.agent-src → docs}/guidelines/agent-infra/role-mode-router.md +0 -0
  212. /package/{.agent-src → docs}/guidelines/agent-infra/runtime-layer.md +0 -0
  213. /package/{.agent-src → docs}/guidelines/agent-infra/self-improvement-pipeline.md +0 -0
  214. /package/{.agent-src → docs}/guidelines/agent-infra/size-and-scope.md +0 -0
  215. /package/{.agent-src → docs}/guidelines/agent-infra/tool-integration.md +0 -0
  216. /package/{.agent-src → docs}/guidelines/e2e/playwright.md +0 -0
  217. /package/{.agent-src → docs}/guidelines/php/api-design.md +0 -0
  218. /package/{.agent-src → docs}/guidelines/php/artisan-commands.md +0 -0
  219. /package/{.agent-src → docs}/guidelines/php/blade-ui.md +0 -0
  220. /package/{.agent-src → docs}/guidelines/php/controllers.md +0 -0
  221. /package/{.agent-src → docs}/guidelines/php/database.md +0 -0
  222. /package/{.agent-src → docs}/guidelines/php/eloquent.md +0 -0
  223. /package/{.agent-src → docs}/guidelines/php/flux.md +0 -0
  224. /package/{.agent-src → docs}/guidelines/php/general.md +0 -0
  225. /package/{.agent-src → docs}/guidelines/php/jobs.md +0 -0
  226. /package/{.agent-src → docs}/guidelines/php/livewire.md +0 -0
  227. /package/{.agent-src → docs}/guidelines/php/logging.md +0 -0
  228. /package/{.agent-src → docs}/guidelines/php/naming.md +0 -0
  229. /package/{.agent-src → docs}/guidelines/php/patterns/dependency-injection.md +0 -0
  230. /package/{.agent-src → docs}/guidelines/php/patterns/dtos.md +0 -0
  231. /package/{.agent-src → docs}/guidelines/php/patterns/events.md +0 -0
  232. /package/{.agent-src → docs}/guidelines/php/patterns/factory.md +0 -0
  233. /package/{.agent-src → docs}/guidelines/php/patterns/pipelines.md +0 -0
  234. /package/{.agent-src → docs}/guidelines/php/patterns/policies.md +0 -0
  235. /package/{.agent-src → docs}/guidelines/php/patterns/repositories.md +0 -0
  236. /package/{.agent-src → docs}/guidelines/php/patterns/service-layer.md +0 -0
  237. /package/{.agent-src → docs}/guidelines/php/patterns/strategy.md +0 -0
  238. /package/{.agent-src → docs}/guidelines/php/patterns.md +0 -0
  239. /package/{.agent-src → docs}/guidelines/php/performance.md +0 -0
  240. /package/{.agent-src → docs}/guidelines/php/resources.md +0 -0
  241. /package/{.agent-src → docs}/guidelines/php/security.md +0 -0
  242. /package/{.agent-src → docs}/guidelines/php/sql.md +0 -0
  243. /package/{.agent-src → docs}/guidelines/php/validations.md +0 -0
  244. /package/{.agent-src → docs}/guidelines/php/websocket.md +0 -0
@@ -0,0 +1,124 @@
1
+ #!/usr/bin/env python3
2
+ """Refresh `.agent-prices.md` from the LiteLLM model-prices feed.
3
+
4
+ Source: https://raw.githubusercontent.com/BerriAI/litellm/main/
5
+ model_prices_and_context_window.json
6
+
7
+ Network failure or invalid response → fall back to
8
+ `scripts.ai_council._default_prices.DEFAULT_PRICES` so the file is
9
+ always written. Stdlib only; no extra dependency.
10
+
11
+ Usage:
12
+ python3 scripts/update_prices.py # writes .agent-prices.md
13
+ python3 scripts/update_prices.py --check # exit 1 if file is stale
14
+ """
15
+
16
+ from __future__ import annotations
17
+
18
+ import argparse
19
+ import datetime as _dt
20
+ import json
21
+ import sys
22
+ import urllib.error
23
+ import urllib.request
24
+ from pathlib import Path
25
+
26
+ REPO_ROOT = Path(__file__).resolve().parents[1]
27
+ sys.path.insert(0, str(REPO_ROOT))
28
+
29
+ from scripts.ai_council._default_prices import DEFAULT_PRICES, as_rows # noqa: E402
30
+ from scripts.ai_council.pricing import ( # noqa: E402
31
+ PRICES_FILE,
32
+ _render_markdown,
33
+ is_stale,
34
+ load_prices,
35
+ )
36
+
37
+ LITELLM_URL = (
38
+ "https://raw.githubusercontent.com/BerriAI/litellm/main/"
39
+ "model_prices_and_context_window.json"
40
+ )
41
+ HTTP_TIMEOUT_SECONDS = 10
42
+
43
+ # Models we surface in the table. Anything not in this allow-list is
44
+ # dropped from the LiteLLM payload; users can add more by editing the
45
+ # Markdown file directly.
46
+ ALLOW_LIST: set[tuple[str, str]] = set(DEFAULT_PRICES.keys())
47
+
48
+
49
+ def _fetch_litellm() -> dict[str, dict[str, object]] | None:
50
+ try:
51
+ req = urllib.request.Request(LITELLM_URL, headers={"User-Agent": "agent-config"})
52
+ with urllib.request.urlopen(req, timeout=HTTP_TIMEOUT_SECONDS) as resp:
53
+ data = json.loads(resp.read().decode("utf-8"))
54
+ if not isinstance(data, dict):
55
+ return None
56
+ return data
57
+ except (urllib.error.URLError, TimeoutError, json.JSONDecodeError, OSError) as exc:
58
+ print(f"[update_prices] upstream unreachable: {exc}", file=sys.stderr)
59
+ return None
60
+
61
+
62
+ def _to_rows_from_litellm(payload: dict[str, dict[str, object]]) -> list[tuple[str, str, float, float]]:
63
+ """Translate LiteLLM keys into our (provider, model, input_per_1m, output_per_1m) tuples."""
64
+ rows: list[tuple[str, str, float, float]] = []
65
+ for key, entry in payload.items():
66
+ if not isinstance(entry, dict):
67
+ continue
68
+ provider = str(entry.get("litellm_provider", "")).lower()
69
+ # LiteLLM keys are sometimes "provider/model"; strip the prefix.
70
+ model = key.split("/", 1)[1] if "/" in key else key
71
+ if (provider, model) not in ALLOW_LIST:
72
+ continue
73
+ in_cost = entry.get("input_cost_per_token")
74
+ out_cost = entry.get("output_cost_per_token")
75
+ if not isinstance(in_cost, (int, float)) or not isinstance(out_cost, (int, float)):
76
+ continue
77
+ # LiteLLM ships per-token USD; convert to per-1M.
78
+ rows.append((provider, model, float(in_cost) * 1_000_000, float(out_cost) * 1_000_000))
79
+ rows.sort()
80
+ return rows
81
+
82
+
83
+ def refresh(path: Path = PRICES_FILE) -> str:
84
+ """Write a fresh `.agent-prices.md`. Returns the source label used."""
85
+ payload = _fetch_litellm()
86
+ if payload is not None:
87
+ rows = _to_rows_from_litellm(payload)
88
+ if rows:
89
+ today = _dt.datetime.now(_dt.timezone.utc).date().isoformat()
90
+ path.write_text(_render_markdown(today, "litellm-github", rows), encoding="utf-8")
91
+ return "litellm-github"
92
+ # Network or filter failed → shipped defaults.
93
+ today = _dt.datetime.now(_dt.timezone.utc).date().isoformat()
94
+ path.write_text(_render_markdown(today, "shipped-default", as_rows()), encoding="utf-8")
95
+ return "shipped-default"
96
+
97
+
98
+ def _cmd_check(path: Path) -> int:
99
+ if not path.exists():
100
+ print(f"[update_prices] {path} missing — run `python3 scripts/update_prices.py`")
101
+ return 1
102
+ table = load_prices(path)
103
+ if is_stale(table):
104
+ print(f"[update_prices] {path} stale (last_updated={table.last_updated})")
105
+ return 1
106
+ print(f"[update_prices] {path} fresh (last_updated={table.last_updated})")
107
+ return 0
108
+
109
+
110
+ def main() -> int:
111
+ parser = argparse.ArgumentParser(description=__doc__)
112
+ parser.add_argument("--check", action="store_true", help="exit 1 if stale")
113
+ parser.add_argument("--path", default=str(PRICES_FILE), help="override target path")
114
+ args = parser.parse_args()
115
+ target = Path(args.path)
116
+ if args.check:
117
+ return _cmd_check(target)
118
+ src = refresh(target)
119
+ print(f"[update_prices] wrote {target} (source={src})")
120
+ return 0
121
+
122
+
123
+ if __name__ == "__main__":
124
+ sys.exit(main())
@@ -1,96 +0,0 @@
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
- Types: `feat/`, `fix/`, `hotfix/`, `chore/`, `docs/`, `test/`
15
-
16
- ```
17
- feat/DEV-1234/user-notification-preferences
18
- fix/DEV-5678/null-pointer-in-import
19
- chore/refactor-agent-setup
20
- hotfix/DEV-999/critical-payment-bug
21
- ```
22
-
23
- ## Commit Messages
24
-
25
- See `commit-conventions` rule for base format. Key type selection:
26
-
27
- - `feat` — new capability. `fix` — bug/regression. `refactor` — structure only, NO behavior change.
28
- - `docs` — docs only. `test` — tests only. `ci` — CI/workflows. `chore` — maintenance/cleanup.
29
- - `perf` — performance. `build` — build tooling. `style` — formatting only.
30
-
31
- **Scope:** Jira ID or area name (`api`, `auth`, `skills`). Only add when it improves clarity.
32
-
33
- **Description:** Intent, not implementation. Imperative mood. Max 72 chars. No generic filler.
34
-
35
- **Breaking:** `!` after type/scope or `BREAKING CHANGE:` footer.
36
-
37
- ```
38
- feat(api)!: rename invoice status values
39
- refactor(auth)!: remove legacy session flow
40
- ```
41
-
42
- **Splitting:** Mixed concerns → split commits. Don't hide unrelated changes in one.
43
-
44
- ```
45
- refactor(skills): remove duplicate routing helpers
46
- ci(lint): add skill-lint workflow
47
- docs(readme): document new lint tasks
48
- ```
49
-
50
- **Squash merge titles:** Conventional Commit format, describe net effect, not every internal commit.
51
-
52
- ### Anti-patterns
53
-
54
- - `update stuff` / `fix bug` / `changes`
55
- - `refactor` for bug fixes, `chore` for behavior changes
56
- - Multiple unrelated concerns in one commit
57
-
58
- ### Decision checklist
59
-
60
- 1. Behavior changed? → `feat` or `fix`
61
- 2. Structure only? → `refactor`
62
- 3. Only docs/tests/CI? → `docs`/`test`/`ci`
63
- 4. Scope useful or noise?
64
- 5. Multiple commits hiding in one?
65
-
66
- ### Examples by area
67
-
68
- ```bash
69
- # Features
70
- feat(DEV-2133): send email to customer when product is shipped
71
-
72
- # Bug fixes
73
- fix(import): handle null values in equipment JSON
74
-
75
- # Refactoring
76
- refactor: extract user sync logic into dedicated service
77
-
78
- # Skills / Rules / Agent config
79
- refactor(skills): merge duplicate analysis skills
80
- feat(rules): add analysis routing quality gate
81
- fix(skills): restore concrete validation in skill reviewer
82
-
83
- # CI / Tooling
84
- ci(lint): add skill linter workflow
85
- feat(linter): detect pointer-only skills
86
-
87
- # Docs
88
- docs(roadmap): add phase 3 implementation plan
89
- docs(readme): clarify source-of-truth workflow
90
- ```
91
-
92
- ## Pull Requests
93
-
94
- - PR title: Conventional Commit format — `feat(DEV-1234): short description`
95
- - Fill PR template, link Jira ticket, ensure quality gates pass
96
-
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes