agent-guild 1.0.0__tar.gz
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.
- agent_guild-1.0.0/.github/workflows/ci.yml +38 -0
- agent_guild-1.0.0/.github/workflows/release.yml +39 -0
- agent_guild-1.0.0/.gitignore +21 -0
- agent_guild-1.0.0/CHANGELOG.md +13 -0
- agent_guild-1.0.0/LICENSE +21 -0
- agent_guild-1.0.0/PKG-INFO +287 -0
- agent_guild-1.0.0/README.md +268 -0
- agent_guild-1.0.0/agents/architect.md +58 -0
- agent_guild-1.0.0/agents/code-grader.md +76 -0
- agent_guild-1.0.0/agents/coder.md +43 -0
- agent_guild-1.0.0/agents/utility.md +31 -0
- agent_guild-1.0.0/development-workflow.md +93 -0
- agent_guild-1.0.0/pyproject.toml +45 -0
- agent_guild-1.0.0/scripts/release_notes.py +33 -0
- agent_guild-1.0.0/src/agent_guild/__init__.py +0 -0
- agent_guild-1.0.0/src/agent_guild/cli.py +76 -0
- agent_guild-1.0.0/src/agent_guild/files.py +101 -0
- agent_guild-1.0.0/src/agent_guild/installer.py +268 -0
- agent_guild-1.0.0/templates/agents-rules.md +6 -0
- agent_guild-1.0.0/templates/memory-bank-rules.md +6 -0
- agent_guild-1.0.0/templates/sdd-rules.md +18 -0
- agent_guild-1.0.0/tests/test_cli.py +213 -0
- agent_guild-1.0.0/uv.lock +79 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
on:
|
|
3
|
+
push:
|
|
4
|
+
branches: [main]
|
|
5
|
+
pull_request:
|
|
6
|
+
|
|
7
|
+
permissions:
|
|
8
|
+
contents: read
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
test:
|
|
12
|
+
name: tests (${{ matrix.os }}, py${{ matrix.python }})
|
|
13
|
+
runs-on: ${{ matrix.os }}
|
|
14
|
+
strategy:
|
|
15
|
+
fail-fast: false
|
|
16
|
+
matrix:
|
|
17
|
+
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
18
|
+
python: ["3.11", "3.13"] # the lowest supported and the newest
|
|
19
|
+
env:
|
|
20
|
+
UV_PYTHON: ${{ matrix.python }}
|
|
21
|
+
steps:
|
|
22
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
23
|
+
- uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
|
|
24
|
+
- run: uv run pytest -q
|
|
25
|
+
|
|
26
|
+
install-smoke:
|
|
27
|
+
name: clean install of the built wheel
|
|
28
|
+
runs-on: ubuntu-latest
|
|
29
|
+
steps:
|
|
30
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
31
|
+
- uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
|
|
32
|
+
- run: uv build
|
|
33
|
+
- name: Install the wheel into an empty venv and run the CLI away from the checkout
|
|
34
|
+
run: |
|
|
35
|
+
uv venv --python 3.12 "$RUNNER_TEMP/venv"
|
|
36
|
+
uv pip install --python "$RUNNER_TEMP/venv/bin/python" dist/*.whl
|
|
37
|
+
cd "$RUNNER_TEMP"
|
|
38
|
+
"$RUNNER_TEMP/venv/bin/agent-guild" --help
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
# Manual on purpose: run it (Actions -> Release -> Run workflow, with the tag, e.g. v1.0.0) after CI is
|
|
3
|
+
# green on main, the tag is pushed, the PyPI trusted publisher exists for this repo and the GitHub
|
|
4
|
+
# environment "pypi" is set up.
|
|
5
|
+
on:
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
inputs:
|
|
8
|
+
tag:
|
|
9
|
+
description: Release tag to publish, e.g. v1.0.0
|
|
10
|
+
required: true
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
publish:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
environment: pypi
|
|
16
|
+
permissions:
|
|
17
|
+
id-token: write
|
|
18
|
+
contents: write # to create the GitHub release
|
|
19
|
+
steps:
|
|
20
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
21
|
+
with:
|
|
22
|
+
ref: ${{ inputs.tag }}
|
|
23
|
+
- uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
|
|
24
|
+
- name: The tag must match the package version
|
|
25
|
+
env:
|
|
26
|
+
TAG: ${{ inputs.tag }}
|
|
27
|
+
run: |
|
|
28
|
+
v=$(python3 -c "import tomllib;print(tomllib.load(open('pyproject.toml','rb'))['project']['version'])")
|
|
29
|
+
test "v$v" = "$TAG" || { echo "tag $TAG != version $v"; exit 1; }
|
|
30
|
+
- run: uv run pytest -q
|
|
31
|
+
- run: uv build
|
|
32
|
+
- uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # release/v1
|
|
33
|
+
- name: Create the GitHub release with the CHANGELOG notes and the built files
|
|
34
|
+
env:
|
|
35
|
+
GH_TOKEN: ${{ github.token }}
|
|
36
|
+
TAG: ${{ inputs.tag }}
|
|
37
|
+
run: |
|
|
38
|
+
python3 scripts/release_notes.py "$TAG" > release-notes.md
|
|
39
|
+
gh release create "$TAG" dist/* --title "$TAG" --notes-file release-notes.md --verify-tag
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*.egg-info/
|
|
5
|
+
build/
|
|
6
|
+
dist/
|
|
7
|
+
.venv/
|
|
8
|
+
.pytest_cache/
|
|
9
|
+
.ruff_cache/
|
|
10
|
+
.mypy_cache/
|
|
11
|
+
.coverage
|
|
12
|
+
htmlcov/
|
|
13
|
+
|
|
14
|
+
# Claude Code local state
|
|
15
|
+
.claude/settings.local.json
|
|
16
|
+
CLAUDE.local.md
|
|
17
|
+
|
|
18
|
+
# Editors / OS
|
|
19
|
+
.idea/
|
|
20
|
+
.vscode/
|
|
21
|
+
.DS_Store
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## [1.0.0] - 2026-10-21
|
|
4
|
+
|
|
5
|
+
First release.
|
|
6
|
+
|
|
7
|
+
- Multi-agent setup for Claude Code: a Sonnet orchestrator that delegates to `architect`, `coder`, `code-grader` and
|
|
8
|
+
`utility` subagents, with the routing, briefs and memory protocol in `development-workflow.md`.
|
|
9
|
+
- Memory in two layers: memory-bank (current state, in a git-tracked `memory/` folder) and jev-mem (long-term facts,
|
|
10
|
+
recalled by relevance through an MCP server and hooks).
|
|
11
|
+
- Spec-Driven Development with approval gates via sdd-feature, opt-in per project.
|
|
12
|
+
- `agent-guild` installer: copies the agents, workflow rules and skills into a project, merges `CLAUDE.md`, `.mcp.json`
|
|
13
|
+
and `.claude/settings.json`, and is safe to re-run. `--without`, `--model`, `--dry-run`, `--force` and more.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Daniel Illescas Romero
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: agent-guild
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: A multi-agent setup for Claude Code (orchestrator + architect, coder, grader, utility subagents) with memory-bank, jevmem and Spec-Driven Development wired in, installed into a project with one command.
|
|
5
|
+
Project-URL: Homepage, https://github.com/illescasDaniel/agent-guild
|
|
6
|
+
Project-URL: Issues, https://github.com/illescasDaniel/agent-guild/issues
|
|
7
|
+
Author-email: Daniel Illescas Romero <illescas.daniel@protonmail.com>
|
|
8
|
+
License-Expression: MIT
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Keywords: claude,claude-code,memory,multi-agent,orchestrator,sdd,spec-driven-development,subagents
|
|
11
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
12
|
+
Classifier: Environment :: Console
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
+
Classifier: Topic :: Software Development
|
|
17
|
+
Requires-Python: >=3.11
|
|
18
|
+
Description-Content-Type: text/markdown
|
|
19
|
+
|
|
20
|
+
# agent-guild
|
|
21
|
+
|
|
22
|
+
A ready-made **multi-agent setup for [Claude Code](https://claude.com/claude-code)**, installed into a project with one
|
|
23
|
+
command. A Sonnet **orchestrator** delegates to specialist subagents (Opus architect and grader, Sonnet coders, Haiku
|
|
24
|
+
utility), and three features come wired in:
|
|
25
|
+
|
|
26
|
+
- **Multiple agents**: `architect`, `coder` (parallel-safe), `code-grader` and `utility`, plus the orchestrator rules
|
|
27
|
+
that decide who does what: routing, briefs and reports. See [development-workflow.md](development-workflow.md).
|
|
28
|
+
- **Memory**, in two layers, so context survives between sessions:
|
|
29
|
+
- [memory-bank](https://github.com/illescasDaniel/memory-bank): *current state* (what's being worked on, decisions,
|
|
30
|
+
progress), in a git-tracked `memory/` folder.
|
|
31
|
+
- [jev-mem](https://github.com/illescasDaniel/jev-mem): *long-term facts*, recalled by relevance through an MCP
|
|
32
|
+
server and session hooks.
|
|
33
|
+
- **Spec-Driven Development (SDD)**, via [sdd-feature](https://github.com/illescasDaniel/sdd-feature-skill): specs,
|
|
34
|
+
design, interfaces, implementation and grading, with approval gates between phases. Opt-in per project.
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
uvx agent-guild /path/to/project
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
user
|
|
42
|
+
│ approvals (chat only)
|
|
43
|
+
▼
|
|
44
|
+
┌──────────────────────┐ reads/writes memory/ (state, gate status)
|
|
45
|
+
│ orchestrator (Sonnet)│ ───────────────▶ jevmem (facts) ← single writer
|
|
46
|
+
└──────────────────────┘ specs/, wireframes/
|
|
47
|
+
plans │ chunks │ grade │ chores │
|
|
48
|
+
▼ ▼ ▼ ▼
|
|
49
|
+
architect coder ×N code-grader utility
|
|
50
|
+
(Opus, RO) (Sonnet) (Opus, RO) (Haiku)
|
|
51
|
+
└── all read specs/, memory/, jevmem recall; report memory candidates + friction ──┘
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
> Not affiliated with or endorsed by Anthropic. "Claude" and "Claude Code" are trademarks of Anthropic.
|
|
55
|
+
|
|
56
|
+
## Files
|
|
57
|
+
|
|
58
|
+
| File | Install to | Role |
|
|
59
|
+
|---|---|---|
|
|
60
|
+
| [development-workflow.md](development-workflow.md) | imported from `~/.claude/CLAUDE.md` | Orchestrator rules: knowledge layers, routing, SDD phase → agent map, briefs, memory protocol |
|
|
61
|
+
| [agents/architect.md](agents/architect.md) | `~/.claude/agents/` | Opus, read-only. Plans, SDD Phase 1 design decisions, Phase 2 interfaces, root causes |
|
|
62
|
+
| [agents/coder.md](agents/coder.md) | `~/.claude/agents/` | Sonnet. Scoped implementation; parallel-safe |
|
|
63
|
+
| [agents/code-grader.md](agents/code-grader.md) | `~/.claude/agents/` | Opus, read-only. SDD Phase 5. Body identical to the sdd-feature skill's grader; only the frontmatter differs |
|
|
64
|
+
| [agents/utility.md](agents/utility.md) | `~/.claude/agents/` | Haiku. Checks, git, moves, bulk edits |
|
|
65
|
+
|
|
66
|
+
## Design choices
|
|
67
|
+
|
|
68
|
+
- **The orchestrator is the only writer of memory.** Parallel coders writing `memory/` would conflict, and someone has
|
|
69
|
+
to decide what is worth remembering. Subagents can read memory, including jevmem recall, and return **Memory
|
|
70
|
+
candidates** and **Friction** sections in their reports.
|
|
71
|
+
- **Subagents don't get the jevmem hooks.** The `SessionStart` and `UserPromptSubmit` hooks fire in the main session
|
|
72
|
+
only. So the agents that need history (architect, coder, grader) can call `memory_recall` themselves.
|
|
73
|
+
- **The files on disk are the hand-off.** Once a wireframe, `SPEC.md` or interfaces exist, briefs point to them
|
|
74
|
+
instead of restating them. That solves the cold-start problem without long prompts.
|
|
75
|
+
- **`disallowedTools` instead of a `tools` allowlist** for architect, coder and grader. They inherit project MCP
|
|
76
|
+
servers (e.g. code-navigation MCPs) without per-project edits, while jevmem writes and file edits stay
|
|
77
|
+
blocked where needed. `utility` keeps a plain allowlist.
|
|
78
|
+
- **The grader runs on Opus.** The code it grades was written by Sonnet coders, so a different, stronger model gives
|
|
79
|
+
a more independent review.
|
|
80
|
+
- **SDD is opt-in.** The global workflow uses SDD only when a project's `AGENTS.md` / `CLAUDE.md` adopts the Phase Gate
|
|
81
|
+
Protocol, or when you ask for the `sdd-feature` skill directly. Projects that don't want gates just leave the rule
|
|
82
|
+
out.
|
|
83
|
+
- **Gates and gate status.** SDD gates stay between the orchestrator and the user. The gate status is recorded in
|
|
84
|
+
`memory/activeContext.md`, so a new session resumes at the right gate.
|
|
85
|
+
|
|
86
|
+
## Install
|
|
87
|
+
|
|
88
|
+
### Quick: the installer (per project)
|
|
89
|
+
|
|
90
|
+
`agent-guild` copies everything into a project (plain copies, not links, so the project can edit them) and is
|
|
91
|
+
safe to re-run: files that differ from the shipped version are skipped unless you pass `--force`.
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
uvx agent-guild /path/to/project --dry-run
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
uvx agent-guild /path/to/project
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
It does, in the project:
|
|
102
|
+
|
|
103
|
+
- copies `agents/*.md` and `development-workflow.md` into `.claude/`;
|
|
104
|
+
- copies the `memory-bank`, `jev-memory` and `sdd-feature` skills into `.claude/skills/` (cloned from GitHub, or from
|
|
105
|
+
local clones with `--sources-dir DIR`);
|
|
106
|
+
- adds three removable sections to `CLAUDE.md`: *Agents and delegation*, *Memory bank* and *Phase Gate Protocol*. They
|
|
107
|
+
live in `CLAUDE.md`, not `AGENTS.md`, because they are rules for Claude Code and its subagents; `AGENTS.md` stays
|
|
108
|
+
tool-neutral. If the project has an `AGENTS.md`, `CLAUDE.md` starts with `@AGENTS.md`. A section that `CLAUDE.md` or
|
|
109
|
+
`AGENTS.md` already has is not added again;
|
|
110
|
+
- adds the pinned jevmem server to `.mcp.json` and the jevmem hooks to `.claude/settings.json`, merging into existing
|
|
111
|
+
files;
|
|
112
|
+
- sets `autoMemoryEnabled: false` and the project's model to `sonnet`.
|
|
113
|
+
|
|
114
|
+
| Flag | Effect |
|
|
115
|
+
|---|---|
|
|
116
|
+
| `--without sdd` / `memory-bank` / `jevmem` | Leave a component out. `sdd` also drops `code-grader` and the gate section; `jevmem` drops its skill, server, hooks and the auto-memory switch |
|
|
117
|
+
| `--model ALIAS` | Project main-session model; default `sonnet` (the per-project alternative to the global setting below), `none` leaves it unset |
|
|
118
|
+
| `--import-cursor-skills` | Also copy the project's `.cursor/skills/*` into `.claude/skills/`; skills that already exist are kept |
|
|
119
|
+
| `--personal-settings` | Put `--model` and `autoMemoryEnabled` in the git-ignored `.claude/settings.local.json` |
|
|
120
|
+
| `--import-auto-memory` | First import the project's existing auto-memory notes into jevmem |
|
|
121
|
+
| `--keep-auto-memory` | Don't switch auto-memory off |
|
|
122
|
+
| `--sources-dir DIR` | Use local clones named `memory-bank/`, `jev-mem/`, `sdd-feature-skill/` instead of GitHub |
|
|
123
|
+
| `--git-exclude` | List the files this run *creates* in `.git/info/exclude` (local to your clone, never committed), so you can try the setup without it showing in `git status`. Off by default: files are added normally and your git settings apply. Edits to files git already tracks (e.g. an existing `.mcp.json`) can't be hidden; the tool warns about them |
|
|
124
|
+
| `--force`, `--dry-run` | Overwrite edited copies; show the plan without writing |
|
|
125
|
+
|
|
126
|
+
Still per machine, once: `uvx jevmem config init` and `uvx --from jevmem jevmem warmup`.
|
|
127
|
+
|
|
128
|
+
The manual steps below do the same thing by hand, and also cover the per-machine variant.
|
|
129
|
+
|
|
130
|
+
### Manual install
|
|
131
|
+
|
|
132
|
+
Two parts:
|
|
133
|
+
|
|
134
|
+
1. **Agents and orchestrator rules**: always per machine. They're how you work, not part of any one project.
|
|
135
|
+
2. **Memory and skills** (jevmem MCP server and hooks, auto-memory switch, skills): **per project (recommended)** or
|
|
136
|
+
per machine. Pick one per project, not both. Doing both injects jevmem notes twice and registers the server twice.
|
|
137
|
+
|
|
138
|
+
### 1. Agents and orchestrator rules (per machine)
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
mkdir -p ~/.claude/agents && ln -s /path/to/agent-guild/agents/*.md ~/.claude/agents/
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
printf '\n@/path/to/agent-guild/development-workflow.md\n' >> ~/.claude/CLAUDE.md
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Orchestrator model: either globally, in `~/.claude/settings.json`, replace `"model": "opusplan"` with
|
|
149
|
+
`"model": "sonnet"`; or only for a project, with `"model": "sonnet"` in its `.claude/settings.json` (or
|
|
150
|
+
`.claude/settings.local.json` to keep it personal). The installer does the latter by default.
|
|
151
|
+
|
|
152
|
+
jevmem's own settings (API key or local model, `~/.jevmem/config.jsonc`) and its embedding model are per machine
|
|
153
|
+
either way:
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
uvx jevmem config init
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
uvx --from jevmem jevmem warmup
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### 2a. Memory and skills per project (recommended)
|
|
164
|
+
|
|
165
|
+
Everything lives in the repo and is committed. Worktrees, branches and other contributors get the same setup, and
|
|
166
|
+
nothing leaks into projects that don't use it.
|
|
167
|
+
|
|
168
|
+
Run these from the project's root.
|
|
169
|
+
|
|
170
|
+
**Skills**, into `.claude/skills/`:
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
npx skills add illescasDaniel/memory-bank -a claude-code -y
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
npx skills add illescasDaniel/sdd-feature-skill -a claude-code -y
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
The `jev-memory` skill isn't packaged for `npx skills`. Copy it from a clone of jev-mem:
|
|
181
|
+
|
|
182
|
+
```bash
|
|
183
|
+
cp -r jev-mem/.claude/skills/jev-memory .claude/skills/
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
**jevmem MCP server**, in the project's `.mcp.json`, pinned:
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
claude mcp add --scope project jevmem -- uvx --from "jevmem>=0.4.0,<0.5" jevmem-mcp
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
If you already registered jevmem at user scope (`claude mcp add --scope user jevmem …`), that works too. The server
|
|
193
|
+
only provides tools and injects nothing, and notes are stored per project (`project:<repo name>`) either way. Keep
|
|
194
|
+
just one registration, so the server isn't listed twice.
|
|
195
|
+
|
|
196
|
+
**Hooks and auto-memory switch**, in the project's `.claude/settings.json`:
|
|
197
|
+
|
|
198
|
+
```json
|
|
199
|
+
{
|
|
200
|
+
"autoMemoryEnabled": false,
|
|
201
|
+
"hooks": {
|
|
202
|
+
"SessionStart": [{"hooks": [{"type": "command", "command": "uvx --from \"jevmem>=0.4.0,<0.5\" jevmem hook session-start", "timeout": 15}]}],
|
|
203
|
+
"UserPromptSubmit": [{"hooks": [{"type": "command", "command": "uvx --from \"jevmem>=0.4.0,<0.5\" jevmem hook user-prompt", "timeout": 20}]}]
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
Before setting `autoMemoryEnabled: false`, import the project's existing auto-memory notes (see
|
|
209
|
+
[Importing auto-memory](#importing-auto-memory)). To turn auto-memory off only for yourself, without committing the
|
|
210
|
+
change, put that key in `.claude/settings.local.json` instead.
|
|
211
|
+
|
|
212
|
+
**Rules**, in the project's `AGENTS.md` / `CLAUDE.md`:
|
|
213
|
+
|
|
214
|
+
- **Memory bank**: the snippet from the [memory-bank README](https://github.com/illescasDaniel/memory-bank#use-it),
|
|
215
|
+
then ask the agent to "set up the memory bank".
|
|
216
|
+
- **SDD, if wanted**: the Phase Gate Protocol snippet from the
|
|
217
|
+
[sdd-feature README](https://github.com/illescasDaniel/sdd-feature-skill#add-this-to-your-agentsmd--claudemd),
|
|
218
|
+
adjusted to the project's paths. Leave it out to keep SDD manual: the skill still works when you ask for it.
|
|
219
|
+
- **Quality gate command, test conventions, code-navigation MCPs**: the agents look for these there.
|
|
220
|
+
|
|
221
|
+
### 2b. Memory and skills per machine
|
|
222
|
+
|
|
223
|
+
For when you want the same setup in every project without touching repos. Don't combine it with 2a in the same
|
|
224
|
+
project.
|
|
225
|
+
|
|
226
|
+
```bash
|
|
227
|
+
npx skills add illescasDaniel/memory-bank -a claude-code -g -y
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
```bash
|
|
231
|
+
npx skills add illescasDaniel/sdd-feature-skill -a claude-code -g -y
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
cp -r jev-mem/.claude/skills/jev-memory ~/.claude/skills/
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
```bash
|
|
239
|
+
claude mcp add --scope user jevmem -- uvx --from "jevmem>=0.4.0,<0.5" jevmem-mcp
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
In `~/.claude/settings.json`, add `"autoMemoryEnabled": false` at the top level. Then merge these hooks into the
|
|
243
|
+
existing `hooks` block, next to the `PreToolUse` one:
|
|
244
|
+
|
|
245
|
+
```json
|
|
246
|
+
"SessionStart": [{"hooks": [{"type": "command", "command": "uvx --from \"jevmem>=0.4.0,<0.5\" jevmem hook session-start", "timeout": 15}]}],
|
|
247
|
+
"UserPromptSubmit": [{"hooks": [{"type": "command", "command": "uvx --from \"jevmem>=0.4.0,<0.5\" jevmem hook user-prompt", "timeout": 20}]}]
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
Then remove the same hooks, server and skills from any project that already defines them.
|
|
251
|
+
|
|
252
|
+
The per-project rules in `AGENTS.md` / `CLAUDE.md` (memory bank snippet, optional SDD snippet, quality gate) are still
|
|
253
|
+
added per project.
|
|
254
|
+
|
|
255
|
+
### Importing auto-memory
|
|
256
|
+
|
|
257
|
+
Claude Code's built-in auto-memory (`~/.claude/projects/<encoded-path>/memory/*.md`) is a second fact store that
|
|
258
|
+
overlaps with jevmem. Before switching it off for a project, import its notes. Run this from the project's root, so
|
|
259
|
+
the notes land in the same `project:<name>` scope that the hooks and MCP server use. Point `--root` at that project's
|
|
260
|
+
folder only, because the default imports every project's memory at once:
|
|
261
|
+
|
|
262
|
+
```bash
|
|
263
|
+
uvx jevmem import-claude-memory --root ~/.claude/projects/<encoded-project-path>
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
- **Folder name:** the project's absolute path with `/` replaced by `-`.
|
|
267
|
+
- **Jev must be configured.** Writes are screened by Jev, so the key or local model must be set up, or the notes are
|
|
268
|
+
queued unscreened and hidden from recall.
|
|
269
|
+
- **Check the result** with `uvx jevmem list`, and `memory_forget` anything stale.
|
|
270
|
+
|
|
271
|
+
After the switch, the old files stay on disk, but Claude no longer reads or writes them. To turn auto-memory off for a
|
|
272
|
+
single shell instead, set the environment variable `CLAUDE_CODE_DISABLE_AUTO_MEMORY=1`.
|
|
273
|
+
|
|
274
|
+
## Development
|
|
275
|
+
|
|
276
|
+
```bash
|
|
277
|
+
git clone https://github.com/illescasDaniel/agent-guild && cd agent-guild
|
|
278
|
+
uv run pytest
|
|
279
|
+
uv run agent-guild /path/to/project --dry-run
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
From a checkout, the CLI reads `agents/`, `templates/` and `development-workflow.md` at the repo root; the published
|
|
283
|
+
wheel bundles them.
|
|
284
|
+
|
|
285
|
+
## License
|
|
286
|
+
|
|
287
|
+
[MIT](LICENSE)
|