@erclx/aitk 3.10.0 → 3.11.1
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/claude/.claude-plugin/plugin.json +1 -1
- package/claude/skills/claude-address-review/SKILL.md +10 -0
- package/claude/skills/claude-markdown-propose/REQUIREMENT.md +48 -0
- package/claude/skills/claude-markdown-propose/SKILL.md +118 -0
- package/claude/skills/claude-markdown-propose/references/format.md +107 -0
- package/claude/skills/claude-orchestrate/references/orchestrator-poll.md +4 -1
- package/claude/skills/claude-orchestrate/scripts/poll.sh +59 -13
- package/claude/skills/claude-pr-review/SKILL.md +4 -2
- package/claude/skills/claude-teach/SKILL.md +1 -1
- package/claude/skills/claude-worktree/SKILL.md +1 -1
- package/claude/skills/create-snippet/SKILL.md +1 -1
- package/claude/skills/git-branch/SKILL.md +1 -1
- package/claude/skills/git-commit/SKILL.md +1 -1
- package/claude/skills/git-issue/SKILL.md +2 -2
- package/claude/skills/git-pr/SKILL.md +5 -5
- package/claude/skills/git-split/SKILL.md +2 -2
- package/claude/skills/git-stage/SKILL.md +1 -1
- package/docs/agents/audits.md +2 -2
- package/docs/agents/records.md +1 -1
- package/docs/agents/teach.md +1 -1
- package/docs/ai-workflow.md +7 -6
- package/package.json +1 -1
- package/scripts/core/check-skill-paths.sh +1 -2
- package/scripts/core/verify.sh +0 -5
- package/src/audits/catalog.ts +20 -0
- package/src/claude/skills-audit.ts +7 -0
- package/src/commands/claude.ts +20 -6
- package/src/commands/comments.ts +6 -0
- package/src/commands/context.ts +32 -7
- package/src/commands/gov.ts +2 -2
- package/src/commands/markdown.ts +18 -2
- package/src/context/audit.ts +16 -0
- package/src/gov/test-order.ts +31 -7
- package/src/markdown/files.ts +10 -0
- package/src/records/backup.ts +1 -0
- package/src/records/validate.ts +1 -3
- package/{claude/skills/git-split/references → standards}/branch.md +0 -1
- package/{claude/skills/git-commit/references → standards}/commit.md +0 -1
- package/{claude/skills/claude-teach/references → standards}/glossary.md +0 -1
- package/standards/index.md +6 -0
- package/standards/{bundled/issue.md → issue.md} +0 -1
- package/standards/{bundled/pr.md → pr.md} +0 -1
- package/standards/{bundled/snippets.md → snippets.md} +0 -1
- package/claude/skills/claude-worktree/references/branch.md +0 -60
- package/claude/skills/create-snippet/references/snippets.md +0 -78
- package/claude/skills/git-branch/references/branch.md +0 -60
- package/claude/skills/git-issue/references/issue.md +0 -95
- package/claude/skills/git-pr/references/branch.md +0 -60
- package/claude/skills/git-pr/references/pr.md +0 -139
- package/claude/skills/git-split/references/pr.md +0 -139
- package/claude/skills/git-stage/references/commit.md +0 -73
- package/scripts/core/regen-skill-references.sh +0 -27
- package/standards/bundled/branch.md +0 -60
- package/standards/bundled/commit.md +0 -73
- package/standards/bundled/glossary.md +0 -76
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Branch reference
|
|
3
|
-
description: Branch naming format and type conventions
|
|
4
|
-
consumers: git-branch, git-split, git-pr, claude-worktree
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Branch reference
|
|
8
|
-
|
|
9
|
-
## Scope
|
|
10
|
-
|
|
11
|
-
Governs a git branch name: its structure, its length, and the type vocabulary it draws from.
|
|
12
|
-
|
|
13
|
-
Does not govern:
|
|
14
|
-
|
|
15
|
-
- Commit subject format, which shares the type vocabulary: `commit.md`
|
|
16
|
-
- Pull request title and body: `pr.md`
|
|
17
|
-
- Whether a phase label may appear in a branch name: `versioning.md`
|
|
18
|
-
- Deriving a slug from a branch name for use in an output filename: `slug.md`
|
|
19
|
-
|
|
20
|
-
## Format
|
|
21
|
-
|
|
22
|
-
- Structure: `<type>/<description>` or `<type>/<ticket>-<description>`
|
|
23
|
-
- Length: 50 characters maximum
|
|
24
|
-
- Casing: kebab-case only, no underscores or camelCase
|
|
25
|
-
- Description: 2 words maximum, 3 only when genuinely needed for specificity
|
|
26
|
-
- Capture the core change, not the commit message verbatim
|
|
27
|
-
- For branches with multiple commits, use the unifying concern as the description.
|
|
28
|
-
- Do not duplicate type in description (e.g., `feat/feature-login`)
|
|
29
|
-
|
|
30
|
-
## Types
|
|
31
|
-
|
|
32
|
-
- `feat`: new feature or capability
|
|
33
|
-
- `fix`: bug fix
|
|
34
|
-
- `refactor`: structural changes (not a fix or feature)
|
|
35
|
-
- `docs`: documentation only (README)
|
|
36
|
-
- `chore`: maintenance tasks (deps, tooling, configs)
|
|
37
|
-
- `perf`: performance improvements
|
|
38
|
-
- `test`: add or modify tests
|
|
39
|
-
- `style`: code formatting (whitespace, semicolons)
|
|
40
|
-
- `build`: build system changes (webpack, npm scripts)
|
|
41
|
-
- `ci`: CI/CD pipeline changes (GitHub Actions)
|
|
42
|
-
- `revert`: revert a previous commit
|
|
43
|
-
|
|
44
|
-
## Examples
|
|
45
|
-
|
|
46
|
-
### Correct
|
|
47
|
-
|
|
48
|
-
```plaintext
|
|
49
|
-
feat/jwt-expiration # clear feature scope
|
|
50
|
-
fix/AUTH-123-connection-pool # includes ticket ID
|
|
51
|
-
refactor/remove-deprecated-endpoints # clear refactor intent
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
### Incorrect
|
|
55
|
-
|
|
56
|
-
```plaintext
|
|
57
|
-
feature/auth_stuff # wrong type + underscore
|
|
58
|
-
feat/feature-add-login # duplicates type in description
|
|
59
|
-
fix/DB-456-fix-the-database-connection-pool-memory-leak # exceeds 50 chars + verbatim message
|
|
60
|
-
```
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Snippet reference
|
|
3
|
-
description: Snippet reference and authoring conventions
|
|
4
|
-
consumers: create-snippet
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Snippet reference
|
|
8
|
-
|
|
9
|
-
## Scope
|
|
10
|
-
|
|
11
|
-
Governs a snippet file: what one is for, whether a prompt qualifies as one, how it is invoked, and the structure of its body.
|
|
12
|
-
|
|
13
|
-
Does not govern:
|
|
14
|
-
|
|
15
|
-
- Skill folders, which carry frontmatter, references, and scripts a snippet has none of: `skill.md`
|
|
16
|
-
- Voice, rhythm, and sentence construction in snippet prose: the `write-human` skill
|
|
17
|
-
- Punctuation, formatting, and word choice in snippet prose: `markdown.md`
|
|
18
|
-
|
|
19
|
-
## What a snippet is
|
|
20
|
-
|
|
21
|
-
A snippet is a short, focused prompt stored as a plain markdown file. Invoke one to insert a prepared instruction into any AI chat without retyping it. Each snippet covers one purpose. If a prompt needs headers or multiple goals, use a system prompt instead.
|
|
22
|
-
|
|
23
|
-
## Admission
|
|
24
|
-
|
|
25
|
-
Two tests decide whether a prompt becomes a snippet, and both have to pass. Apply them when adding one and when auditing the catalog.
|
|
26
|
-
|
|
27
|
-
- Cadence: a prompt invoked many times across sessions qualifies. A one-shot audit, migration, or bootstrap prompt does not, and belongs in notes outside the catalog.
|
|
28
|
-
- Audience: a prompt the consuming project would invoke ships in `snippets/`. One only the authoring repository can run stays outside every installable folder, which is a rule for a repository that authors snippets for others rather than for one that only consumes them.
|
|
29
|
-
|
|
30
|
-
A subfolder under `snippets/` names where a prompt is invoked rather than what it is about. A prompt that reads or writes the project's own files goes in a folder, and one carrying its whole context in the message goes at the root.
|
|
31
|
-
|
|
32
|
-
Overlapping a skill that does the same job is not disqualifying on its own. A snippet fires when a person asks for it by name and a skill fires on a description match, so the two coexist when those paths differ and the outputs do. Record the reason where the project keeps its decisions, or drop the snippet.
|
|
33
|
-
|
|
34
|
-
## Invocation channels
|
|
35
|
-
|
|
36
|
-
- Chrome extension: type `>slug` in a supported chat UI (claude.ai, gemini.google.com) to insert the snippet text inline
|
|
37
|
-
- Claude Code terminal: prefix the install path with `@` (e.g. `@.claude/snippets/claude/feature`)
|
|
38
|
-
- Snippets install preserving the source folder structure. A snippet at `claude/edit.md` installs as `.claude/snippets/claude/edit.md` and is invoked as `@.claude/snippets/claude/edit`
|
|
39
|
-
|
|
40
|
-
## Use patterns
|
|
41
|
-
|
|
42
|
-
- Run-as-is: invoke and send immediately. The snippet is self-contained and needs no extra context.
|
|
43
|
-
- Invoke-then-add-context: invoke the snippet, then append specifics in the same message (e.g. invoke `claude-feature`, then add the feature name or extra constraints)
|
|
44
|
-
- Invoke-on-history: invoke after a discussion. The snippet uses prior conversation as implicit context with no additional input needed (e.g. invoke `claude-figma` after discussing a design).
|
|
45
|
-
|
|
46
|
-
## Authoring
|
|
47
|
-
|
|
48
|
-
- One focused purpose per snippet. If it needs headers or multiple goals, use a system prompt instead.
|
|
49
|
-
- Self-contained. No references to external files or assumed prior context.
|
|
50
|
-
- No user fill-in placeholders. If a value depends on context, the user adds it after invocation.
|
|
51
|
-
- Plain markdown only. No YAML frontmatter, no headers, no nested structure.
|
|
52
|
-
- Filename is the slug: kebab-case, no capitals, no underscores
|
|
53
|
-
|
|
54
|
-
## Structure
|
|
55
|
-
|
|
56
|
-
- Lead with a verb. Open with an imperative that states the job immediately.
|
|
57
|
-
- One instruction per sentence. Do not stack multiple actions into one sentence.
|
|
58
|
-
- For sequential steps, use a numbered list with one action per item.
|
|
59
|
-
- When the output has a fixed shape, show it in a fenced code block with a language identifier.
|
|
60
|
-
- Put constraints and exclusions last, not inline with the main instructions.
|
|
61
|
-
|
|
62
|
-
## Examples
|
|
63
|
-
|
|
64
|
-
### Correct
|
|
65
|
-
|
|
66
|
-
```markdown
|
|
67
|
-
I want to implement the following. Scan relevant files and list conflicts. Do not implement. # user adds feature after invocation
|
|
68
|
-
Scan relevant files and list conflicts. Do not implement. # run-as-is, no context needed
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
### Incorrect
|
|
72
|
-
|
|
73
|
-
```markdown
|
|
74
|
-
I want to implement: <feature or task name> # redundant fill-in, add context after invocation instead
|
|
75
|
-
See ARCHITECTURE.md before starting. # external dependency, not self-contained
|
|
76
|
-
|
|
77
|
-
## Overview\n## Steps # headers belong in a system prompt, not a snippet
|
|
78
|
-
```
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Branch reference
|
|
3
|
-
description: Branch naming format and type conventions
|
|
4
|
-
consumers: git-branch, git-split, git-pr, claude-worktree
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Branch reference
|
|
8
|
-
|
|
9
|
-
## Scope
|
|
10
|
-
|
|
11
|
-
Governs a git branch name: its structure, its length, and the type vocabulary it draws from.
|
|
12
|
-
|
|
13
|
-
Does not govern:
|
|
14
|
-
|
|
15
|
-
- Commit subject format, which shares the type vocabulary: `commit.md`
|
|
16
|
-
- Pull request title and body: `pr.md`
|
|
17
|
-
- Whether a phase label may appear in a branch name: `versioning.md`
|
|
18
|
-
- Deriving a slug from a branch name for use in an output filename: `slug.md`
|
|
19
|
-
|
|
20
|
-
## Format
|
|
21
|
-
|
|
22
|
-
- Structure: `<type>/<description>` or `<type>/<ticket>-<description>`
|
|
23
|
-
- Length: 50 characters maximum
|
|
24
|
-
- Casing: kebab-case only, no underscores or camelCase
|
|
25
|
-
- Description: 2 words maximum, 3 only when genuinely needed for specificity
|
|
26
|
-
- Capture the core change, not the commit message verbatim
|
|
27
|
-
- For branches with multiple commits, use the unifying concern as the description.
|
|
28
|
-
- Do not duplicate type in description (e.g., `feat/feature-login`)
|
|
29
|
-
|
|
30
|
-
## Types
|
|
31
|
-
|
|
32
|
-
- `feat`: new feature or capability
|
|
33
|
-
- `fix`: bug fix
|
|
34
|
-
- `refactor`: structural changes (not a fix or feature)
|
|
35
|
-
- `docs`: documentation only (README)
|
|
36
|
-
- `chore`: maintenance tasks (deps, tooling, configs)
|
|
37
|
-
- `perf`: performance improvements
|
|
38
|
-
- `test`: add or modify tests
|
|
39
|
-
- `style`: code formatting (whitespace, semicolons)
|
|
40
|
-
- `build`: build system changes (webpack, npm scripts)
|
|
41
|
-
- `ci`: CI/CD pipeline changes (GitHub Actions)
|
|
42
|
-
- `revert`: revert a previous commit
|
|
43
|
-
|
|
44
|
-
## Examples
|
|
45
|
-
|
|
46
|
-
### Correct
|
|
47
|
-
|
|
48
|
-
```plaintext
|
|
49
|
-
feat/jwt-expiration # clear feature scope
|
|
50
|
-
fix/AUTH-123-connection-pool # includes ticket ID
|
|
51
|
-
refactor/remove-deprecated-endpoints # clear refactor intent
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
### Incorrect
|
|
55
|
-
|
|
56
|
-
```plaintext
|
|
57
|
-
feature/auth_stuff # wrong type + underscore
|
|
58
|
-
feat/feature-add-login # duplicates type in description
|
|
59
|
-
fix/DB-456-fix-the-database-connection-pool-memory-leak # exceeds 50 chars + verbatim message
|
|
60
|
-
```
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Issue reference
|
|
3
|
-
description: GitHub issue title, labels, and body conventions
|
|
4
|
-
consumers: git-issue
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Issue reference
|
|
8
|
-
|
|
9
|
-
## Scope
|
|
10
|
-
|
|
11
|
-
Governs a tracker issue: its title, its labels, and the sections its body carries.
|
|
12
|
-
|
|
13
|
-
Does not govern:
|
|
14
|
-
|
|
15
|
-
- Pull request title and body: `pr.md`
|
|
16
|
-
- Whether a phase label may appear in issue text: `versioning.md`
|
|
17
|
-
- Voice, rhythm, and sentence construction in issue prose: the `write-human` skill
|
|
18
|
-
- Punctuation, formatting, and banned words in issue prose: `markdown.md`
|
|
19
|
-
|
|
20
|
-
## Title
|
|
21
|
-
|
|
22
|
-
- Format: `<type>: <subject>`
|
|
23
|
-
- Type is `bug` or `task`. Lowercase the type and the first word of the subject.
|
|
24
|
-
- Length: 72 characters maximum, no trailing period.
|
|
25
|
-
|
|
26
|
-
## Labels
|
|
27
|
-
|
|
28
|
-
- Apply `bug` for a defect and `enhancement` for a task or improvement.
|
|
29
|
-
- Both are GitHub default labels. A label that does not exist makes `gh` reject the issue. Create it once with `gh label create`.
|
|
30
|
-
- One label per issue unless a second genuinely applies.
|
|
31
|
-
|
|
32
|
-
## Content
|
|
33
|
-
|
|
34
|
-
- Use imperative mood and describe the actual defect or work, not that something is wrong.
|
|
35
|
-
- Do not open with "This issue," "I want," or "We should."
|
|
36
|
-
- Do not use buzzwords or speculative future scope.
|
|
37
|
-
- State observable behavior for a bug, not a guessed cause.
|
|
38
|
-
|
|
39
|
-
## Sections
|
|
40
|
-
|
|
41
|
-
- `## Summary`: one line naming what and why.
|
|
42
|
-
- `## Details`: for a bug, what happens versus what is expected. For a task, what to build.
|
|
43
|
-
- `## Context`: for a bug, repro steps or commands. For a task, the driving reason, or `none`.
|
|
44
|
-
- `## Proposed` (optional): one line naming a fix or approach. Omit when open.
|
|
45
|
-
|
|
46
|
-
## Formatting
|
|
47
|
-
|
|
48
|
-
- End every bullet with a period.
|
|
49
|
-
- Keep each section to one or two lines.
|
|
50
|
-
|
|
51
|
-
## Examples
|
|
52
|
-
|
|
53
|
-
### Correct (bug)
|
|
54
|
-
|
|
55
|
-
```markdown
|
|
56
|
-
## Summary
|
|
57
|
-
|
|
58
|
-
Fix the feedback CLI so it applies the `feedback` label.
|
|
59
|
-
|
|
60
|
-
## Details
|
|
61
|
-
|
|
62
|
-
`aitk feedback --github` opens an issue with no label, so `toolkit-triage` never lists it.
|
|
63
|
-
|
|
64
|
-
## Context
|
|
65
|
-
|
|
66
|
-
Run a piped `aitk feedback --github`, then check the issue carries no `feedback` label.
|
|
67
|
-
|
|
68
|
-
## Proposed
|
|
69
|
-
|
|
70
|
-
Pass `--label feedback` through the shared issue helper.
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
### Correct (task)
|
|
74
|
-
|
|
75
|
-
```markdown
|
|
76
|
-
## Summary
|
|
77
|
-
|
|
78
|
-
Add a git-issue skill so a session can file an issue on the current repo.
|
|
79
|
-
|
|
80
|
-
## Details
|
|
81
|
-
|
|
82
|
-
Format an issue from session context and file it with `gh issue create`, next to git-pr in the git family.
|
|
83
|
-
|
|
84
|
-
## Context
|
|
85
|
-
|
|
86
|
-
The toolkit-issue skill only files on the toolkit repo. A general path is needed for target projects.
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
### Incorrect
|
|
90
|
-
|
|
91
|
-
```markdown
|
|
92
|
-
## Summary
|
|
93
|
-
|
|
94
|
-
This issue is about the feedback system being kind of broken, and we should probably make it more robust.
|
|
95
|
-
```
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Branch reference
|
|
3
|
-
description: Branch naming format and type conventions
|
|
4
|
-
consumers: git-branch, git-split, git-pr, claude-worktree
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Branch reference
|
|
8
|
-
|
|
9
|
-
## Scope
|
|
10
|
-
|
|
11
|
-
Governs a git branch name: its structure, its length, and the type vocabulary it draws from.
|
|
12
|
-
|
|
13
|
-
Does not govern:
|
|
14
|
-
|
|
15
|
-
- Commit subject format, which shares the type vocabulary: `commit.md`
|
|
16
|
-
- Pull request title and body: `pr.md`
|
|
17
|
-
- Whether a phase label may appear in a branch name: `versioning.md`
|
|
18
|
-
- Deriving a slug from a branch name for use in an output filename: `slug.md`
|
|
19
|
-
|
|
20
|
-
## Format
|
|
21
|
-
|
|
22
|
-
- Structure: `<type>/<description>` or `<type>/<ticket>-<description>`
|
|
23
|
-
- Length: 50 characters maximum
|
|
24
|
-
- Casing: kebab-case only, no underscores or camelCase
|
|
25
|
-
- Description: 2 words maximum, 3 only when genuinely needed for specificity
|
|
26
|
-
- Capture the core change, not the commit message verbatim
|
|
27
|
-
- For branches with multiple commits, use the unifying concern as the description.
|
|
28
|
-
- Do not duplicate type in description (e.g., `feat/feature-login`)
|
|
29
|
-
|
|
30
|
-
## Types
|
|
31
|
-
|
|
32
|
-
- `feat`: new feature or capability
|
|
33
|
-
- `fix`: bug fix
|
|
34
|
-
- `refactor`: structural changes (not a fix or feature)
|
|
35
|
-
- `docs`: documentation only (README)
|
|
36
|
-
- `chore`: maintenance tasks (deps, tooling, configs)
|
|
37
|
-
- `perf`: performance improvements
|
|
38
|
-
- `test`: add or modify tests
|
|
39
|
-
- `style`: code formatting (whitespace, semicolons)
|
|
40
|
-
- `build`: build system changes (webpack, npm scripts)
|
|
41
|
-
- `ci`: CI/CD pipeline changes (GitHub Actions)
|
|
42
|
-
- `revert`: revert a previous commit
|
|
43
|
-
|
|
44
|
-
## Examples
|
|
45
|
-
|
|
46
|
-
### Correct
|
|
47
|
-
|
|
48
|
-
```plaintext
|
|
49
|
-
feat/jwt-expiration # clear feature scope
|
|
50
|
-
fix/AUTH-123-connection-pool # includes ticket ID
|
|
51
|
-
refactor/remove-deprecated-endpoints # clear refactor intent
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
### Incorrect
|
|
55
|
-
|
|
56
|
-
```plaintext
|
|
57
|
-
feature/auth_stuff # wrong type + underscore
|
|
58
|
-
feat/feature-add-login # duplicates type in description
|
|
59
|
-
fix/DB-456-fix-the-database-connection-pool-memory-leak # exceeds 50 chars + verbatim message
|
|
60
|
-
```
|
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Pull request reference
|
|
3
|
-
description: Pull request title and body conventions
|
|
4
|
-
consumers: git-split, git-pr
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Pull request reference
|
|
8
|
-
|
|
9
|
-
## Scope
|
|
10
|
-
|
|
11
|
-
Governs a pull request title and body: their format and the sections the body carries.
|
|
12
|
-
|
|
13
|
-
Does not govern:
|
|
14
|
-
|
|
15
|
-
- Commit subject format, which shares the title form: `commit.md`
|
|
16
|
-
- Branch naming: `branch.md`
|
|
17
|
-
- Whether a phase label or a semver tag may appear in a title or body: `versioning.md`
|
|
18
|
-
- Voice, rhythm, and sentence construction in pull request prose: the `write-human` skill
|
|
19
|
-
- Punctuation, formatting, and banned words in pull request prose: `markdown.md`
|
|
20
|
-
|
|
21
|
-
## Title
|
|
22
|
-
|
|
23
|
-
- Format: `<type>(<scope>): <subject>`
|
|
24
|
-
- Casing: lowercase for `<type>`, `<scope>`, and first word of `<subject>`
|
|
25
|
-
- Length: 72 characters maximum
|
|
26
|
-
|
|
27
|
-
## Content
|
|
28
|
-
|
|
29
|
-
- Use imperative mood for all content (`add`, `fix`, `refactor`)
|
|
30
|
-
- Do not start with "This PR," "This commit," "Included are," or "I have"
|
|
31
|
-
- Do not use buzzwords (`seamless`, `robust`, `game-changer`, `enhanced`)
|
|
32
|
-
- Do not describe historical behavior or unchanged code. Describe new behavior only.
|
|
33
|
-
- Do not include future promises or speculative documentation
|
|
34
|
-
- Do not explain obvious changes (formatting, renaming variables)
|
|
35
|
-
- Do not duplicate commit messages verbatim
|
|
36
|
-
|
|
37
|
-
## Sections
|
|
38
|
-
|
|
39
|
-
- `## Summary`: 1-2 sentences following `<Action Verb> <Direct Object> to <Result>`, expand for clarity if needed
|
|
40
|
-
- `## Key Changes`: name actual files, functions, or modules (e.g., `AuthService.verify()` not "auth handler"). Always use bullet points, never prose.
|
|
41
|
-
- `## Technical Context` (optional): 1-2 lines of architectural reasoning explaining why, not what
|
|
42
|
-
- Omit Technical Context for docs, config, or trivial changes
|
|
43
|
-
- Use bullet points for multiple reasons, one sentence for a single reason
|
|
44
|
-
- `## Testing` (optional): specify exact commands or test cases run
|
|
45
|
-
- Omit Testing for docs, config, or trivial sync changes
|
|
46
|
-
- Use checkboxes, never prose. See Testing discipline for which box gets ticked.
|
|
47
|
-
- `## For the reviewer` (optional): what the reviewer should confirm, one bullet per request
|
|
48
|
-
- Visuals: include only when they clarify architecture, UI, or complex logic flows
|
|
49
|
-
|
|
50
|
-
## Testing discipline
|
|
51
|
-
|
|
52
|
-
- Run the check before writing its line. A `- [ ]` reports a check that has not run rather than one that is planned.
|
|
53
|
-
- Tick the box and state the observed result. `- [x] npm test passes, 42 tests` beats `- [ ] run npm test`.
|
|
54
|
-
- Quote the count or output the run reported, never a figure carried from elsewhere.
|
|
55
|
-
- Leave a box unchecked only when a human is required, and name which human and why on the same line.
|
|
56
|
-
- Human-only covers visual or aesthetic judgment, anything needing credentials or a live third-party service, anything needing a second machine or a fresh OS, and judgment about whether a boundary or an abstraction reads correctly. The agent runs everything else.
|
|
57
|
-
- What makes a human required is a capability the agent lacks, never the cost of the run. Authorizing a spend is the operator's and performing the run is not, so an arm the repository ships a harness for gets driven once the operator has cleared the spend, and the box records what it returned.
|
|
58
|
-
- A tool refusal that actually fired is a capability gap, and the line says which refusal rather than naming the cost behind it. A refusal predicted and never met is not one.
|
|
59
|
-
- A live agent session is not a human. A box reading `needs a live session driving the skill` names the thing writing the description, so that run is owed rather than blocked.
|
|
60
|
-
- Put a request for the reviewer under `## For the reviewer`. It is a request rather than unfinished testing, so it never appears as an unchecked Testing box.
|
|
61
|
-
|
|
62
|
-
## Formatting
|
|
63
|
-
|
|
64
|
-
- End every bullet point with a period
|
|
65
|
-
|
|
66
|
-
## Examples
|
|
67
|
-
|
|
68
|
-
### Template
|
|
69
|
-
|
|
70
|
-
```markdown
|
|
71
|
-
## Summary
|
|
72
|
-
|
|
73
|
-
<Action Verb> <Direct Object> to <Result>.
|
|
74
|
-
|
|
75
|
-
## Key Changes
|
|
76
|
-
|
|
77
|
-
- <Verb> <specific component/file/function> (<reason if non-obvious>)
|
|
78
|
-
- <Verb> <specific component/file/function>
|
|
79
|
-
|
|
80
|
-
## Technical Context
|
|
81
|
-
|
|
82
|
-
- <Architectural reasoning explaining why, not what>
|
|
83
|
-
|
|
84
|
-
## Testing
|
|
85
|
-
|
|
86
|
-
- [x] <Command run> <observed result>
|
|
87
|
-
- [x] <Edge case verified> <what was observed>
|
|
88
|
-
- [ ] <Human-only check> (<which human, why>)
|
|
89
|
-
|
|
90
|
-
## For the reviewer
|
|
91
|
-
|
|
92
|
-
- <What the reviewer should confirm>
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
### Correct
|
|
96
|
-
|
|
97
|
-
```markdown
|
|
98
|
-
## Summary
|
|
99
|
-
|
|
100
|
-
Update auth middleware to enforce jwt expiration checks. # imperative + direct object + result
|
|
101
|
-
|
|
102
|
-
## Key Changes
|
|
103
|
-
|
|
104
|
-
- Add `verifyExpiration()` to `src/auth/validators.ts`. # specific function + file path
|
|
105
|
-
- Refactor `AuthService.authenticate()` to handle 401 codes. # named component + clear change
|
|
106
|
-
|
|
107
|
-
## Technical Context
|
|
108
|
-
|
|
109
|
-
- Migration to stateless session management for horizontal scalability. # why, not what
|
|
110
|
-
|
|
111
|
-
## Testing
|
|
112
|
-
|
|
113
|
-
- [x] `npm run test:auth` passes, 42 tests. # command run + observed result
|
|
114
|
-
- [x] Expired token rejected with a 401 against a local server. # edge case + what happened
|
|
115
|
-
- [ ] Staging smoke test (release owner, needs staging credentials). # unchecked + which human + why
|
|
116
|
-
|
|
117
|
-
## For the reviewer
|
|
118
|
-
|
|
119
|
-
- Confirm the 401 and 403 split reads correctly for the public API. # a request, not a test result
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
### Incorrect
|
|
123
|
-
|
|
124
|
-
```markdown
|
|
125
|
-
## Summary
|
|
126
|
-
|
|
127
|
-
This PR updates the authentication system to be more robust. # "This PR" opener + buzzword
|
|
128
|
-
|
|
129
|
-
## Key Changes
|
|
130
|
-
|
|
131
|
-
- Updated auth middleware files # vague, no specific component, no period
|
|
132
|
-
- The old system used to check tokens differently # describes historical behavior
|
|
133
|
-
|
|
134
|
-
## Testing
|
|
135
|
-
|
|
136
|
-
- Tested manually # no specific command or case
|
|
137
|
-
- [ ] `npm run test:auth` # unchecked box for a check the agent can run
|
|
138
|
-
- [ ] Reviewer confirms the error split reads correctly # a reviewer request, belongs under `## For the reviewer`
|
|
139
|
-
```
|
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Pull request reference
|
|
3
|
-
description: Pull request title and body conventions
|
|
4
|
-
consumers: git-split, git-pr
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Pull request reference
|
|
8
|
-
|
|
9
|
-
## Scope
|
|
10
|
-
|
|
11
|
-
Governs a pull request title and body: their format and the sections the body carries.
|
|
12
|
-
|
|
13
|
-
Does not govern:
|
|
14
|
-
|
|
15
|
-
- Commit subject format, which shares the title form: `commit.md`
|
|
16
|
-
- Branch naming: `branch.md`
|
|
17
|
-
- Whether a phase label or a semver tag may appear in a title or body: `versioning.md`
|
|
18
|
-
- Voice, rhythm, and sentence construction in pull request prose: the `write-human` skill
|
|
19
|
-
- Punctuation, formatting, and banned words in pull request prose: `markdown.md`
|
|
20
|
-
|
|
21
|
-
## Title
|
|
22
|
-
|
|
23
|
-
- Format: `<type>(<scope>): <subject>`
|
|
24
|
-
- Casing: lowercase for `<type>`, `<scope>`, and first word of `<subject>`
|
|
25
|
-
- Length: 72 characters maximum
|
|
26
|
-
|
|
27
|
-
## Content
|
|
28
|
-
|
|
29
|
-
- Use imperative mood for all content (`add`, `fix`, `refactor`)
|
|
30
|
-
- Do not start with "This PR," "This commit," "Included are," or "I have"
|
|
31
|
-
- Do not use buzzwords (`seamless`, `robust`, `game-changer`, `enhanced`)
|
|
32
|
-
- Do not describe historical behavior or unchanged code. Describe new behavior only.
|
|
33
|
-
- Do not include future promises or speculative documentation
|
|
34
|
-
- Do not explain obvious changes (formatting, renaming variables)
|
|
35
|
-
- Do not duplicate commit messages verbatim
|
|
36
|
-
|
|
37
|
-
## Sections
|
|
38
|
-
|
|
39
|
-
- `## Summary`: 1-2 sentences following `<Action Verb> <Direct Object> to <Result>`, expand for clarity if needed
|
|
40
|
-
- `## Key Changes`: name actual files, functions, or modules (e.g., `AuthService.verify()` not "auth handler"). Always use bullet points, never prose.
|
|
41
|
-
- `## Technical Context` (optional): 1-2 lines of architectural reasoning explaining why, not what
|
|
42
|
-
- Omit Technical Context for docs, config, or trivial changes
|
|
43
|
-
- Use bullet points for multiple reasons, one sentence for a single reason
|
|
44
|
-
- `## Testing` (optional): specify exact commands or test cases run
|
|
45
|
-
- Omit Testing for docs, config, or trivial sync changes
|
|
46
|
-
- Use checkboxes, never prose. See Testing discipline for which box gets ticked.
|
|
47
|
-
- `## For the reviewer` (optional): what the reviewer should confirm, one bullet per request
|
|
48
|
-
- Visuals: include only when they clarify architecture, UI, or complex logic flows
|
|
49
|
-
|
|
50
|
-
## Testing discipline
|
|
51
|
-
|
|
52
|
-
- Run the check before writing its line. A `- [ ]` reports a check that has not run rather than one that is planned.
|
|
53
|
-
- Tick the box and state the observed result. `- [x] npm test passes, 42 tests` beats `- [ ] run npm test`.
|
|
54
|
-
- Quote the count or output the run reported, never a figure carried from elsewhere.
|
|
55
|
-
- Leave a box unchecked only when a human is required, and name which human and why on the same line.
|
|
56
|
-
- Human-only covers visual or aesthetic judgment, anything needing credentials or a live third-party service, anything needing a second machine or a fresh OS, and judgment about whether a boundary or an abstraction reads correctly. The agent runs everything else.
|
|
57
|
-
- What makes a human required is a capability the agent lacks, never the cost of the run. Authorizing a spend is the operator's and performing the run is not, so an arm the repository ships a harness for gets driven once the operator has cleared the spend, and the box records what it returned.
|
|
58
|
-
- A tool refusal that actually fired is a capability gap, and the line says which refusal rather than naming the cost behind it. A refusal predicted and never met is not one.
|
|
59
|
-
- A live agent session is not a human. A box reading `needs a live session driving the skill` names the thing writing the description, so that run is owed rather than blocked.
|
|
60
|
-
- Put a request for the reviewer under `## For the reviewer`. It is a request rather than unfinished testing, so it never appears as an unchecked Testing box.
|
|
61
|
-
|
|
62
|
-
## Formatting
|
|
63
|
-
|
|
64
|
-
- End every bullet point with a period
|
|
65
|
-
|
|
66
|
-
## Examples
|
|
67
|
-
|
|
68
|
-
### Template
|
|
69
|
-
|
|
70
|
-
```markdown
|
|
71
|
-
## Summary
|
|
72
|
-
|
|
73
|
-
<Action Verb> <Direct Object> to <Result>.
|
|
74
|
-
|
|
75
|
-
## Key Changes
|
|
76
|
-
|
|
77
|
-
- <Verb> <specific component/file/function> (<reason if non-obvious>)
|
|
78
|
-
- <Verb> <specific component/file/function>
|
|
79
|
-
|
|
80
|
-
## Technical Context
|
|
81
|
-
|
|
82
|
-
- <Architectural reasoning explaining why, not what>
|
|
83
|
-
|
|
84
|
-
## Testing
|
|
85
|
-
|
|
86
|
-
- [x] <Command run> <observed result>
|
|
87
|
-
- [x] <Edge case verified> <what was observed>
|
|
88
|
-
- [ ] <Human-only check> (<which human, why>)
|
|
89
|
-
|
|
90
|
-
## For the reviewer
|
|
91
|
-
|
|
92
|
-
- <What the reviewer should confirm>
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
### Correct
|
|
96
|
-
|
|
97
|
-
```markdown
|
|
98
|
-
## Summary
|
|
99
|
-
|
|
100
|
-
Update auth middleware to enforce jwt expiration checks. # imperative + direct object + result
|
|
101
|
-
|
|
102
|
-
## Key Changes
|
|
103
|
-
|
|
104
|
-
- Add `verifyExpiration()` to `src/auth/validators.ts`. # specific function + file path
|
|
105
|
-
- Refactor `AuthService.authenticate()` to handle 401 codes. # named component + clear change
|
|
106
|
-
|
|
107
|
-
## Technical Context
|
|
108
|
-
|
|
109
|
-
- Migration to stateless session management for horizontal scalability. # why, not what
|
|
110
|
-
|
|
111
|
-
## Testing
|
|
112
|
-
|
|
113
|
-
- [x] `npm run test:auth` passes, 42 tests. # command run + observed result
|
|
114
|
-
- [x] Expired token rejected with a 401 against a local server. # edge case + what happened
|
|
115
|
-
- [ ] Staging smoke test (release owner, needs staging credentials). # unchecked + which human + why
|
|
116
|
-
|
|
117
|
-
## For the reviewer
|
|
118
|
-
|
|
119
|
-
- Confirm the 401 and 403 split reads correctly for the public API. # a request, not a test result
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
### Incorrect
|
|
123
|
-
|
|
124
|
-
```markdown
|
|
125
|
-
## Summary
|
|
126
|
-
|
|
127
|
-
This PR updates the authentication system to be more robust. # "This PR" opener + buzzword
|
|
128
|
-
|
|
129
|
-
## Key Changes
|
|
130
|
-
|
|
131
|
-
- Updated auth middleware files # vague, no specific component, no period
|
|
132
|
-
- The old system used to check tokens differently # describes historical behavior
|
|
133
|
-
|
|
134
|
-
## Testing
|
|
135
|
-
|
|
136
|
-
- Tested manually # no specific command or case
|
|
137
|
-
- [ ] `npm run test:auth` # unchecked box for a check the agent can run
|
|
138
|
-
- [ ] Reviewer confirms the error split reads correctly # a reviewer request, belongs under `## For the reviewer`
|
|
139
|
-
```
|