Skip to content

Commit 0c1fc82

Browse files
authored
Merge pull request #831 from aRustyDev/pr/2-phases-8-9-catalog
feat: Phases 8-9 + catalog pipeline refactor
2 parents 786857e + 212cffd commit 0c1fc82

66 files changed

Lines changed: 3891 additions & 1196 deletions

File tree

Some content is hidden

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

.github/pre-commit/ruff.toml

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ exclude = [
1212
"node_modules",
1313
"dist",
1414
"build",
15-
"context/.context",
16-
"context/skills/**/examples",
17-
"context/skills/**/references",
15+
"content/.context",
16+
"content/skills/**/examples",
17+
"content/skills/**/references",
1818
]
1919

2020
[lint]
@@ -43,6 +43,9 @@ ignore = [
4343
[lint.per-file-ignores]
4444
".scripts/**/*.py" = ["T201"] # Allow print in scripts
4545
"tests/**/*.py" = ["S101"] # Allow assert in tests
46+
"packages/cli/*.py" = [
47+
"ARG001", "B007", "PLR0911", # Utility scripts with flexible patterns
48+
]
4649
# Agent code has dynamic imports and internal patterns
4750
".claude/agents/**/*.py" = [
4851
"ARG001", # Unused function args (hook signatures)
@@ -71,6 +74,15 @@ ignore = [
7174
"UP038", # isinstance union style
7275
]
7376
".claude/agents/**/tests/*.py" = ["S101"] # Allow assert in tests
77+
# content/agents has same patterns as .claude/agents
78+
"content/agents/**/*.py" = [
79+
"ARG001", "ARG002", "ARG003", "ARG005",
80+
"B007", "B011", "B904", "C416", "E402",
81+
"PLR0912", "PLR0915", "PLW0603", "PLW2901",
82+
"PTH123", "RUF001", "RUF005", "RUF012", "RUF022",
83+
"SIM102", "SIM103", "SIM105", "SIM115", "SIM117", "UP038",
84+
]
85+
"content/agents/**/tests/*.py" = ["S101"]
7486

7587
[lint.isort]
7688
known-first-party = [".scripts"]

.github/pre-commit/words/project.txt

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ asciinema
1414
ashleytower
1515
atcyrus
1616
awesomeclaude
17+
backfillable
1718
BehiSecc
1819
biome
1920
blader
@@ -25,6 +26,7 @@ bunx
2526
burpsuite
2627
cchooks
2728
cclint
29+
ccflare
2830
ccpm
2931
CHANGEME
3032
chunker
@@ -39,6 +41,7 @@ codebase
3941
codebases
4042
codecov
4143
codegraph
44+
compdef
4245
Composio
4346
Cpath
4447
crawl4ai
@@ -57,10 +60,14 @@ DTCG
5760
Duplicat
5861
elec
5962
embeddings
63+
ename
64+
eslug
65+
etype
6066
etypes
6167
fastmcp
6268
FDTD
6369
ffuf
70+
filetree
6471
Floorplan
6572
flowgpt
6673
forceatlas
@@ -92,7 +99,9 @@ jqueryscript
9299
justfile
93100
kwsites
94101
lackeyjb
102+
lastrowid
95103
LAPACK
104+
lintable
96105
litdb
97106
Livelocks
98107
lockfiles
@@ -112,6 +121,8 @@ mihaelamj
112121
modelcontextprotocol
113122
monorepo
114123
mousemovebody
124+
mycomponent
125+
mycomponentv
115126
myns
116127
myproject
117128
myskill
@@ -125,6 +136,7 @@ ollama
125136
onlynamespace
126137
opto
127138
orbstack
139+
orgname
128140
overclaiming
129141
pargs
130142
pdate
@@ -154,6 +166,8 @@ pytestmark
154166
radon
155167
rahulvrane
156168
recieve
169+
rels
170+
reclassifiable
157171
reprioritize
158172
rereview
159173
ripgrep
@@ -171,16 +185,19 @@ shellharden
171185
shfmt
172186
simctl
173187
skillmd
188+
skillsize
174189
skillsmp
175190
slugified
176191
smithery
192+
smol
177193
sonnet
178194
Sortability
179195
sourcekit
180196
sqlfluff
181197
sqlite
182198
STDP
183199
subagent
200+
subdirs
184201
subviews
185202
Sundell
186203
surrealdb
@@ -193,6 +210,7 @@ swiftui
193210
SwiftUI
194211
Tauri
195212
tenequm
213+
testuser
196214
timebox
197215
tmppath
198216
tokei
@@ -242,8 +260,3 @@ yamllint
242260
yara
243261
zeroize
244262
Zotero
245-
reclassifiable
246-
backfillable
247-
subdirs
248-
filetree
249-
skillsize

.github/pre-commit/words/tools.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ citty
3535
clojars
3636
codefuse
3737
codegen
38+
compdef
3839
coderabbit
3940
colorlinks
4041
Columnstore

CLAUDE.md

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ brew bundle
3030

3131
Add new tools to `brewfile`, not installed ad-hoc.
3232

33-
### TypeScript Dependencies (cli/package.json)
33+
### TypeScript Dependencies (packages/cli/package.json)
3434

3535
TypeScript tooling is managed via Bun:
3636

@@ -39,13 +39,13 @@ TypeScript tooling is managed via Bun:
3939
cd packages/cli && bun install
4040

4141
# Run the CLI tool
42-
bun run packages/cli/src/bin/agents.ts <noun> <verb> [args]
42+
bun run packages/cli/src/bin/agents.ts <verb> <type> [args]
4343

4444
# Or via justfile
45-
just agents <noun> <verb> [args]
45+
just agents <verb> <type> [args]
4646

4747
# Run tests
48-
cd packages/cli && bun test
48+
bun test --cwd packages/cli
4949
```
5050

5151
The `bun.lock` file is version controlled for reproducible installs.
@@ -89,6 +89,8 @@ See `docs/src/adr/` for architecture decisions.
8989
├── brewfile # Tool dependencies (Homebrew)
9090
├── pyproject.toml # Python dependencies (uv)
9191
├── justfile # Task runner
92+
├── package.json # Root workspace (Bun)
93+
├── bun.lock # Lockfile (version controlled)
9294
├── CLAUDE.md # This file
9395
├── .data/
9496
│ └── mcp/
@@ -99,15 +101,19 @@ See `docs/src/adr/` for architecture decisions.
99101
│ ├── commands/ # Slash commands
100102
│ ├── skills/ # SKILL.md files
101103
│ ├── rules/ # Rule files
104+
│ ├── hooks/ # Hook scripts
102105
│ ├── plugins/ # Plugin bundles
103106
│ └── output-styles/ # Output formatting styles
104-
├── cli/
105-
│ ├── bin/agents.ts # Unified CLI (Bun + Citty)
106-
│ ├── lib/ # TypeScript modules (hash, output, schemas, etc.)
107-
│ ├── commands/ # CLI subcommands (plugin, skill, kg, registry)
108-
│ ├── test/ # bun:test suites
109-
│ ├── embed.py # KG embedding CLI (Python, sqlite-vec)
110-
│ └── sql/ # SQL query files
107+
├── packages/
108+
│ └── cli/
109+
│ ├── package.json # CLI package
110+
│ └── src/
111+
│ ├── bin/agents.ts # CLI entrypoint
112+
│ ├── commands/ # Command modules (verb-first + legacy)
113+
│ ├── lib/ # Shared library modules
114+
│ ├── client/ # Graph viewer frontend
115+
│ ├── server/ # Graph viewer backend
116+
│ └── sql/ # SQL query files
111117
├── settings/
112118
│ └── mcp/ # MCP server configurations
113119
└── docs/
@@ -122,9 +128,9 @@ See `docs/src/adr/` for architecture decisions.
122128
|------|---------|
123129
| Initialize project | `just init` |
124130
| Install to ~/.claude | `just install` |
125-
| **CLI tool** | `just agents <noun> <verb> [args]` |
126-
| Plugin check | `just agents plugin check <name>` |
127-
| Skill validate | `just agents skill validate <name>` |
131+
| **CLI tool** | `just agents <verb> <type> [args]` |
132+
| Plugin check | `just agents lint --type plugin <name>` |
133+
| Skill validate | `just agents lint --type skill <name>` |
128134
| External skill check | `just skill external:check` |
129135
| Semantic search | `just kg-search "query"` |
130136

@@ -178,9 +184,9 @@ See `.claude/skills/beads/` for full documentation.
178184
## Conventions
179185

180186
- **Brewfile**: Tool-level dependencies only (ollama, uv, bun, yq, etc.)
181-
- **package.json** (`cli/`): TypeScript packages for `agents` CLI (Bun)
187+
- **package.json** (`packages/cli/`): TypeScript packages for `agents` CLI (Bun)
182188
- **pyproject.toml**: Python packages for KG only (sqlite-vec, ollama, watchdog)
183189
- **`just init`**: Must be idempotent — safe to run multiple times
184190
- **SQL dumps**: `.data/**/*.sql` files are version controlled; `.db` files are gitignored
185191
- **Plans**: Written as markdown in `.claude/plans/`, converted to beads issues
186-
- **`agents`**: Unified CLI tool — `just agents <noun> <verb>` for plugin/skill/registry operations
192+
- **`agents`**: Unified CLI tool — `just agents <verb> <type>` for plugin/skill/registry operations (verb-first grammar)

README.md

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,16 @@ content/ Component source of truth
2323
└── reference/ Reference documentation
2424
2525
packages/cli/ TypeScript tooling (Bun + Citty)
26-
├── bin/agents.ts CLI entrypoint
27-
├── commands/ CLI command trees (skill, mcp, component, plugin, ...)
28-
├── lib/ Library modules
29-
│ ├── component/ Universal component model (7 providers)
30-
│ ├── skill-*.ts Skill lifecycle (add/find/list/outdated/update/remove/info/init)
31-
│ └── ... Hash, lockfile, output, runtime, schemas, etc.
26+
├── src/
27+
│ ├── bin/agents.ts CLI entrypoint
28+
│ ├── commands/ Command modules (verb-first + legacy noun-first)
29+
│ ├── lib/ Library modules
30+
│ │ ├── component/ Universal component model (7 providers)
31+
│ │ ├── skill-*.ts Skill lifecycle (add/find/list/outdated/update/remove/info/init)
32+
│ │ └── ... Hash, lockfile, output, runtime, schemas, etc.
33+
│ ├── client/ Graph viewer frontend
34+
│ ├── server/ Graph viewer backend
35+
│ └── sql/ SQL query files
3236
└── test/ bun:test suites (900+ tests)
3337
3438
settings/mcp/ MCP server configurations
@@ -133,11 +137,11 @@ Curated plugins at `.claude-plugin/marketplace.json`:
133137
## Development
134138

135139
```bash
136-
just init # One-time setup
137-
cd cli && bun test # Run all tests
138-
cd cli && bun test test/component/ # Component tests only
139-
just agents skill validate <name> # Validate a skill
140-
just agents plugin check <name> # Validate a plugin
140+
just init # One-time setup
141+
bun test --cwd packages/cli # Run all tests
142+
bun test --cwd packages/cli test/component/ # Component tests only
143+
just agents lint --type skill <name> # Validate a skill
144+
just agents lint --type plugin <name> # Validate a plugin
141145
```
142146

143147
## License

content/agents/meta/skills/pr-addresser.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ just -f .claude/agents/skill-pr-addresser/justfile status 795
4141
just -f .claude/agents/skill-pr-addresser/justfile address-dry 795
4242

4343
# Specify skill explicitly (instead of auto-detecting from changed files)
44-
just -f .claude/agents/skill-pr-addresser/justfile address-skill 795 components/skills/lang-rust-dev
44+
just -f .claude/agents/skill-pr-addresser/justfile address-skill 795 content/skills/lang-rust-dev
4545

4646
# Force addressing even if no pending feedback detected
4747
just -f .claude/agents/skill-pr-addresser/justfile address 795 --force

content/agents/skill-pr-addresser/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -239,10 +239,10 @@ gh pr view 795 --json state
239239

240240
### "Could not infer skill path"
241241

242-
The changed files don't match `components/skills/*`. Specify explicitly:
242+
The changed files don't match `content/skills/*`. Specify explicitly:
243243

244244
```bash
245-
just address-skill 795 components/skills/lang-rust-dev
245+
just address-skill 795 content/skills/lang-rust-dev
246246
```
247247

248248
## Related

content/agents/skill-pr-addresser/data/sessions/6de157aa/session.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"session_id": "6de157aa",
3-
"skill_path": "components/skills/github-app-dev",
3+
"skill_path": "content/skills/github-app-dev",
44
"issue_number": 692,
55
"repo_owner": "aRustyDev",
66
"repo_name": "ai",
@@ -27,7 +27,7 @@
2727
"addressed": 4,
2828
"skipped": 0,
2929
"files_modified": [
30-
"components/skills/github-app-dev/SKILL.md",
30+
"content/skills/github-app-dev/SKILL.md",
3131
"SKILL.md"
3232
],
3333
"commit_sha": "d105357f7267e0a7bcbc66158830f4460aa06726",

content/agents/skill-pr-addresser/src/github_pr.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -509,10 +509,10 @@ def infer_skill_from_files(changed_files: list[str]) -> str | None:
509509
changed_files: List of file paths changed in PR
510510
511511
Returns:
512-
Skill path (e.g., "components/skills/lang-rust-dev") or None
512+
Skill path (e.g., "content/skills/lang-rust-dev") or None
513513
"""
514514
for f in changed_files:
515-
if f.startswith("components/skills/"):
515+
if f.startswith("content/skills/"):
516516
parts = f.split("/")
517517
if len(parts) >= 3:
518518
return "/".join(parts[:3])

content/agents/skill-pr-addresser/subagents/feedback-fixer/prompt.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,13 @@ You are implementing fixes for PR review feedback on a Claude Code skill.
55
## Context
66

77
- **Working directory**: A git worktree with the skill checked out
8-
- **Skill path**: Will be provided (e.g., `components/skills/lang-rust-dev`)
8+
- **Skill path**: Will be provided (e.g., `content/skills/lang-rust-dev`)
99
- **Action group**: A consolidated set of similar feedback items
1010

1111
## Understanding Action Groups
1212

1313
An action group represents **related feedback that should be addressed together**. For example:
14+
1415
- "Move to examples" with 4 locations means: move content at lines 239, 398, 671, 733 to examples/
1516
- "Move to references" with 2 locations means: move content at those lines to reference/
1617

@@ -57,14 +58,15 @@ If told to move content at lines 239, 398, 671 to examples/:
5758
2. Identify what each code block demonstrates
5859
3. Create appropriate example files (e.g., `examples/tracing.ts`, `examples/webhooks.ts`)
5960
4. Replace original content with reference links like:
60-
```markdown
61-
See [examples/tracing.ts](examples/tracing.ts) for implementation.
62-
```
61+
62+
See [examples/tracing.ts](examples/tracing.ts) for implementation.
63+
6364
5. Ensure the SKILL.md remains under 500 lines
6465

6566
## What You Can Skip
6667

6768
Skip items that:
69+
6870
- Require changes outside the skill directory
6971
- Need access to external APIs or resources
7072
- Involve architectural decisions beyond the skill scope

0 commit comments

Comments
 (0)