Skip to content

Commit 14c7185

Browse files
authored
Copier update: Claude config (#85)
Pull in upstream template changes <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Claude Code tooling and command suite for TDD workflows; local Beads + Dolt support and settings merge automation. * **Bug Fixes & Improvements** * CI expanded with unit-test job matrix; various dependency and GH Actions version updates; devcontainer/compose enhancements. * **Documentation** * Large set of workflow and agent guides added (TDD phases, command how‑tos, AGENTS guidelines). * **Tests** * New unit tests covering the pre-commit hook removal utility. * **Chores** * Updated ignore rules and added configuration/packaging scaffolding. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
1 parent c7643a3 commit 14c7185

File tree

88 files changed

+5411
-92
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

88 files changed

+5411
-92
lines changed

.claude/.beads/.gitignore

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
# Dolt database (managed by Dolt, not git)
2+
dolt/
3+
dolt-access.lock
4+
5+
# Runtime files
6+
bd.sock
7+
bd.sock.startlock
8+
sync-state.json
9+
last-touched
10+
11+
# Local version tracking (prevents upgrade notification spam after git ops)
12+
.local_version
13+
14+
# Worktree redirect file (contains relative path to main repo's .beads/)
15+
# Must not be committed as paths would be wrong in other clones
16+
redirect
17+
18+
# Sync state (local-only, per-machine)
19+
# These files are machine-specific and should not be shared across clones
20+
.sync.lock
21+
.jsonl.lock
22+
sync_base.jsonl
23+
export-state/
24+
25+
# Ephemeral store (SQLite - wisps/molecules, intentionally not versioned)
26+
ephemeral.sqlite3
27+
ephemeral.sqlite3-journal
28+
ephemeral.sqlite3-wal
29+
ephemeral.sqlite3-shm
30+
31+
# Legacy files (from pre-Dolt versions)
32+
*.db
33+
*.db?*
34+
*.db-journal
35+
*.db-wal
36+
*.db-shm
37+
db.sqlite
38+
bd.db
39+
daemon.lock
40+
daemon.log
41+
daemon-*.log.gz
42+
daemon.pid
43+
beads.base.jsonl
44+
beads.base.meta.json
45+
beads.left.jsonl
46+
beads.left.meta.json
47+
beads.right.jsonl
48+
beads.right.meta.json
49+
50+
# NOTE: Do NOT add negation patterns (e.g., !issues.jsonl) here.
51+
# They would override fork protection in .git/info/exclude, allowing
52+
# contributors to accidentally commit upstream issue databases.
53+
# The JSONL files (issues.jsonl, interactions.jsonl) and config files
54+
# are tracked by git by default since no pattern above ignores them.
55+
56+
# at the moment, we're just using beads for local development, so don't commit any jsonl
57+
interactions.jsonl
58+
issues.jsonl
59+
backup/
60+
issues-dump.jsonl

.claude/.beads/config.yaml

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# Beads Configuration File
2+
# This file configures default behavior for all bd commands in this repository
3+
# All settings can also be set via environment variables (BD_* prefix)
4+
# or overridden with command-line flags
5+
6+
# Issue prefix for this repository (used by bd init)
7+
# If not set, bd init will auto-detect from directory name
8+
# Example: issue-prefix: "myproject" creates issues like "myproject-1", "myproject-2", etc.
9+
# issue-prefix: ""
10+
11+
# Use no-db mode: load from JSONL, write back after each command
12+
# When true, bd will use .beads/issues.jsonl as the source of truth
13+
# instead of the Dolt database
14+
# no-db: false
15+
16+
# Enable JSON output by default
17+
# json: false
18+
19+
# Default actor for audit trails (overridden by BD_ACTOR or --actor)
20+
# actor: ""
21+
22+
# Export events (audit trail) to .beads/events.jsonl on each flush/sync
23+
# When enabled, new events are appended incrementally using a high-water mark.
24+
# Use 'bd export --events' to trigger manually regardless of this setting.
25+
# events-export: false
26+
27+
# Multi-repo configuration (experimental - bd-307)
28+
# Allows hydrating from multiple repositories and routing writes to the correct JSONL
29+
# repos:
30+
# primary: "." # Primary repo (where this database lives)
31+
# additional: # Additional repos to hydrate from (read-only)
32+
# - ~/beads-planning # Personal planning repo
33+
# - ~/work-planning # Work planning repo
34+
35+
# Integration settings (access with 'bd config get/set')
36+
# These are stored in the database, not in this file:
37+
# - jira.url
38+
# - jira.project
39+
# - linear.url
40+
# - linear.api-key
41+
# - github.org
42+
# - github.repo
43+
no-git-ops: true
44+
backup.enabled: false # in v0.57 the backup seems to automatically add stage the files into git, bypassing the .gitignore I tried to set up, so disabling for now (also we don't really need backup anyway if we're not pushing into git, but this would be nicer long term than having to run the export command manually all the time)

.claude/.beads/metadata.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"database": "dolt",
3+
"jsonl_export": "issues.jsonl",
4+
"backend": "dolt",
5+
"dolt_mode": "server",
6+
"dolt_server_host": "beads-dolt",
7+
"dolt_database": "beads_work"
8+
}

