Skip to content

Commit aa005b8

Browse files
authored
Merge pull request #27 from PyAutoLabs/claude/pyauto-skills-modernize-l29hxr
Re-home workflow skills out of Mind; retire handoff; record relocation
2 parents ba779b2 + f697fe1 commit aa005b8

28 files changed

Lines changed: 201 additions & 3613 deletions

File tree

README.md

Lines changed: 34 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -170,10 +170,13 @@ fine — write naturally, the AI fills in the rest.
170170
done
171171
```
172172

173-
Two slash commands operate over the prompt registry without starting work:
173+
The slash commands above are skills hosted across the organism (Brain, Heart) but
174+
all read/write Mind's registry via workspace-root-anchored paths. One operates
175+
over the registry without starting work:
174176

175177
- `/pyauto-status` — dashboard of `active.md`, `planned.md`, `complete.md`
176-
- `/handoff` — park a task on this machine and resume on another (mobile, laptop, server)
178+
(a PyAutoHeart status view). Continuity across execution environments needs no
179+
special step — any environment reads `active.md` and resumes an in-flight task.
177180

178181
---
179182

@@ -226,23 +229,20 @@ PyAutoMind/
226229
│ ├── status.sh ← prompt inventory helper
227230
│ └── prompt_sync.sh ← commit/push helpers sourced by skills
228231
229-
└── skills/ ← Claude Code skills tightly coupled to the prompt registry
230-
├── start_dev/
231-
├── start_library/
232-
├── start_workspace/
233-
├── ship_library/
234-
├── ship_workspace/
235-
├── pyauto-status/
236-
├── register_and_iterate/
237-
├── handoff/
238-
├── worktree_status/
239-
├── create_issue/
240-
└── plan_branches/
232+
└── skills/ ← Mind-owned skills + the ownership audit
233+
├── OWNERSHIP.md ← where every workflow skill lives, and why
234+
└── create_issue/ ← convert a prompt into a tracked GitHub issue
241235
```
242236

243-
The `skills/` here hold **only the skills that read or write `active.md` / prompt
244-
files**. General PyAuto tooling (release prep, dependency audits, smoke tests,
245-
lint sweeps) lives in `admin_jammy/skills/`.
237+
`PyAutoMind/skills/` now holds **only** the Mind-owned `create_issue` skill (plus
238+
`OWNERSHIP.md`). The development-workflow skills were re-homed to the organs that
239+
own them — **PyAutoBrain** (`start_dev`, `start_dev_for_user`, `plan_branches`,
240+
`start_library`, `start_workspace`, `ship_library`, `ship_workspace`,
241+
`register_and_iterate`), **PyAutoHeart** (`pyauto-status`, `pyauto-status-full`,
242+
`worktree_status`), and **autolens_profiling** (`profile_likelihood`). The
243+
`handoff` skill was retired (PyAutoBrain runs uniformly across execution
244+
environments — see `OWNERSHIP.md`). General PyAuto tooling (release prep,
245+
dependency audits, smoke tests, lint sweeps) lives in `admin_jammy/skills/`.
246246

247247
`scripts/prompt_sync.sh` is sourced by skills that mutate registry files
248248
(`active.md`, `complete.md`, etc.) to commit and push back to origin. It
@@ -439,10 +439,9 @@ flags anything in `z_vault/` that's been sitting for a while.
439439

440440
### From inside Claude Code
441441

442-
- `/pyauto-status` — dashboard of registry state (active, planned, recent complete)
443-
- `/start_dev <category>/<name>.md` — read a prompt and route it
444-
- `/handoff park` / `/handoff resume` — cross-machine task transitions
445-
- `/worktree_status` — cross-references registry with task worktrees
442+
- `/pyauto-status` — dashboard of registry state (active, planned, recent complete; PyAutoHeart)
443+
- `/start_dev <work-type>/<target>/<name>.md` — read a prompt and route it (PyAutoBrain)
444+
- `/worktree_status` — cross-references registry with task worktrees (PyAutoHeart)
446445

