@r1z4x/tezgah 1.5.1 → 1.7.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/CHANGELOG.md +126 -1
- package/MANIFEST +11 -0
- package/README.md +6 -3
- package/bin/consult +13 -10
- package/bin/tezgah-docs +18 -16
- package/bin/tezgah-doctor +152 -0
- package/bin/tezgah-research +286 -12
- package/bin/tezgah-route +48 -1
- package/bin/tezgah-setup +27 -14
- package/bin/tezgah-task +771 -46
- package/bin/tezgah-taste +48 -10
- package/docs/architecture.md +7 -4
- package/docs/citations-baseline.json +1 -1
- package/docs/clarity-baseline.json +5 -5
- package/docs/contract.md +112 -25
- package/docs/evidence.md +201 -28
- package/docs/feature-audit.md +25 -4
- package/docs/gate.md +70 -33
- package/docs/glossary.md +4 -4
- package/docs/hosts.md +8 -8
- package/docs/index.json +30 -10
- package/docs/judge.md +9 -3
- package/docs/models.md +35 -2
- package/docs/operations.md +103 -3
- package/docs/research.md +392 -13
- package/docs/skills.md +24 -6
- package/docs/status-line.md +5 -5
- package/docs/testing.md +2 -2
- package/docs/vision.md +12 -4
- package/hooks/hooks.json +2 -2
- package/hooks/lang/en.json +323 -0
- package/hooks/lang/tr.json +344 -0
- package/hooks/projects-posttooluse.py +24 -5
- package/hooks/projects-pretooluse.py +9 -4
- package/hooks/projects-stop.py +28 -16
- package/hooks/tezgah_agents.py +29 -9
- package/hooks/tezgah_clarity.py +7 -3
- package/hooks/tezgah_components.py +2 -1
- package/hooks/tezgah_context.py +460 -390
- package/hooks/tezgah_gate.py +640 -104
- package/hooks/tezgah_integrity.py +1480 -197
- package/hooks/tezgah_models.py +337 -15
- package/hooks/tezgah_paths.py +103 -10
- package/hooks/tezgah_policy.py +286 -130
- package/hooks/tezgah_product.py +107 -0
- package/hooks/tezgah_rank.py +29 -27
- package/hooks/tezgah_replay.py +200 -30
- package/hooks/tezgah_research.py +1297 -12
- package/hooks/tezgah_skill_pick.py +58 -17
- package/hooks/tezgah_stopspec.py +7 -0
- package/hooks/tezgah_store.py +74 -27
- package/hooks/tezgah_task.py +917 -8
- package/hosts/codex/hook.py +9 -10
- package/hosts/cursor/hook.py +21 -14
- package/hosts/dsh/hooks.json +2 -2
- package/hosts/omp/hook.py +44 -23
- package/hosts/omp/tezgah-hook.ts.in +93 -7
- package/hosts/opencode/plugins/tezgah.js +119 -39
- package/output-styles/tezgah.md +76 -42
- package/package.json +1 -1
- package/skills/analyze-app/SKILL.md +57 -0
- package/skills/design-contract/EVALS.md +24 -1
- package/skills/design-contract/SKILL.md +17 -1
- package/skills/design-contract/data-views.md +86 -0
- package/skills/feature-audit/SKILL.md +32 -3
- package/skills/i-have-adhd/EVALS.md +22 -2
- package/skills/i-have-adhd/SKILL.md +12 -5
- package/skills/plan-add/EVALS.md +8 -8
- package/skills/plan-add/SKILL.md +22 -21
- package/skills/plan-sync/EVALS.md +2 -2
- package/skills/plan-sync/SKILL.md +14 -8
- package/skills/pm-frameworks/SKILL.md +6 -0
- package/skills/ponytail/EVALS.md +21 -2
- package/skills/ponytail/SKILL.md +4 -4
- package/skills/product-analysis/EVALS.md +23 -1
- package/skills/product-analysis/SKILL.md +50 -11
- package/skills/product-flow/EVALS.md +81 -0
- package/skills/product-flow/SKILL.md +91 -0
- package/skills/research/SKILL.md +99 -2
- package/skills/tezgah-contract/EVALS.md +52 -7
- package/skills/tezgah-contract/SKILL.md +204 -85
package/docs/vision.md
CHANGED
|
@@ -25,8 +25,10 @@ the workspace's own records; every number below names where it came from.
|
|
|
25
25
|
3. **One review per plan, two rounds, fanned out.** Reviewers read the plan's
|
|
26
26
|
whole diff once, in its verification phase. Round one spawns them together,
|
|
27
27
|
one per dimension. Only a confirmed critical or major finding opens round two,
|
|
28
|
-
and round two reads the fix's delta.
|
|
29
|
-
|
|
28
|
+
and round two reads the fix's delta. The session fixes a minor or suggestion
|
|
29
|
+
finding without a new round. The plan lists one fix-later only when it waits
|
|
30
|
+
on a user decision (KARAR). After round two the session fixes what is left,
|
|
31
|
+
or the plan lists it fix-later only with KARAR. `tezgah-task review` refuses a third
|
|
30
32
|
round (`hooks/tezgah_agents.py::_reviewer_body`, `bin/tezgah-task::cmd_review`).
|
|
31
33
|
(Measured: the old loop opened a round on any finding and ended only on a
|
|
32
34
|
clean round. It reviewed one finished plan round after round. In another plan,
|
|
@@ -46,10 +48,16 @@ the workspace's own records; every number below names where it came from.
|
|
|
46
48
|
| Tier | Command | Wall time |
|
|
47
49
|
|---|---|---|
|
|
48
50
|
| edit loop | `tests/impacted.py --run <changed paths>` | 0.1-95 s (integrity+gate: 18 modules, 93.8 s) |
|
|
49
|
-
| pre-commit | that set + compileall + ruff
|
|
50
|
-
|
|
|
51
|
+
| pre-commit | that set + compileall + ruff | +~5 s |
|
|
52
|
+
| merge step, once | `tests/impacted.py --all` + neuter + `tezgah-docs --citations` and `--clarity` + `render_table.py --acceptance --strict` + the two e2e scripts | 103.5 s for the suite (8 shards; 566.9 s serial), the rest not timed here |
|
|
51
53
|
| CI | the same, on the matrix in `.github/workflows/ci.yml` | unchanged |
|
|
52
54
|
|
|
55
|
+
Nothing in the merge-step row runs inside a turn (`AGENTS.md`, "Checks, by
|
|
56
|
+
tier", and `hooks/tezgah_policy.py::CORE`). The cut came from a replay of 522 turns
|
|
57
|
+
(the check-loop-cost research line, variant D). It kept 0.5958 of the in-turn
|
|
58
|
+
checks and lost no failure the status quo caught. A third of those failures
|
|
59
|
+
surface at the merge step or in CI instead of in the turn.
|
|
60
|
+
|
|
53
61
|
A path the map does not know runs everything (`tests/impacted.py::modules_for`): `tests/support.py`,
|
|
54
62
|
`hooks/tezgah_paths.py` and anything new. `tests/test_impacted.py` refuses a
|
|
55
63
|
change that would silently run nothing.
|
package/hooks/hooks.json
CHANGED
|
@@ -13,12 +13,12 @@
|
|
|
13
13
|
{ "hooks": [ { "type": "command", "command": "\"${TEZGAH_PYTHON:-python3}\" \"${CLAUDE_PLUGIN_ROOT}/hooks/projects-auto-init.py\"", "timeout": 10 } ] }
|
|
14
14
|
],
|
|
15
15
|
"PreToolUse": [
|
|
16
|
-
{ "matcher": "Agent|agent|Task|task|Grep|grep|Bash|bash|PowerShell|pwsh|Shell|shell|subagent|Edit|Write|MultiEdit|NotebookEdit", "hooks": [ { "type": "command", "command": "\"${TEZGAH_PYTHON:-python3}\" \"${CLAUDE_PLUGIN_ROOT}/hooks/projects-pretooluse.py\"", "timeout": 5 } ] },
|
|
16
|
+
{ "matcher": "Agent|agent|Task|task|Grep|grep|Bash|bash|PowerShell|pwsh|Shell|shell|subagent|Edit|Write|MultiEdit|NotebookEdit|AskUserQuestion", "hooks": [ { "type": "command", "command": "\"${TEZGAH_PYTHON:-python3}\" \"${CLAUDE_PLUGIN_ROOT}/hooks/projects-pretooluse.py\"", "timeout": 5 } ] },
|
|
17
17
|
{ "matcher": "^mcp__(?:.*[^A-Za-z0-9])?(?:append|cancel|clear|click|close|comment|commit|copy|create|delete|deploy|drag|edit|email|evaluate|exec|execute|fill|insert|install|kill|launch|merge|message|mkdir|move|navigate|notify|patch|pause|post|press|print|publish|push|put|release|remove|rename|replace|reply|resume|review|run|save|send|set|share|skip|start|stop|submit|swipe|tag|tap|terminate|type|uninstall|update|upload|write)(?:[^A-Za-z0-9].*)?$", "hooks": [ { "type": "command", "command": "\"${TEZGAH_PYTHON:-python3}\" \"${CLAUDE_PLUGIN_ROOT}/hooks/projects-pretooluse.py\"", "timeout": 5 } ] }
|
|
18
18
|
],
|
|
19
19
|
"PostToolUse": [
|
|
20
20
|
{ "matcher": "Edit|edit|Write|write|MultiEdit|NotebookEdit|Bash|bash|PowerShell|pwsh|str_replace_editor|WebFetch|WebSearch|web_fetch|web_search|fetch|mcp__.*", "hooks": [ { "type": "command", "command": "\"${TEZGAH_PYTHON:-python3}\" \"${CLAUDE_PLUGIN_ROOT}/hooks/projects-posttooluse.py\"", "timeout": 5 } ] },
|
|
21
|
-
{ "matcher": "Agent|Task|Skill", "hooks": [ { "type": "command", "command": "\"${TEZGAH_PYTHON:-python3}\" \"${CLAUDE_PLUGIN_ROOT}/hooks/projects-posttooluse.py\"", "timeout": 5 } ] }
|
|
21
|
+
{ "matcher": "Agent|Task|Skill|TodoWrite", "hooks": [ { "type": "command", "command": "\"${TEZGAH_PYTHON:-python3}\" \"${CLAUDE_PLUGIN_ROOT}/hooks/projects-posttooluse.py\"", "timeout": 5 } ] }
|
|
22
22
|
],
|
|
23
23
|
"PostToolUseFailure": [
|
|
24
24
|
{ "matcher": "Edit|edit|Write|write|MultiEdit|NotebookEdit|Bash|bash|PowerShell|pwsh|str_replace_editor|WebFetch|WebSearch|web_fetch|web_search|fetch|mcp__.*", "hooks": [ { "type": "command", "command": "\"${TEZGAH_PYTHON:-python3}\" \"${CLAUDE_PLUGIN_ROOT}/hooks/projects-posttooluse.py\"", "timeout": 5 } ] }
|
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "English",
|
|
3
|
+
"done": [
|
|
4
|
+
"done|complete[d]?|finished|implemented|fixed|shipped|landed|merged|wired up|wired into|all tests? pass|all checks? pass|(?:tests?|checks?|suite) (?:is |are )?(?:green|passing)|build (?:passes|is green)"
|
|
5
|
+
],
|
|
6
|
+
"verified": [
|
|
7
|
+
"tested|verified|i ran|ran the (?:tests?|suite|build|lint|checks?)"
|
|
8
|
+
],
|
|
9
|
+
"negated": [
|
|
10
|
+
"unverified|not verified|could ?n[o']t verify|verification (?:was )?skipped"
|
|
11
|
+
],
|
|
12
|
+
"admitted": [
|
|
13
|
+
"contradict|unsatisfiable|(?:can ?not|can't|can ?never|never) pass|impossible"
|
|
14
|
+
],
|
|
15
|
+
"sycophant": {
|
|
16
|
+
"interjection": [
|
|
17
|
+
"yes|ah|oh|hmm"
|
|
18
|
+
],
|
|
19
|
+
"opener": [
|
|
20
|
+
"you'?re (?:absolutely )?right|you are right|absolutely right|good catch|great catch|i didn'?t look closely|i should have checked|my mistake|my bad|sorry, i|great question|let me\\b|i['’]ll\\b|sure[!,.]|looking at your\\b"
|
|
21
|
+
]
|
|
22
|
+
},
|
|
23
|
+
"closer": [
|
|
24
|
+
"let me know if you need anything else|hope (?:this|that) helps|happy to clarify"
|
|
25
|
+
],
|
|
26
|
+
"next_action": [
|
|
27
|
+
"next (?:step|action|up)|next:"
|
|
28
|
+
],
|
|
29
|
+
"preamble": [
|
|
30
|
+
"here(?:'s| is| are)\\b|below\\b|the following\\b"
|
|
31
|
+
],
|
|
32
|
+
"markers": {
|
|
33
|
+
"letters": [],
|
|
34
|
+
"words": []
|
|
35
|
+
},
|
|
36
|
+
"negation_before": [
|
|
37
|
+
"\\bnot|n't|\\bnever"
|
|
38
|
+
],
|
|
39
|
+
"question_particle": [],
|
|
40
|
+
"question_end": [],
|
|
41
|
+
"clause_join": [
|
|
42
|
+
"so|and|but"
|
|
43
|
+
],
|
|
44
|
+
"external_state": [
|
|
45
|
+
"missing|absent|unpublished|exists?|not (?:published|released|found|there|listed|present)|published|released|deprecated|outdated|stale"
|
|
46
|
+
],
|
|
47
|
+
"external_ci_state": [
|
|
48
|
+
"green|red|passing|passes|passed|failing|fails|failed|behind|flaky"
|
|
49
|
+
],
|
|
50
|
+
"publish_state": [
|
|
51
|
+
"missing|absent|unpublished|exists?|published|released"
|
|
52
|
+
],
|
|
53
|
+
"residual_label": [
|
|
54
|
+
"open (?:items?|issues?|questions?|points?|work)|remaining\\b|what(?:'s| is) left|left to do|pending\\b|outstanding\\b|not (?:done|verified|tested|run|checked|covered|looked at)|unverified|untested|unresolved|still open|could(?:n't| not) (?:verify|check|run)|unable to|unchecked|to[ -]?do(?=\\s*(?:\\(|$))|next\\s+(?:steps?|up|actions?)\\b|next(?=\\s*(?:\\(|$))|out of scope|follow[- ]?ups?\\b|deferred|skipped|known (?:issues?|limitations?|bugs?|gaps?)|future (?:work|improvements?)|tech(?:nical)? debt|suggested improvements?|manual (?:verification|checks?|testing)|blockers?\\b|partially"
|
|
55
|
+
],
|
|
56
|
+
"residual_first": [],
|
|
57
|
+
"label_done": [
|
|
58
|
+
"resolved|addressed|closed"
|
|
59
|
+
],
|
|
60
|
+
"partial": [
|
|
61
|
+
"partially"
|
|
62
|
+
],
|
|
63
|
+
"nothing_left": [
|
|
64
|
+
"\\bnone|\\bnothing"
|
|
65
|
+
],
|
|
66
|
+
"nothing_lead": [
|
|
67
|
+
"no|none|nothing"
|
|
68
|
+
],
|
|
69
|
+
"empty_item": [
|
|
70
|
+
"none|nothing|n/a"
|
|
71
|
+
],
|
|
72
|
+
"blockers": {
|
|
73
|
+
"decision": {
|
|
74
|
+
"pattern": "DECISION"
|
|
75
|
+
},
|
|
76
|
+
"irreversible": {
|
|
77
|
+
"pattern": "IRREVERSIBLE"
|
|
78
|
+
},
|
|
79
|
+
"access": {
|
|
80
|
+
"pattern": "ACCESS"
|
|
81
|
+
},
|
|
82
|
+
"env": {
|
|
83
|
+
"pattern": "ENV(?:IRONMENTS?)?"
|
|
84
|
+
},
|
|
85
|
+
"said_not": [
|
|
86
|
+
"not\\b|none\\b|isn"
|
|
87
|
+
],
|
|
88
|
+
"tried_not": [],
|
|
89
|
+
"absent": []
|
|
90
|
+
},
|
|
91
|
+
"blocker_labels": [
|
|
92
|
+
"blocker"
|
|
93
|
+
],
|
|
94
|
+
"blockers_only": [
|
|
95
|
+
"blockers?"
|
|
96
|
+
],
|
|
97
|
+
"env_error": [
|
|
98
|
+
"not found|no such|cannot find|can'?t find|could not find|does(?:n'?t| not) exist|no module named|ModuleNotFound|not installed|not available|unavailable|missing|not set|ENOENT|\\b12[67]\\b|quota|limit exceeded|rate.?limit|\\b429\\b"
|
|
99
|
+
],
|
|
100
|
+
"access_error": [
|
|
101
|
+
"permission denied|access denied|not permitted|EACCES|\\b40[13]\\b|quota|limit exceeded|rate.?limit|\\b429\\b"
|
|
102
|
+
],
|
|
103
|
+
"spawn_words": [
|
|
104
|
+
"sub-?agent|\\bagent|provider|\\bmodel|spawn"
|
|
105
|
+
],
|
|
106
|
+
"was_exclude": [],
|
|
107
|
+
"was": [],
|
|
108
|
+
"now": [],
|
|
109
|
+
"future": [],
|
|
110
|
+
"word_order": "verb_first",
|
|
111
|
+
"ui_objects": [
|
|
112
|
+
"components?|ui|ux|css|layout|styles?|tokens?|themes?|buttons?|cards?|icons?|labels?|elements?|widgets?|containers?|headers?|footers?|sidebars?|toolbars?|navbars?|nav|menu|modals?|dialogs?|dropdowns?|popovers?|tooltips?|badges?|avatars?|spinners?|skeletons?|inputs?|fields?|forms?|headings?|images?|logos?|grids?|panels?|columns?|screens?|pages?|views?|dashboards?|viewport|tables?|app"
|
|
113
|
+
],
|
|
114
|
+
"ui_quality": [
|
|
115
|
+
"look\\w*|feels?\\w*|seems?\\w*|renders?\\w*"
|
|
116
|
+
],
|
|
117
|
+
"hints": {
|
|
118
|
+
"spec": [
|
|
119
|
+
"normal (user )?behaviou?r|clean ui|nicer|more intuitive|un?professional|polish(ed)?|improve the (ui|ux)|make it (better|usable|look)|look(s)? better",
|
|
120
|
+
"refactor\\w* (the |this |our )?(\\w+ ){0,2}(components?|ui|ux|css|layout|screens?|pages?|styles?|theme|forms?|fields?|inputs?|views?|widgets?|buttons?|modals?|dialogs?)|ui|ux|css|tailwind|layout|responsive|hover|focus[- ](?:state|ring|outline|visible|indicator|style)|spacing|typography|component\\w*|dark mode|dark theme|light theme",
|
|
121
|
+
{
|
|
122
|
+
"ui_ask": "theme\\w*"
|
|
123
|
+
},
|
|
124
|
+
"animations?|accessib\\w*|wireframe|mockup|align[- ]?(?:items|self|content)|text-align|alignment\\w*|misalign\\w*|padding",
|
|
125
|
+
{
|
|
126
|
+
"ui_ask": "cent(er|re)\\w*"
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"ui_ask": "margins?"
|
|
130
|
+
},
|
|
131
|
+
"gutter\\w*|line-?height|letter-?spacing|drop-?shadow|box-?shadow|border-?radius|corner radius|fonts?[- ](?:size|family|weight|face|stack|scale)\\w*|type ?scale|colou?r[- ](?:role|scheme|palette|token|contrast)|palette|cards?[- ](?:component\\w*|layout|grid|list|view|title|body|footer|header)|sidebars?|toolbars?|modals?|dialogs?|dropdowns?|popovers?|accordions?|tooltips?|toasts?|avatars?",
|
|
132
|
+
{
|
|
133
|
+
"ui_ask": "badges?"
|
|
134
|
+
},
|
|
135
|
+
"breadcrumbs?",
|
|
136
|
+
{
|
|
137
|
+
"ui_ask": "pagination"
|
|
138
|
+
},
|
|
139
|
+
"tab ?bar|steppers?|spinners?",
|
|
140
|
+
{
|
|
141
|
+
"ui_ask": "skeletons?"
|
|
142
|
+
},
|
|
143
|
+
"disabled\\w*|pressed|active state|selected state|empty state|breakpoints?\\w*|viewport|media quer\\w*|design (system|token|guide|library|language)\\w*|style guides?|wcag\\w*|a11y|aria-?\\w*|screen readers?|tab order|keyboard naviga\\w*|contrast (ratio|level|check|issue)|screenshots?|visual (review|regression|diff|check)|redesign\\w*|revamp\\w*|restyle\\w*|makeover",
|
|
144
|
+
{
|
|
145
|
+
"ui_ask": "cluttered"
|
|
146
|
+
},
|
|
147
|
+
"outdated|cohesive"
|
|
148
|
+
],
|
|
149
|
+
"consult": [
|
|
150
|
+
"architect(ure|ural)|root cause|migrat(e|ion)|deploy|security|trade-?off|which approach|design decision|irreversible|rollback|schema change|re-?architect\\w*|restructur\\w*|rewrite\\w*|(refactor\\w*|rewrite\\w*) (the |this |our )?(\\w+ ){0,2}(module|subsystem|service|system|layer|engine|architecture|data ?model|code ?base|ingest\\w*)|breaking change\\w*|backwards?[- ]incompatib\\w*|api version\\w*|version(ing)? the api|backfill\\w*|revert\\w*|rollback|performance budget|perf budget|latency budget|hot ?path|threat model\\w*|security review\\w*|cve\\b|concurren\\w*|race condition\\w*|deadlock\\w*|capacit\\w* (plan|budget|test|limit)\\w*|scal(e|ing) (plan|strategy|limit|test)\\w*|load test\\w*|adrs?\\b|architecture decision record\\w*|design doc\\w*|rollout"
|
|
151
|
+
],
|
|
152
|
+
"research": [
|
|
153
|
+
"research|literature|hypothes(is|es)|experiment(al)?|ablation|hyperparameter|benchmark|survey|paper|dataset|compar\\w*|(a/?b|ab) tests?|user interview\\w*|root[ -]?cause (analys|investigat)\\w*|reference review|lit(erature)?[ -]review|evaluat(e|ing) (whether|the (librar|technique|approach|tool|option|alternative))|measure(?! how (?:long|fast|much time)| the (?:time|duration|latency|speed|runtime))\\w*|post[ -]?mortem|error budget|incident (review|report)|is (this|that|it) (actually )?(true|right)|does (this|that) (claim )?hold"
|
|
154
|
+
],
|
|
155
|
+
"product": [
|
|
156
|
+
"product(?!ion|ivity|ive)\\w*|feature(?!s?[ -](?:flags?|toggles?|gates?|branch\\w*))\\w*|roadmap|backlog|prd|north star|jtbd|retention|churn|onboarding|cohort|funnel|conversion rate|pricing|prioriti[sz]\\w*|user research|user interview\\w*|ab test|a/b test|activations?\\b|churn(ed|ing|s)?|funnels?|cohorts?|drop-?off|roadmaps?|priorit(y|ies)|adoption|conversion (rate|funnel|drop\\w*)|packaging|monetiz\\w*|price\\w*|tier(?!s?[ -]lists?)\\w*|positioning|value proposition|\\bicp\\b|ideal customer profile|persona\\w*|segment(?!(?:ation)?[ -]faults?)\\w*|(customer|user|product|problem) discovery|opportunity (tree|solution|space|score)|\\bnps\\b|net promoter|\\bcsat\\b|satisfaction|(customer|user)[ -]?feedback\\w*|support ticket\\w*|competitor\\w*|competitive (analysis|landscape|teardown|benchmark)\\w*|wizard|crud|form (validation|field|error|label)|data table|step flow|search (dropdown|box)|form validation|user management|(admin|users?) (panel|screen|page|list)",
|
|
157
|
+
{
|
|
158
|
+
"ui_ask": "(?:admin|users?) table"
|
|
159
|
+
}
|
|
160
|
+
],
|
|
161
|
+
"graph": [
|
|
162
|
+
"who calls|callers?|call sites?|who uses|what breaks|blast radius|where is|where's|definition of|who invokes|impact (analysis|assessment|of (changing|renaming|removing|deleting|editing))|change impact|ripple effect|(who|what|anything)( else)? (depends on|uses)|dependents? of|dependenc(y|ies) (graph|direction|inversion|cycle)|layer (violation|boundar\\w*|direction)|layering|who imports|which (files|modules) import|call (graph|chain|path|tree|hierarchy)|transitive callers?|callers? of|usages? of|find usages|references? to|is \\w+ (still )?(used|referenced|called)|never called|dead code|unused (code|function|method|module|export|class|variable|import|param\\w*)|unreachable code|orphan(ed)? (module|file|code)|circular (import|dependenc\\w*)|(import|dependenc\\w*) cycle|cycle (between|detection)|(code|app|program|service|main|server|cli|boot) entry ?points?|boot (path|sequence|order)|startup (path|sequence|order)|how is (this|it|\\w+) wired|wired up|rename\\w*"
|
|
163
|
+
]
|
|
164
|
+
},
|
|
165
|
+
"fan_verbs": [
|
|
166
|
+
"fix|add|update|write|remove|delete|rename|move|refactor|document|bump|create|implement|migrate|replace"
|
|
167
|
+
],
|
|
168
|
+
"fan_join": [
|
|
169
|
+
"and"
|
|
170
|
+
],
|
|
171
|
+
"fan_ordinals": [
|
|
172
|
+
"first(?:ly)?",
|
|
173
|
+
"second(?:ly)?"
|
|
174
|
+
],
|
|
175
|
+
"fan_directives": [
|
|
176
|
+
"in parallel|sub-?agent\\w*|worktrees?|fan[- ]?out|orchestrat\\w*"
|
|
177
|
+
],
|
|
178
|
+
"data_ask": [
|
|
179
|
+
"(?:design|create|make|build|sketch|propose|need|want)\\w* (?:\\w+ ){0,4}(?:dashboard|charts?|visuali[sz]ation)|(?:metri[ck]s?|kpis?|data|sales|revenue) (?:\\w+ ){0,2}dashboard|(?:what|which) (?:\\w+ ){0,3}(?:metri[ck]s|kpis|charts?) (?:\\w+ ){0,3}(?:should|to|do|matter|would)|what should (?:\\w+ ){0,3}dashboard show|(?:choose|pick|define|track|design)(?:s|ing)? (?:\\w+ ){0,3}(?:metri[ck]s|kpis)|(?:metri[ck]s|kpis) (?:should|to|do|would) (?:\\w+ ){0,2}(?:track|measure|use|watch)|success metrics?|(?:suggest|recommend)\\w* (?:\\w+ ){0,3}charts?|visuali[sz]\\w* (?:\\w+ ){0,3}(?:data|numbers)|data visuali[sz]ation"
|
|
180
|
+
],
|
|
181
|
+
"code_sense": [
|
|
182
|
+
"\\w\\.(?:py|tsx?|jsx?|json|go|rs|ya?ml|sql|java|rb|css|html)\\b|\\b\\w+_\\w+\\b|/metrics\\b|\\bselect\\b.{0,200}?\\bfrom\\b",
|
|
183
|
+
"\\b(?:tables?|columns?|schema|sql|queries|query|bundle|webpack|vite|tests?|ci|counters?|registry|pipeline|backend|handlers?|structs?|endpoints?|exporters?|export\\w*|servers?|librar\\w*|packages?|modules?|database|index\\w*|middleware|debugger|data (?:structure|flow)s?|clipboard|spinner|threads?|commit|git|functions?|class|component|prop|hooks?|prometheus|grafana|kibana|statsd|opentelemetry|config\\w*|provision\\w*|api|routes?|snake_case)\\b"
|
|
184
|
+
],
|
|
185
|
+
"constraint": {
|
|
186
|
+
"dont": [
|
|
187
|
+
"(?:do not|don'?t|never)\\s+(?:touch|modify|edit|change|delete|remove|rename|push|commit|merge|deploy|publish|release)\\s+(?:(?:the|any|my|this|that|to|a|an)\\s+)?[`\\\"“]?(?P<obj>[\\w~@/-](?:[\\w./@~-]*[\\w@~/-])?)"
|
|
188
|
+
],
|
|
189
|
+
"ask": [
|
|
190
|
+
"ask\\s+(?:me\\s+)?(?:first\\s+)?before\\s+(?P<ask>\\w+)"
|
|
191
|
+
],
|
|
192
|
+
"grant": [
|
|
193
|
+
"without asking(?: me)?|no need to ask|(?:you have|you've got) my (?:approval|permission|go-ahead)|\\bi approve\\b|(?:you are|you're) (?:approved|cleared|authori[sz]ed) to|go ahead and (?:push|release|publish|tag|open)\\w*|don'?t ask (?:me )?(?:again|for (?:approval|permission))"
|
|
194
|
+
],
|
|
195
|
+
"lift": [
|
|
196
|
+
"ask (?:me )?(?:again|first from now on)|from now on,? ask (?:me )?(?:first|before)|(?:revoke|withdraw)\\w* (?:my |the )?(?:approval|permission|grant)"
|
|
197
|
+
],
|
|
198
|
+
"lift_outward": [
|
|
199
|
+
"(?:don'?t|do not|stop|hold off(?: on)?|never)\\s+(?:\\w+\\s+){0,2}?(?:push|release|publish|tag|deploy|open (?:a |the )?pr)\\w*"
|
|
200
|
+
],
|
|
201
|
+
"grant_not": [
|
|
202
|
+
"\\b(?:don'?t|do not|never|stop|didn'?t|did not|why did you)\\b"
|
|
203
|
+
],
|
|
204
|
+
"grant_not_verb": [],
|
|
205
|
+
"grant_not_soft": []
|
|
206
|
+
},
|
|
207
|
+
"ask": {
|
|
208
|
+
"process": [
|
|
209
|
+
"\\b(?:shall|should|can|may) i (?:now |just |also )?(?:proceed|continue|go on|go ahead|start|begin|keep going|move on|carry on|open (?:a|the) plan|commit|merge|run (?:the )?(?:tests?|checks?|suite))\\b|\\b(?:do you want|would you like|want) me to (?:now |also |just )?(?:proceed|continue|go on|go ahead|start|begin|keep going|move on|carry on|commit|merge|open (?:a|the) plan|run (?:the )?(?:tests?|checks?|suite))\\b|\\bwhich (?:one |step |item |part |task )?(?:first|next)\\b|\\bwhere (?:should i|do i|to) start\\b|\\b(?:ok|okay|ready) to (?:proceed|continue|go ahead|start)\\b"
|
|
210
|
+
],
|
|
211
|
+
"never_default": [
|
|
212
|
+
"force[- ]?push\\w*|--force\\b|rewrit\\w* (?:the )?history|reset --hard|\\bdelet\\w*|\\bdrop (?:the )?(?:table|database|volume)s?|unpublish\\w*|deprecat\\w*|production|\\bprod\\b|migrat\\w*|credential\\w*|password\\w*|secret\\w*|api key|\\baccount\\w*|e-?mail|send (?:it |this |them )?to\\b"
|
|
213
|
+
],
|
|
214
|
+
"spend": [
|
|
215
|
+
"spend\\w*|\\bpaid\\b|billing|\\bcost\\w*|\\bbudget\\w*|\\busd\\b|\\$\\s?\\d"
|
|
216
|
+
],
|
|
217
|
+
"default_mark": [
|
|
218
|
+
"recommend\\w*|\\bdefault\\b|i(?:'d| would) (?:pick|go with|choose)|\\bmy pick\\b"
|
|
219
|
+
],
|
|
220
|
+
"options": [
|
|
221
|
+
"\\bor\\b|\\boptions?\\b|\\balternatives?\\b|\\bvs\\.?(?=\\s)|\\s/\\s|\\b(?:a|1)\\)?\\s.+?,\\s*(?:b|2)\\)?\\s"
|
|
222
|
+
],
|
|
223
|
+
"cheap_answer": [
|
|
224
|
+
"yes|yep|yeah|ok(?:ay)?|sure|go(?: on| ahead)?|continue|proceed|do it|carry on|keep going|approved"
|
|
225
|
+
],
|
|
226
|
+
"outward": {
|
|
227
|
+
"push": "\\bpush\\w*",
|
|
228
|
+
"release": "\\brelease\\w*|\\btag(?:s|ged|ging)?\\b|version bump|bump the version",
|
|
229
|
+
"publish": "\\bpublish\\w*|\\bnpm\\b|homebrew|pypi",
|
|
230
|
+
"pr": "pull request|\\bprs?\\b"
|
|
231
|
+
}
|
|
232
|
+
},
|
|
233
|
+
"needle_stop": [
|
|
234
|
+
"while",
|
|
235
|
+
"in",
|
|
236
|
+
"on",
|
|
237
|
+
"at",
|
|
238
|
+
"without",
|
|
239
|
+
"until",
|
|
240
|
+
"unless",
|
|
241
|
+
"and",
|
|
242
|
+
"or",
|
|
243
|
+
"for",
|
|
244
|
+
"to",
|
|
245
|
+
"with",
|
|
246
|
+
"before",
|
|
247
|
+
"after",
|
|
248
|
+
"from",
|
|
249
|
+
"into",
|
|
250
|
+
"of",
|
|
251
|
+
"but"
|
|
252
|
+
],
|
|
253
|
+
"rank_stopwords": [
|
|
254
|
+
"the",
|
|
255
|
+
"and",
|
|
256
|
+
"that",
|
|
257
|
+
"this",
|
|
258
|
+
"with",
|
|
259
|
+
"for",
|
|
260
|
+
"from",
|
|
261
|
+
"are",
|
|
262
|
+
"was",
|
|
263
|
+
"were",
|
|
264
|
+
"not",
|
|
265
|
+
"but",
|
|
266
|
+
"its",
|
|
267
|
+
"into",
|
|
268
|
+
"than",
|
|
269
|
+
"then",
|
|
270
|
+
"they",
|
|
271
|
+
"them",
|
|
272
|
+
"their",
|
|
273
|
+
"have",
|
|
274
|
+
"has",
|
|
275
|
+
"had",
|
|
276
|
+
"will",
|
|
277
|
+
"would",
|
|
278
|
+
"can",
|
|
279
|
+
"could",
|
|
280
|
+
"should",
|
|
281
|
+
"you",
|
|
282
|
+
"your",
|
|
283
|
+
"what",
|
|
284
|
+
"when",
|
|
285
|
+
"which",
|
|
286
|
+
"who",
|
|
287
|
+
"how",
|
|
288
|
+
"all",
|
|
289
|
+
"any",
|
|
290
|
+
"out"
|
|
291
|
+
],
|
|
292
|
+
"fold": [],
|
|
293
|
+
"say": {
|
|
294
|
+
"unverified": "unverified",
|
|
295
|
+
"reply_lang": "English",
|
|
296
|
+
"reply_in": "in English, even when the user\nwrites another language",
|
|
297
|
+
"reply_split": "in English, even when the user writes another language",
|
|
298
|
+
"reply_short": "reply English",
|
|
299
|
+
"gap_example": "\"I did not verify this before the deploy; this is how I weighed the risk: ...\"",
|
|
300
|
+
"blocker_tokens": "DECISION, ACCESS, IRREVERSIBLE, ENV",
|
|
301
|
+
"agree_word": "\"you're right\"",
|
|
302
|
+
"opener_short": "\"you're right\", \"good catch\", \"I didn't look closely\"",
|
|
303
|
+
"decision_gloss": "",
|
|
304
|
+
"access_gloss": "",
|
|
305
|
+
"irreversible_gloss": "",
|
|
306
|
+
"env_gloss": "",
|
|
307
|
+
"blockers_heading": "Blockers",
|
|
308
|
+
"decision": "DECISION",
|
|
309
|
+
"access": "ACCESS",
|
|
310
|
+
"irreversible": "IRREVERSIBLE",
|
|
311
|
+
"env": "ENV",
|
|
312
|
+
"done_claim": "done",
|
|
313
|
+
"opener_examples": "\"you're right\", \"absolutely right\", \"good catch\", \"I didn't look closely\", \"I should have checked\"",
|
|
314
|
+
"opener_ban": "never \"you're right\" / \"I didn't look closely\" / an apology",
|
|
315
|
+
"residual_lead": "",
|
|
316
|
+
"slice_lead": "",
|
|
317
|
+
"ready_lead": "",
|
|
318
|
+
"ask_lead": "",
|
|
319
|
+
"approval_heading": "Approval questions",
|
|
320
|
+
"recommended": "Recommended",
|
|
321
|
+
"grant_examples": "\"push without asking\", \"I approve\""
|
|
322
|
+
}
|
|
323
|
+
}
|