@event4u/agent-config 1.19.0 → 1.20.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 (88) hide show
  1. package/.agent-src/commands/agent-handoff.md +14 -10
  2. package/.agent-src/commands/chat-history/import.md +170 -0
  3. package/.agent-src/commands/chat-history/learn.md +178 -0
  4. package/.agent-src/commands/chat-history/show.md +17 -18
  5. package/.agent-src/commands/chat-history.md +26 -25
  6. package/.agent-src/commands/council/default.md +4 -7
  7. package/.agent-src/commands/create-pr.md +28 -8
  8. package/.agent-src/commands/sync-gitignore.md +1 -1
  9. package/.agent-src/contexts/communication/rules-auto/skill-quality-mechanics.md +76 -0
  10. package/.agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +3 -3
  11. package/.agent-src/contexts/communication/rules-auto/user-interaction-mechanics.md +5 -12
  12. package/.agent-src/rules/direct-answers.md +10 -2
  13. package/.agent-src/rules/language-and-tone.md +37 -6
  14. package/.agent-src/rules/no-attribution-footers.md +48 -0
  15. package/.agent-src/rules/no-roadmap-references.md +1 -1
  16. package/.agent-src/rules/skill-quality.md +49 -0
  17. package/.agent-src/rules/user-interaction.md +21 -5
  18. package/.agent-src/skills/ai-council/SKILL.md +4 -5
  19. package/.agent-src/skills/dcf-modeling/SKILL.md +89 -0
  20. package/.agent-src/skills/funnel-analysis/SKILL.md +100 -0
  21. package/.agent-src/skills/md-language-check/SKILL.md +1 -1
  22. package/.agent-src/skills/okr-tree-modeling/SKILL.md +93 -0
  23. package/.agent-src/skills/rice-prioritization/SKILL.md +100 -0
  24. package/.agent-src/skills/subagent-orchestration/SKILL.md +34 -2
  25. package/.agent-src/skills/unit-economics-modeling/SKILL.md +104 -0
  26. package/.agent-src/skills/using-git-worktrees/SKILL.md +1 -0
  27. package/.agent-src/templates/agent-settings.md +5 -26
  28. package/.agent-src/templates/scripts/work_engine/hook_bootstrap.py +7 -5
  29. package/.agent-src/templates/scripts/work_engine/hooks/__init__.py +0 -4
  30. package/.agent-src/templates/scripts/work_engine/hooks/builtin/__init__.py +0 -4
  31. package/.agent-src/templates/scripts/work_engine/hooks/builtin/_chat_history_base.py +7 -51
  32. package/.agent-src/templates/scripts/work_engine/hooks/builtin/chat_history_append.py +1 -2
  33. package/.agent-src/templates/scripts/work_engine/hooks/builtin/chat_history_halt_append.py +1 -2
  34. package/.agent-src/templates/scripts/work_engine/hooks/builtin/memory_visibility.py +2 -3
  35. package/.agent-src/templates/skill.md +30 -1
  36. package/.claude-plugin/marketplace.json +8 -4
  37. package/AGENTS.md +44 -3
  38. package/CHANGELOG.md +111 -0
  39. package/README.md +6 -6
  40. package/config/agent-settings.template.yml +19 -13
  41. package/config/gitignore-block.txt +4 -4
  42. package/docs/architecture.md +3 -3
  43. package/docs/catalog.md +14 -12
  44. package/docs/contracts/adr-chat-history-split.md +10 -1
  45. package/docs/contracts/command-clusters.md +1 -1
  46. package/docs/contracts/cross-wing-handoff.md +133 -0
  47. package/docs/contracts/file-ownership-matrix.json +341 -126
  48. package/docs/contracts/hook-architecture-v1.md +8 -1
  49. package/docs/contracts/memory-visibility-v1.md +8 -24
  50. package/docs/customization.md +1 -1
  51. package/docs/getting-started.md +21 -29
  52. package/docs/guidelines/agent-infra/ask-when-uncertain-demos.md +1 -1
  53. package/docs/hook-payload-capture.md +221 -0
  54. package/docs/migrations/commands-1.15.0.md +17 -12
  55. package/docs/skills-catalog.md +5 -4
  56. package/llms.txt +4 -3
  57. package/package.json +1 -1
  58. package/scripts/agent-config +1 -1
  59. package/scripts/ai_council/_default_prices.py +4 -4
  60. package/scripts/ai_council/clients.py +1 -1
  61. package/scripts/ai_council/modes.py +3 -4
  62. package/scripts/ai_council/pricing.py +10 -9
  63. package/scripts/build_rule_trigger_matrix.py +1 -9
  64. package/scripts/chat_history.py +952 -596
  65. package/scripts/check_references.py +12 -2
  66. package/scripts/council_cli.py +54 -4
  67. package/scripts/hook_manifest.yaml +33 -0
  68. package/scripts/hooks/augment-chat-history.sh +10 -0
  69. package/scripts/hooks/cowork-dispatcher.sh +98 -0
  70. package/scripts/hooks/dispatch_hook.py +35 -0
  71. package/scripts/hooks_status.py +12 -1
  72. package/scripts/install-hooks.sh +2 -2
  73. package/scripts/install.sh +37 -0
  74. package/scripts/lint_handoffs.py +214 -0
  75. package/scripts/lint_hook_manifest.py +2 -1
  76. package/scripts/redact_hook_capture.py +148 -0
  77. package/scripts/schemas/skill.schema.json +5 -0
  78. package/scripts/skill_linter.py +163 -1
  79. package/scripts/update_prices.py +3 -3
  80. package/.agent-src/commands/chat-history/checkpoint.md +0 -126
  81. package/.agent-src/commands/chat-history/clear.md +0 -103
  82. package/.agent-src/commands/chat-history/resume.md +0 -183
  83. package/.agent-src/rules/chat-history-cadence.md +0 -143
  84. package/.agent-src/rules/chat-history-ownership.md +0 -124
  85. package/.agent-src/rules/chat-history-visibility.md +0 -97
  86. package/.agent-src/templates/scripts/work_engine/hooks/builtin/chat_history_heartbeat.py +0 -50
  87. package/.agent-src/templates/scripts/work_engine/hooks/builtin/chat_history_turn_check.py +0 -49
  88. package/scripts/check_phase_coupling.py +0 -148