447446
---
448447

@@ -472,28 +471,20 @@ absolute path.
472471

473472
```bash
474473
cd ~/Code/PyAutoLabs
475-
# Until the GitHub-side rename (PyAutoPrompt -> PyAutoMind) lands, clone the old
476-
# URL into a PyAutoMind/ directory: the old URL works now and redirects after the
477-
# rename, and the documented commands all assume a `PyAutoMind/` checkout. Once
478-
# the rename lands, `git clone git@github.com:PyAutoLabs/PyAutoMind.git` works too.
479-
git clone git@github.com:PyAutoLabs/PyAutoPrompt.git PyAutoMind
480-
git clone git@github.com:Jammy2211/admin_jammy.git # if not already present
474+
git clone git@github.com:PyAutoLabs/PyAutoMind.git # the Mind (this repo)
475+
git clone git@github.com:PyAutoLabs/PyAutoBrain.git # dev-workflow skills
476+
git clone git@github.com:PyAutoLabs/PyAutoHeart.git # status / readiness skills
477+
git clone git@github.com:Jammy2211/admin_jammy.git # installer + general tooling
481478
bash admin_jammy/skills/install.sh # symlinks skills + commands
482479
```
483480

484-
> **Note on the rename.** This repository is being renamed from **PyAutoPrompt**
485-
> to **PyAutoMind**. The GitHub-side rename is a separate admin action; once it
486-
> lands, GitHub redirects the old `PyAutoLabs/PyAutoPrompt` URL to the new one, so
487-
> existing clones keep working — update your remote with
488-
> `git remote set-url origin git@github.com:PyAutoLabs/PyAutoMind.git`.
489-
>
490-
> **The local checkout directory must be named `PyAutoMind`** (or symlinked with
491-
> `ln -s PyAutoPrompt PyAutoMind`). The skill and script docs reference
492-
> `PyAutoMind/...` paths directly — e.g. `source PyAutoMind/scripts/prompt_sync.sh`
493-
> and `git -C PyAutoMind …` — so a directory still named `PyAutoPrompt` will break
494-
> those commands. (The `prompt_sync.sh` fallback only covers automatic
495-
> `PROMPT_REPO` resolution, not these literal documented paths.)
496-
497-
`install.sh` auto-discovers skills from both `admin_jammy/skills/` and
498-
`PyAutoMind/skills/` and creates symlinks under `~/.claude/skills/` and
499-
`~/.claude/commands/`. Re-run any time after pulling new skills from either repo.
481+
> **The local checkout directory must be named `PyAutoMind`.** The skills and
482+
> scripts reference `PyAutoMind/...` paths directly — e.g.
483+
> `source PyAutoMind/scripts/prompt_sync.sh` and `git -C PyAutoMind …` — so a
484+
> differently-named directory breaks those commands.
485+
486+
`install.sh` auto-discovers skills from every present discovery root
487+
(`admin_jammy/skills/`, `PyAutoMind/skills/`, `PyAutoBrain/skills/`,
488+
`PyAutoHeart/skills/`, `autolens_profiling/skills/`) and creates symlinks under
489+
`~/.claude/skills/` and `~/.claude/commands/`. Roots that aren't checked out are
490+
skipped. Re-run any time after pulling new skills from any of those repos.

scripts/pyauto_status.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
# Suppressed when no JSONs exist.
3636
#
3737
# Note: this shell function shares its name with the /pyauto-status slash
38-
# command (PyAutoMind/skills/pyauto-status/) but lives in a different
38+
# command (PyAutoHeart/skills/pyauto-status/) but lives in a different
3939
# namespace. The slash command shows workflow registry status (planned /
4040
# active / complete tasks); this function shows git sync state.
4141

scripts/pyauto_status_full.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
# pyauto-status-full ~/Code/PyAutoLabs/PyAutoBuild/test_results/runs/2026-04-29T14-48-47Z
2323
#
2424
# Note: this shell function shares its name with the /pyauto-status-full
25-
# slash command (PyAutoMind/skills/pyauto-status-full/) but lives in a
25+
# slash command (PyAutoHeart/skills/pyauto-status-full/) but lives in a
2626
# different namespace. The slash command is the conversational layer; this
2727
# function is the same data, printed straight to stdout, no Claude needed.
2828