.claude/commands/add-command.md

Lines changed: 167 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,167 @@
1+
---
2+
description: Guide for creating new slash commands
3+
argument-hint: <command-name> <description>
4+
---
5+
6+
## General Guidelines
7+
8+
### Output Style
9+
10+
- **Never explicitly mention TDD** in code, comments, commits, PRs, or issues
11+
- Write natural, descriptive code without meta-commentary about the development process
12+
- The code should speak for itself - TDD is the process, not the product
13+
14+
Beads is available for task tracking. Use `mcp__beads__*` tools to manage issues (the user interacts via `bd` commands).
15+
16+
## Plan File Restriction
17+
18+
**NEVER create, read, or update plan.md files.** Claude Code's internal planning files are disabled for this project. Use other methods to track implementation progress (e.g., comments, todo lists, or external tools).
19+
20+
# Slash Command Creator Guide
21+
22+
## How This Command Works
23+
24+
The `/add-command` command shows this guide for creating new slash commands. It includes:
25+
26+
- Command structure and syntax
27+
- Common patterns and examples
28+
- Security restrictions and limitations
29+
- Frontmatter options
30+
31+
**Note for AI**: When creating commands, you CAN use bash tools like `Bash(mkdir:*)`, `Bash(ls:*)`, `Bash(git status:*)` in the `allowed-tools` frontmatter of NEW commands - but ONLY for operations within the current project directory. This command itself doesn't need bash tools since it's just documentation.
32+
33+
## Command Locations
34+
35+
- **Personal**: `~/.claude/commands/` (available across all projects)
36+
- **Project**: `.claude/commands/` (shared with team, shows "(project)")
37+
38+
## Basic Structure
39+
40+
```markdown
41+
---
42+
allowed-tools: Read, Glob, Grep, Bash(git status:*), Task
43+
description: Brief description of what this command does
44+
argument-hint: [required-arg] [optional-arg]
45+
---
46+
47+
# Command Title
48+
49+
Your command instructions here.
50+
51+
**User arguments:**
52+
53+
Add-command: $ARGUMENTS
54+
55+
**End of user arguments**
56+
57+
File reference: @path/to/file.js
58+
59+
Bash command output: (exclamation)git status(backticks)
60+
```
61+
62+
## ⚠️ Security Restrictions
63+
64+
**Bash Commands (exclamation prefix)**: Limited to current working directory only.
65+
66+
- ✅ Works: `! + backtick + git status + backtick` (in project dir)
67+
- ❌ Blocked: `! + backtick + ls /outside/project + backtick` (outside project)
68+
- ❌ Blocked: `! + backtick + pwd + backtick` (if referencing dirs outside project)
69+
70+
**File References (`@` prefix)**: No directory restrictions.
71+
72+
- ✅ Works: `@/path/to/system/file.md`
73+
- ✅ Works: `@../other-project/file.js`
74+
75+
## Common Patterns
76+
77+
### Simple Command
78+
79+
```bash
80+
echo "Review this code for bugs and suggest fixes" > ~/.claude/commands/review.md
81+
```
82+
83+
### Command with Arguments
84+
85+
**Note for AI**: The example below uses a fullwidth dollar sign ($, U+FF04) to prevent interpolation in this documentation. When creating actual commands, use the regular `$` character.
86+
87+
```markdown
88+
Fix issue $ARGUMENTS following our coding standards
89+
```
90+
91+
### Command with File References
92+
93+
```markdown
94+
Compare @src/old.js with @src/new.js and explain differences
95+
```
96+
97+
### Command with Bash Output (Project Directory Only)
98+
99+
```markdown
100+
---
101+
allowed-tools: Bash(git status:*), Bash(git branch:*), Bash(git log:*)
102+
---
103+
Current status: (!)git status(`)
104+
Current branch: (!)git branch --show-current(`)
105+
Recent commits: (!)git log --oneline -5(`)
106+
107+
Create commit for these changes.
108+
```
109+
110+
**Note**: Only works with commands in the current project directory.
111+
112+
### Namespaced Command
113+
114+
**Note for AI**: The example below uses a fullwidth dollar sign ($, U+FF04) to prevent interpolation in this documentation. When creating actual commands, use the regular `$` character.
115+
116+
```bash
117+
mkdir -p ~/.claude/commands/ai
118+
echo "Ask GPT-5 about: $ARGUMENTS" > ~/.claude/commands/ai/gpt5.md
119+
# Creates: /ai:gpt5
120+
```
121+
122+
## Frontmatter Options
123+
124+
- `allowed-tools`: Tools this command can use
125+
- **Important**: Intrusive tools like `Write`, `Edit`, `NotebookEdit` should NEVER be allowed in commands unless the user explicitly requests them. These tools modify files and should only be used when the command's purpose is to make changes.
126+
- ✅ Safe for most commands: `Read`, `Glob`, `Grep`, `Bash(git status:*)`, `Task`, `AskUserQuestion`
127+
- `description`: Brief description (shows in /help)
128+
- `argument-hint`: Help text for arguments
129+
- `model`: Specific model to use
130+
131+
## Best Practices
132+
133+
### Safe Commands (No Security Issues)
134+
135+
```markdown
136+
# System prompt editor (file reference only)
137+
(@)path/to/system/prompt.md
138+
139+
Edit your system prompt above.
140+
```
141+
142+
### Project-Specific Commands (Bash OK)
143+
144+
```markdown
145+
---
146+
allowed-tools: Bash(git status:*), Bash(npm list:*)
147+
---
148+
Current git status: (!)git status(`)
149+
Package info: (!)npm list --depth=0(`)
150+
151+
Review project state and suggest next steps.
152+
```
153+
154+
### Cross-Directory File Access (Use @ not !)
155+
156+
```markdown
157+
# Compare config files
158+
Compare (@)path/to/system.md with (@)project/config.md
159+
160+
Show differences and suggest improvements.
161+
```
162+
163+
## Usage
164+
165+
After creating: `/<command-name> [arguments]`
166+
167+
Example: `/review` or `/ai:gpt5 "explain this code"`

.claude/commands/commit.md

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
---
2+
description: Create a git commit following project standards
3+
argument-hint: [optional-commit-description]
4+
---
5+
6+
## General Guidelines
7+
8+
### Output Style
9+
10+
- **Never explicitly mention TDD** in code, comments, commits, PRs, or issues
11+
- Write natural, descriptive code without meta-commentary about the development process
12+
- The code should speak for itself - TDD is the process, not the product
13+
14+
Beads is available for task tracking. Use `mcp__beads__*` tools to manage issues (the user interacts via `bd` commands).
15+
16+
## Plan File Restriction
17+
18+
**NEVER create, read, or update plan.md files.** Claude Code's internal planning files are disabled for this project. Use other methods to track implementation progress (e.g., comments, todo lists, or external tools).
19+
20+
Create a git commit following project standards
21+
22+
**User arguments:**
23+
24+
Commit: $ARGUMENTS
25+
26+
**End of user arguments**
27+
28+
## Commit Message Rules
29+
30+
Follows [Conventional Commits](https://www.conventionalcommits.org/) standard.
31+
32+
1. **Format**: `type(#issue): description`
33+
- Use `#123` for local repo issues
34+
- Use `owner/repo#123` for cross-repo issues
35+
- Common types: `feat`, `fix`, `docs`, `refactor`, `test`, `chore`
36+
37+
2. **AI Credits**: **NEVER include AI credits in commit messages**
38+
- No "Generated with Claude Code"
39+
- No "Co-Authored-By: Claude" or "Co-Authored-By: Happy"
40+
- Focus on the actual changes made, not conversation history
41+
42+
3. **Content**: Write clear, concise commit messages describing what changed and why
43+
44+
## Process
45+
46+
1. Run `git status` and `git diff` to review changes
47+
2. Run `git log --oneline -5` to see recent commit style
48+
3. Stage relevant files with `git add`
49+
4. Create commit with descriptive message
50+
5. Verify with `git status`
51+
52+
## Example
53+
54+
```bash
55+
git add <files>
56+
git commit -m "feat(#123): add validation to user input form"
57+
```

0 commit comments

Comments
 (0)