@@ -1,148 +0,0 @@
1
- #!/usr/bin/env python3
2
- """Phase 6 → Phase 2B coupling guard (Phase 0.3.3).
3
-
4
- Re-runs the audit recorded in `agents/roadmaps/phase6-2b-coupling.md`
5
- on every CI run. Fails the build if any of the 13 Phase-2B target
6
- rules introduces a reference to one of the three Phase-6-owned rules
7
- (`chat-history-cadence`, `chat-history-ownership`,
8
- `chat-history-visibility`) — by rule name, `load_context:` entry, or
9
- body link / cite.
10
-
11
- Excluded from the coupling probe (separate infrastructure, not
12
- reshaped by Phase 6):
13
-
14
- - The CLI dispatcher subcommand `./agent-config chat-history:hook`
15
- and any other `chat-history:*` colon-suffix command surface.
16
-
17
- Exit codes: 0 = decoupling intact, 1 = coupling detected,
18
- 3 = internal error (target rule missing, unreadable file).
19
- """
20
-
21
- from __future__ import annotations
22
-
23
- import argparse
24
- import re
25
- import sys
26
- from pathlib import Path
27
-
28
- REPO_ROOT = Path(__file__).resolve().parents[1]
29
- SRC_RULES = REPO_ROOT / ".agent-src.uncompressed" / "rules"
30
- COMP_RULES = REPO_ROOT / ".agent-src" / "rules"
31
-
32
- # Phase 2B priority list — see road-to-structural-optimization.md § Phase 2 → 2B.
33
- TARGET_RULES: tuple[str, ...] = (
34
- "roadmap-progress-sync",
35
- "user-interaction",
36
- "augment-source-of-truth",
37
- "command-suggestion-policy",
38
- "artifact-engagement-recording",
39
- "review-routing-awareness",
40
- "autonomous-execution",
41
- "docs-sync",
42
- "cli-output-handling",
43
- "augment-portability",
44
- "ui-audit-gate",
45
- "skill-quality",
46
- "package-ci-checks",
47
- )
48
-
49
- # Phase 6 owns these three rule names. Match must be a *rule reference*,
50
- # not a *dispatcher reference* (chat-history:hook etc).
51
- PHASE6_RULES: tuple[str, ...] = (
52
- "chat-history-cadence",
53
- "chat-history-ownership",
54
- "chat-history-visibility",
55
- )
56
-
57
- # Rule-reference pattern: rule name not immediately followed by `:` (which
58
- # would mark it as a CLI subcommand like `chat-history:hook`). Allows
59
- # trailing word-boundary characters typical of Markdown / YAML contexts.
60
- _RULE_REF_RE = re.compile(
61
- r"\bchat-history-(?:cadence|ownership|visibility)\b(?!:)"
62
- )
63
-
64
-
65
- def _scan(file: Path) -> list[tuple[int, str]]:
66
- """Return [(line_no, line)] of rule-reference matches in `file`."""
67
- if not file.is_file():
68
- return []
69
- hits: list[tuple[int, str]] = []
70
- for i, line in enumerate(file.read_text(encoding="utf-8").splitlines(), 1):
71
- if _RULE_REF_RE.search(line):
72
- hits.append((i, line.strip()))
73
- return hits
74
-
75
-
76
- def _check_surface(label: str, base: Path) -> tuple[int, list[str]]:
77
- """Scan `base` for all 13 Phase-2B targets; return (#hits, formatted lines)."""
78
- if not base.is_dir():
79
- return 0, [f"❌ {label} dir missing: {base}"]
80
- out: list[str] = []
81
- total = 0
82
- for rule in TARGET_RULES:
83
- path = base / f"{rule}.md"
84
- if not path.is_file():
85
- return 0, [f"❌ target rule missing: {path}"]
86
- hits = _scan(path)
87
- if not hits:
88
- continue
89
- total += len(hits)
90
- for line_no, line in hits:
91
- out.append(f" {label}/{rule}.md:{line_no} {line}")
92
- return total, out
93
-
94
-
95
- def main() -> int:
96
- parser = argparse.ArgumentParser(description=__doc__)
97
- parser.add_argument(
98
- "--quiet",
99
- action="store_true",
100
- help="suppress the per-rule breakdown when no coupling found",
101
- )
102
- args = parser.parse_args()
103
-
104
- hits_src, lines_src = _check_surface("uncompressed", SRC_RULES)
105
- if any(line.startswith("❌") for line in lines_src):
106
- for line in lines_src:
107
- print(line, file=sys.stderr)
108
- return 3
109
- hits_comp, lines_comp = _check_surface("compressed", COMP_RULES)
110
- if any(line.startswith("❌") for line in lines_comp):
111
- for line in lines_comp:
112
- print(line, file=sys.stderr)
113
- return 3
114
-
115
- total = hits_src + hits_comp
116
-
117
- if total == 0:
118
- if not args.quiet:
119
- print(
120
- f"✅ Phase 6 → 2B decoupling intact: 0 rule-references "
121
- f"across {len(TARGET_RULES)} Phase-2B targets "
122
- f"(uncompressed + compressed surfaces)."
123
- )
124
- print(
125
- " probe: rule names, load_context: entries, body "
126
- "link/cite — dispatcher subcommand chat-history:hook "
127
- "excluded by design."
128
- )
129
- return 0
130
-
131
- print(
132
- f"❌ Phase 6 → 2B coupling detected: {total} rule-reference(s) "
133
- f"across Phase-2B targets:"
134
- )
135
- for line in lines_src + lines_comp:
136
- print(line)
137
- print(
138
- "\n Action: see agents/roadmaps/phase6-2b-coupling.md. "
139
- "Either drop the new reference, migrate it to the dispatcher "
140
- "(chat-history:hook), or trigger the >0-hits branch in 0.3.2 "
141
- "(Phase 6 ships call-signature contract before Phase 2B "
142
- "touches the coupled rule)."
143
- )
144
- return 1
145
-
146
-
147
- if __name__ == "__main__":
148
- sys.exit(main())