skills/OWNERSHIP.md

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
# PyAuto workflow skill ownership — audit + relocation
2+
3+
Originally an **ownership/location audit** (PR #26); this version records the
4+
**completed relocation** done by the skill-redesign task (`autoprompt/skill_redesign.md`).
5+
Each workflow skill now lives in the organ that owns its responsibility, command
6+
names preserved, discovery wired up via `admin_jammy/skills/install.sh`.
7+
8+
## What moved (and why)
9+
10+
Ownership reconciled with the **actual** organism boundary docs
11+
(`PyAutoBrain/AGENTS.md`, `PyAutoBuild/AGENTS.md`), not the aspirational mapping
12+
in `skill_redesign.md`:
13+
14+
- **Mind** = intent + task-registry state.
15+
- **Memory** = accumulated knowledge (consulted for context).
16+
- **Brain** = reasoning + how-work-gets-done; **owns the development workflow**.
17+
- **Heart** = health / validation / readiness gates.
18+
- **Build (Hands)** = **release/packaging executor only** (tag / notebooks / PyPI
19+
via `release.yml`). It owns **no** workflow skills; `ship_*` is feature-dev work
20+
that only *calls* Build's release step at release time.
21+
22+
| Skill | New home | Recommended owner | Action taken |
23+
|-------|----------|-------------------|--------------|
24+
| `create_issue` | `PyAutoMind/skills/` | **PyAutoMind** — the issue+registry **primitive** (Brain's `/start_dev` delegates the issue write to it; runnable standalone) | kept in Mind |
25+
| `start_dev` | `PyAutoBrain/skills/` | **PyAutoBrain** (classification/routing entry) | **moved → Brain** |
26+
| `start_dev_for_user` | `PyAutoBrain/skills/` | **PyAutoBrain** (routing variant) | **moved → Brain** |
27+
| `plan_branches` | `PyAutoBrain/skills/` | **PyAutoBrain** (planning) | **moved → Brain** |
28+
| `start_library` | `PyAutoBrain/skills/` | **PyAutoBrain** (dev-cycle setup) | **moved → Brain** |
29+
| `start_workspace` | `PyAutoBrain/skills/` | **PyAutoBrain** (dev-cycle setup) | **moved → Brain** |
30+
| `ship_library` | `PyAutoBrain/skills/` | **PyAutoBrain** dev-workflow → Heart gate (Build only at release) | **moved → Brain** |
31+
| `ship_workspace` | `PyAutoBrain/skills/` | **PyAutoBrain** dev-workflow → Heart gate (Build only at release) | **moved → Brain** |
32+
| `register_and_iterate` | `PyAutoBrain/skills/` | **PyAutoBrain** (dev-workflow orchestration loop) | **moved → Brain** |
33+
| `repo_cleanup` | `PyAutoBrain/skills/` | **PyAutoBrain** (between-tasks git hygiene; Heart observes, Brain decides + executes — natural home is a future Cleanup Agent) | **moved → Brain** (from admin_jammy) |
34+
| `pyauto-status` | `PyAutoHeart/skills/` | **PyAutoHeart** (status/readiness view) | **moved → Heart** |
35+
| `pyauto-status-full` | `PyAutoHeart/skills/` | **PyAutoHeart** (release-readiness dashboard) | **moved → Heart** |
36+
| `worktree_status` | `PyAutoHeart/skills/` | **PyAutoHeart** (diagnostic) | **moved → Heart** |
37+
| `profile_likelihood` | `autolens_profiling/skills/` | **`autolens_profiling`** (science profiling) | **moved → autolens_profiling** |
38+
| `handoff` | — (removed) || **deleted** — the phone↔laptop park/resume dance is obsolete now PyAutoBrain runs uniformly across execution environments; `active.md` is the shared task state, so any environment resumes a task directly |
39+
40+
### Second wave — general admin_jammy skills
41+
42+
A follow-up pass re-homed the remaining admin_jammy skills so `admin_jammy/`
43+
trends toward installer + tooling only:
44+
45+
- **→ PyAutoHeart** (read-only validation/readiness checks): `dep_audit`,
46+
`verify_install`, `review_release`, `audit_docs`, `cli_noise_clean`.
47+
- **→ PyAutoBrain** (dev-workflow): `update_issue`, `repo_cleanup`.
48+
- **→ PyAutoBuild** (release execution): `pre_build`. PyAutoBuild now has a
49+
`skills/` root for its **release-execution** skills only — it still owns no
50+
dev-workflow skills (`ship_*` live in Brain and only *call* its release step).
51+
- **Removed:** `start-new-project` was a duplicate of the canonical science-project
52+
skill already owned by `autolens_assistant` (`skills/start-new-project.md`),
53+
so the admin_jammy fork was deleted rather than moved.
54+
55+
After this, `admin_jammy/skills/` hosts **no skills** — only the installer
56+
(`install.sh`) and the line-count guard (`check_skill_line_counts.sh`).
57+
58+
(`*/agents/openai.yaml` and the `SKILL.md``<name>.md` pairs are bundled Codex
59+
agent configs / dispatcher+body pairs, not separate skills. Long-form detail was
60+
factored into per-skill `reference.md` files and the shared
61+
`PyAutoBrain/skills/WORKFLOW.md`, keeping every primary skill file under 200
62+
lines.)
63+
64+
## Discovery
65+
66+
`admin_jammy/skills/install.sh` now scans these roots and symlinks skills into
67+
`~/.claude/skills/` and commands into `~/.claude/commands/`:
68+
69+
- `admin_jammy/skills/` — general PyAuto tooling
70+
- `PyAutoMind/skills/` — registry-coupled (`create_issue`)
71+
- `PyAutoBrain/skills/` — development-workflow
72+
- `PyAutoHeart/skills/` — status / readiness
73+
- `autolens_profiling/skills/` — science profiling
74+
75+
**PyAutoBuild's `skills/` root holds release-execution skills only** (`pre_build`)
76+
— it owns no *dev-workflow* skills; `ship_*` live in Brain and only call its
77+
release step. Registry
78+
references stay workspace-root-anchored (`PyAutoMind/active.md`,
79+
`PyAutoMind/complete.md`, `source PyAutoMind/scripts/prompt_sync.sh`), which
80+
resolve from any sibling repo, so the moved skills keep working unchanged.
81+
82+
## Redesign summary
83+
84+
The moves were paired with the redesign in `autoprompt/skill_redesign.md`:
85+
86+
- Skills are **thin entry points** that delegate to the organism — Brain reasons
87+
and routes (Feature/Build/Health agents), Heart gates ship via
88+
`pyauto-heart readiness`, Build executes release only, Mind holds state, Memory
89+
supplies context.
90+
- `start_dev` routes through the **Feature Agent** (+ Memory); `ship_*` gates
91+
through the **Health Agent → Heart** before the dev workflow commits/pushes/PRs.
92+
- "Remote / mobile mode" is gone, replaced by the general execution-environment
93+
model (`local-dev` / `web-github` / `ci-only` / `analysis-only`) in
94+
`PyAutoBrain/skills/WORKFLOW.md`. No phone↔laptop handoff concept remains.
95+
- Command names and the start/ship lifecycle are preserved.
96+
97+
## Validation
98+
99+
- `bash admin_jammy/skills/install.sh` → every moved `/command` resolves.
100+
- `find <each skills dir> -type l` → no stray symlinks in source.
101+
- `bash admin_jammy/skills/check_skill_line_counts.sh` → all primary workflow
102+
skill files within 200 lines.
103+
- Grep for stale `PyAutoMind/skills/` workflow paths and mobile/remote-mode terms
104+
→ clean across the moved skills.

0 commit comments

Comments
 (0)