jaymd96-pants-clawthor 0.1.0__tar.gz → 0.1.2__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.
- jaymd96_pants_clawthor-0.1.2/PKG-INFO +242 -0
- jaymd96_pants_clawthor-0.1.2/README.md +210 -0
- {jaymd96_pants_clawthor-0.1.0 → jaymd96_pants_clawthor-0.1.2}/pyproject.toml +2 -4
- {jaymd96_pants_clawthor-0.1.0 → jaymd96_pants_clawthor-0.1.2}/src/pants_clawthor/register.py +1 -6
- {jaymd96_pants_clawthor-0.1.0 → jaymd96_pants_clawthor-0.1.2}/src/pants_clawthor/rules.py +21 -13
- jaymd96_pants_clawthor-0.1.0/PKG-INFO +0 -293
- jaymd96_pants_clawthor-0.1.0/README.md +0 -260
- {jaymd96_pants_clawthor-0.1.0 → jaymd96_pants_clawthor-0.1.2}/.gitignore +0 -0
- {jaymd96_pants_clawthor-0.1.0 → jaymd96_pants_clawthor-0.1.2}/BUILD +0 -0
- {jaymd96_pants_clawthor-0.1.0 → jaymd96_pants_clawthor-0.1.2}/LICENSE +0 -0
- {jaymd96_pants_clawthor-0.1.0 → jaymd96_pants_clawthor-0.1.2}/MANIFEST.in +0 -0
- {jaymd96_pants_clawthor-0.1.0 → jaymd96_pants_clawthor-0.1.2}/src/pants_clawthor/__init__.py +0 -0
- {jaymd96_pants_clawthor-0.1.0 → jaymd96_pants_clawthor-0.1.2}/src/pants_clawthor/targets.py +0 -0
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: jaymd96-pants-clawthor
|
|
3
|
+
Version: 0.1.2
|
|
4
|
+
Summary: Pants plugin for compiling Clawthor Claude Code plugins
|
|
5
|
+
Project-URL: Homepage, https://github.com/anthropics/clawthor
|
|
6
|
+
Project-URL: Documentation, https://github.com/anthropics/clawthor/tree/main/pants-plugin
|
|
7
|
+
Project-URL: Repository, https://github.com/anthropics/clawthor.git
|
|
8
|
+
Project-URL: Issues, https://github.com/anthropics/clawthor/issues
|
|
9
|
+
Author-email: jaymd96 <jay@anthropic.com>
|
|
10
|
+
License: MIT
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
Keywords: claude,clawthor,dsl,pants,plugin
|
|
13
|
+
Classifier: Development Status :: 3 - Alpha
|
|
14
|
+
Classifier: Environment :: Plugins
|
|
15
|
+
Classifier: Intended Audience :: Developers
|
|
16
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
17
|
+
Classifier: Operating System :: OS Independent
|
|
18
|
+
Classifier: Programming Language :: Python :: 3
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
23
|
+
Classifier: Topic :: Software Development :: Build Tools
|
|
24
|
+
Requires-Python: >=3.9
|
|
25
|
+
Provides-Extra: dev
|
|
26
|
+
Requires-Dist: black>=23.0; extra == 'dev'
|
|
27
|
+
Requires-Dist: flake8>=6.0; extra == 'dev'
|
|
28
|
+
Requires-Dist: isort>=5.0; extra == 'dev'
|
|
29
|
+
Requires-Dist: pytest-cov>=4.0; extra == 'dev'
|
|
30
|
+
Requires-Dist: pytest>=7.0; extra == 'dev'
|
|
31
|
+
Description-Content-Type: text/markdown
|
|
32
|
+
|
|
33
|
+
# Pants Clawthor Plugin
|
|
34
|
+
|
|
35
|
+
Optional Pants backend that compiles Clawthor plugins as part of your build.
|
|
36
|
+
|
|
37
|
+
**Use this when**: You define plugins in `BUILD` files and want automatic compilation via Pants.
|
|
38
|
+
|
|
39
|
+
**Don't use if**: You just want to compile manually with `clawthor compile` (use the gem directly instead).
|
|
40
|
+
|
|
41
|
+
## Installation
|
|
42
|
+
|
|
43
|
+
### 1. Install clawthor gem
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
gem install clawthor
|
|
47
|
+
which clawthor # Verify it's available
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### 2. Add to pants.toml
|
|
51
|
+
|
|
52
|
+
```toml
|
|
53
|
+
[GLOBAL]
|
|
54
|
+
plugins = [
|
|
55
|
+
"jaymd96-pants-clawthor==0.1.0",
|
|
56
|
+
]
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Requirements
|
|
60
|
+
|
|
61
|
+
- **Pants** 2.18+
|
|
62
|
+
- **Python** 3.9+
|
|
63
|
+
- **Ruby** 3.0+
|
|
64
|
+
- **clawthor gem** 0.3.0+
|
|
65
|
+
|
|
66
|
+
## Quick Start
|
|
67
|
+
|
|
68
|
+
### 1. Create a BUILD file
|
|
69
|
+
|
|
70
|
+
```python
|
|
71
|
+
# plugins/my_plugin/BUILD
|
|
72
|
+
claude_plugin(
|
|
73
|
+
name="my_plugin",
|
|
74
|
+
definition="definition.rb",
|
|
75
|
+
)
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### 2. Create definition.rb
|
|
79
|
+
|
|
80
|
+
```ruby
|
|
81
|
+
# plugins/my_plugin/definition.rb
|
|
82
|
+
workspace :my_plugin do
|
|
83
|
+
version "1.0.0"
|
|
84
|
+
author "My Team"
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
skill :example do
|
|
88
|
+
description "Example skill"
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
command :hello do
|
|
92
|
+
description "Say hello"
|
|
93
|
+
template { prompt "Say hello" }
|
|
94
|
+
end
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### 3. Build
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
pants build //plugins/my_plugin:my_plugin
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
That's it! Generated plugin is in `plugins/my_plugin/output/`.
|
|
104
|
+
|
|
105
|
+
## Target Options
|
|
106
|
+
|
|
107
|
+
| Option | Type | Default | Description |
|
|
108
|
+
|--------|------|---------|-------------|
|
|
109
|
+
| `definition` | string | required | Path to `definition.rb` |
|
|
110
|
+
| `output_dir` | string | `output` | Where to generate files |
|
|
111
|
+
| `marketplace` | bool | `false` | Use marketplace layout? |
|
|
112
|
+
|
|
113
|
+
## Examples
|
|
114
|
+
|
|
115
|
+
### Basic plugin
|
|
116
|
+
|
|
117
|
+
```python
|
|
118
|
+
# plugins/docs/BUILD
|
|
119
|
+
claude_plugin(
|
|
120
|
+
name="docs",
|
|
121
|
+
definition="definition.rb",
|
|
122
|
+
)
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### With modules
|
|
126
|
+
|
|
127
|
+
```python
|
|
128
|
+
# plugins/dev/BUILD
|
|
129
|
+
claude_plugin(
|
|
130
|
+
name="dev",
|
|
131
|
+
definition="definition.rb",
|
|
132
|
+
output_dir="plugin",
|
|
133
|
+
)
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
```ruby
|
|
137
|
+
# plugins/dev/definition.rb
|
|
138
|
+
workspace :dev_tools do
|
|
139
|
+
version "1.0.0"
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
require_relative './modules/planning'
|
|
143
|
+
use :planning
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Marketplace layout
|
|
147
|
+
|
|
148
|
+
```python
|
|
149
|
+
claude_plugin(
|
|
150
|
+
name="release",
|
|
151
|
+
definition="definition.rb",
|
|
152
|
+
marketplace=True,
|
|
153
|
+
)
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## Reusing Claudo modules
|
|
157
|
+
|
|
158
|
+
Copy Claudo modules into your project:
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
cp ../baseline/modules/planning.rb plugins/my_plugin/
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
Then use them:
|
|
165
|
+
|
|
166
|
+
```ruby
|
|
167
|
+
require_relative './modules/planning'
|
|
168
|
+
|
|
169
|
+
workspace :my_plugin do
|
|
170
|
+
use :planning
|
|
171
|
+
end
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
## Troubleshooting
|
|
175
|
+
|
|
176
|
+
### "clawthor command not found"
|
|
177
|
+
|
|
178
|
+
1. Install: `gem install clawthor`
|
|
179
|
+
2. Verify: `which clawthor`
|
|
180
|
+
3. If using rbenv/rvm, check Ruby version: `ruby --version`
|
|
181
|
+
|
|
182
|
+
### Compilation fails
|
|
183
|
+
|
|
184
|
+
Check definition file manually:
|
|
185
|
+
```bash
|
|
186
|
+
cd plugins/my_plugin
|
|
187
|
+
clawthor compile definition.rb output/
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### Path issues
|
|
191
|
+
|
|
192
|
+
Make sure `definition` is relative to the BUILD file:
|
|
193
|
+
|
|
194
|
+
```python
|
|
195
|
+
claude_plugin(
|
|
196
|
+
name="my_plugin",
|
|
197
|
+
definition="definition.rb", # Same dir as BUILD
|
|
198
|
+
)
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
## Development
|
|
202
|
+
|
|
203
|
+
### Setup
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
cd pants-plugin
|
|
207
|
+
hatch env create
|
|
208
|
+
hatch run test
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
### Test your backend
|
|
212
|
+
|
|
213
|
+
```bash
|
|
214
|
+
hatch run test
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
### Format code
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
hatch run fmt
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
## How It Works
|
|
224
|
+
|
|
225
|
+
This backend:
|
|
226
|
+
1. Takes a `definition.rb` file
|
|
227
|
+
2. Runs `clawthor compile` automatically
|
|
228
|
+
3. Generates plugin files
|
|
229
|
+
4. Makes them available to Pants
|
|
230
|
+
|
|
231
|
+
That's all—it's a simple bridge between Pants and Clawthor.
|
|
232
|
+
|
|
233
|
+
## Related
|
|
234
|
+
|
|
235
|
+
- [Clawthor Gem](../clawthor/README.md) — The DSL compiler
|
|
236
|
+
- [Baseline Plugin](../baseline/README.md) — Reference & modules
|
|
237
|
+
- [Clawthor Monorepo](../README.md) — Overview
|
|
238
|
+
- [Pants Docs](https://www.pantsbuild.org/) — Build system
|
|
239
|
+
|
|
240
|
+
## License
|
|
241
|
+
|
|
242
|
+
MIT — See [../clawthor/LICENSE](../clawthor/LICENSE)
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
# Pants Clawthor Plugin
|
|
2
|
+
|
|
3
|
+
Optional Pants backend that compiles Clawthor plugins as part of your build.
|
|
4
|
+
|
|
5
|
+
**Use this when**: You define plugins in `BUILD` files and want automatic compilation via Pants.
|
|
6
|
+
|
|
7
|
+
**Don't use if**: You just want to compile manually with `clawthor compile` (use the gem directly instead).
|
|
8
|
+
|
|
9
|
+
## Installation
|
|
10
|
+
|
|
11
|
+
### 1. Install clawthor gem
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
gem install clawthor
|
|
15
|
+
which clawthor # Verify it's available
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
### 2. Add to pants.toml
|
|
19
|
+
|
|
20
|
+
```toml
|
|
21
|
+
[GLOBAL]
|
|
22
|
+
plugins = [
|
|
23
|
+
"jaymd96-pants-clawthor==0.1.0",
|
|
24
|
+
]
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### Requirements
|
|
28
|
+
|
|
29
|
+
- **Pants** 2.18+
|
|
30
|
+
- **Python** 3.9+
|
|
31
|
+
- **Ruby** 3.0+
|
|
32
|
+
- **clawthor gem** 0.3.0+
|
|
33
|
+
|
|
34
|
+
## Quick Start
|
|
35
|
+
|
|
36
|
+
### 1. Create a BUILD file
|
|
37
|
+
|
|
38
|
+
```python
|
|
39
|
+
# plugins/my_plugin/BUILD
|
|
40
|
+
claude_plugin(
|
|
41
|
+
name="my_plugin",
|
|
42
|
+
definition="definition.rb",
|
|
43
|
+
)
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### 2. Create definition.rb
|
|
47
|
+
|
|
48
|
+
```ruby
|
|
49
|
+
# plugins/my_plugin/definition.rb
|
|
50
|
+
workspace :my_plugin do
|
|
51
|
+
version "1.0.0"
|
|
52
|
+
author "My Team"
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
skill :example do
|
|
56
|
+
description "Example skill"
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
command :hello do
|
|
60
|
+
description "Say hello"
|
|
61
|
+
template { prompt "Say hello" }
|
|
62
|
+
end
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### 3. Build
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
pants build //plugins/my_plugin:my_plugin
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
That's it! Generated plugin is in `plugins/my_plugin/output/`.
|
|
72
|
+
|
|
73
|
+
## Target Options
|
|
74
|
+
|
|
75
|
+
| Option | Type | Default | Description |
|
|
76
|
+
|--------|------|---------|-------------|
|
|
77
|
+
| `definition` | string | required | Path to `definition.rb` |
|
|
78
|
+
| `output_dir` | string | `output` | Where to generate files |
|
|
79
|
+
| `marketplace` | bool | `false` | Use marketplace layout? |
|
|
80
|
+
|
|
81
|
+
## Examples
|
|
82
|
+
|
|
83
|
+
### Basic plugin
|
|
84
|
+
|
|
85
|
+
```python
|
|
86
|
+
# plugins/docs/BUILD
|
|
87
|
+
claude_plugin(
|
|
88
|
+
name="docs",
|
|
89
|
+
definition="definition.rb",
|
|
90
|
+
)
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### With modules
|
|
94
|
+
|
|
95
|
+
```python
|
|
96
|
+
# plugins/dev/BUILD
|
|
97
|
+
claude_plugin(
|
|
98
|
+
name="dev",
|
|
99
|
+
definition="definition.rb",
|
|
100
|
+
output_dir="plugin",
|
|
101
|
+
)
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
```ruby
|
|
105
|
+
# plugins/dev/definition.rb
|
|
106
|
+
workspace :dev_tools do
|
|
107
|
+
version "1.0.0"
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
require_relative './modules/planning'
|
|
111
|
+
use :planning
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Marketplace layout
|
|
115
|
+
|
|
116
|
+
```python
|
|
117
|
+
claude_plugin(
|
|
118
|
+
name="release",
|
|
119
|
+
definition="definition.rb",
|
|
120
|
+
marketplace=True,
|
|
121
|
+
)
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Reusing Claudo modules
|
|
125
|
+
|
|
126
|
+
Copy Claudo modules into your project:
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
cp ../baseline/modules/planning.rb plugins/my_plugin/
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Then use them:
|
|
133
|
+
|
|
134
|
+
```ruby
|
|
135
|
+
require_relative './modules/planning'
|
|
136
|
+
|
|
137
|
+
workspace :my_plugin do
|
|
138
|
+
use :planning
|
|
139
|
+
end
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## Troubleshooting
|
|
143
|
+
|
|
144
|
+
### "clawthor command not found"
|
|
145
|
+
|
|
146
|
+
1. Install: `gem install clawthor`
|
|
147
|
+
2. Verify: `which clawthor`
|
|
148
|
+
3. If using rbenv/rvm, check Ruby version: `ruby --version`
|
|
149
|
+
|
|
150
|
+
### Compilation fails
|
|
151
|
+
|
|
152
|
+
Check definition file manually:
|
|
153
|
+
```bash
|
|
154
|
+
cd plugins/my_plugin
|
|
155
|
+
clawthor compile definition.rb output/
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### Path issues
|
|
159
|
+
|
|
160
|
+
Make sure `definition` is relative to the BUILD file:
|
|
161
|
+
|
|
162
|
+
```python
|
|
163
|
+
claude_plugin(
|
|
164
|
+
name="my_plugin",
|
|
165
|
+
definition="definition.rb", # Same dir as BUILD
|
|
166
|
+
)
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
## Development
|
|
170
|
+
|
|
171
|
+
### Setup
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
cd pants-plugin
|
|
175
|
+
hatch env create
|
|
176
|
+
hatch run test
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### Test your backend
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
hatch run test
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### Format code
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
hatch run fmt
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
## How It Works
|
|
192
|
+
|
|
193
|
+
This backend:
|
|
194
|
+
1. Takes a `definition.rb` file
|
|
195
|
+
2. Runs `clawthor compile` automatically
|
|
196
|
+
3. Generates plugin files
|
|
197
|
+
4. Makes them available to Pants
|
|
198
|
+
|
|
199
|
+
That's all—it's a simple bridge between Pants and Clawthor.
|
|
200
|
+
|
|
201
|
+
## Related
|
|
202
|
+
|
|
203
|
+
- [Clawthor Gem](../clawthor/README.md) — The DSL compiler
|
|
204
|
+
- [Baseline Plugin](../baseline/README.md) — Reference & modules
|
|
205
|
+
- [Clawthor Monorepo](../README.md) — Overview
|
|
206
|
+
- [Pants Docs](https://www.pantsbuild.org/) — Build system
|
|
207
|
+
|
|
208
|
+
## License
|
|
209
|
+
|
|
210
|
+
MIT — See [../clawthor/LICENSE](../clawthor/LICENSE)
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "jaymd96-pants-clawthor"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.2"
|
|
8
8
|
description = "Pants plugin for compiling Clawthor Claude Code plugins"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.9"
|
|
@@ -27,9 +27,7 @@ classifiers = [
|
|
|
27
27
|
"Topic :: Software Development :: Build Tools",
|
|
28
28
|
]
|
|
29
29
|
|
|
30
|
-
dependencies = [
|
|
31
|
-
"pants>=2.18.0",
|
|
32
|
-
]
|
|
30
|
+
dependencies = []
|
|
33
31
|
|
|
34
32
|
[project.optional-dependencies]
|
|
35
33
|
dev = [
|
{jaymd96_pants_clawthor-0.1.0 → jaymd96_pants_clawthor-0.1.2}/src/pants_clawthor/register.py
RENAMED
|
@@ -1,17 +1,12 @@
|
|
|
1
1
|
"""Register clawthor plugin with Pants."""
|
|
2
2
|
|
|
3
|
-
from pants.engine.rules import collect_rules
|
|
4
|
-
from pants.engine.target import TargetRuleset
|
|
5
|
-
|
|
6
3
|
from pants_clawthor.rules import rules as clawthor_rules
|
|
7
4
|
from pants_clawthor.targets import ClaudoPluginTarget
|
|
8
5
|
|
|
9
6
|
|
|
10
7
|
def rules():
|
|
11
8
|
"""Register all rules for the clawthor plugin."""
|
|
12
|
-
return [
|
|
13
|
-
*collect_rules(clawthor_rules),
|
|
14
|
-
]
|
|
9
|
+
return [*clawthor_rules()]
|
|
15
10
|
|
|
16
11
|
|
|
17
12
|
def target_types():
|
|
@@ -1,22 +1,29 @@
|
|
|
1
1
|
"""Build rules for Clawthor plugin compilation."""
|
|
2
2
|
|
|
3
|
-
import os
|
|
4
|
-
import shutil
|
|
5
3
|
import subprocess
|
|
6
|
-
from
|
|
4
|
+
from dataclasses import dataclass
|
|
7
5
|
|
|
8
|
-
from pants.engine.
|
|
9
|
-
from pants.engine.fs import Digest, MergedDigest
|
|
10
|
-
from pants.engine.process import Process, ProcessResult
|
|
11
|
-
from pants.engine.rules import rule
|
|
6
|
+
from pants.engine.rules import collect_rules, goal_rule, rule
|
|
12
7
|
from pants.engine.target import Target
|
|
13
|
-
from pants.util.dirutil import safe_mkdir
|
|
14
8
|
|
|
15
|
-
from pants_clawthor.targets import
|
|
9
|
+
from pants_clawthor.targets import (
|
|
10
|
+
ClaudoPluginDefinitionField,
|
|
11
|
+
ClaudoPluginMarketplaceModeField,
|
|
12
|
+
ClaudoPluginOutputDirField,
|
|
13
|
+
ClaudoPluginTarget,
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@dataclass(frozen=True)
|
|
18
|
+
class ClawthorCompileResult:
|
|
19
|
+
"""Result of compiling a Clawthor definition."""
|
|
20
|
+
exit_code: int
|
|
21
|
+
stdout: str
|
|
22
|
+
stderr: str
|
|
16
23
|
|
|
17
24
|
|
|
18
25
|
@rule
|
|
19
|
-
async def compile_claude_plugin(target: ClaudoPluginTarget) ->
|
|
26
|
+
async def compile_claude_plugin(target: ClaudoPluginTarget) -> ClawthorCompileResult:
|
|
20
27
|
"""Compile a Clawthor definition into a Claude Code plugin."""
|
|
21
28
|
|
|
22
29
|
definition_file = target[ClaudoPluginDefinitionField].value
|
|
@@ -32,7 +39,7 @@ async def compile_claude_plugin(target: ClaudoPluginTarget) -> ProcessResult:
|
|
|
32
39
|
try:
|
|
33
40
|
result = subprocess.run(
|
|
34
41
|
cmd,
|
|
35
|
-
cwd=target.address.spec_path,
|
|
42
|
+
cwd=target.address.spec_path or ".",
|
|
36
43
|
capture_output=True,
|
|
37
44
|
text=True,
|
|
38
45
|
check=False,
|
|
@@ -43,7 +50,7 @@ async def compile_claude_plugin(target: ClaudoPluginTarget) -> ProcessResult:
|
|
|
43
50
|
f"Clawthor compilation failed:\n{result.stderr}"
|
|
44
51
|
)
|
|
45
52
|
|
|
46
|
-
return
|
|
53
|
+
return ClawthorCompileResult(
|
|
47
54
|
exit_code=result.returncode,
|
|
48
55
|
stdout=result.stdout,
|
|
49
56
|
stderr=result.stderr,
|
|
@@ -54,4 +61,5 @@ async def compile_claude_plugin(target: ClaudoPluginTarget) -> ProcessResult:
|
|
|
54
61
|
)
|
|
55
62
|
|
|
56
63
|
|
|
57
|
-
rules
|
|
64
|
+
def rules():
|
|
65
|
+
return collect_rules()
|
|
@@ -1,293 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: jaymd96-pants-clawthor
|
|
3
|
-
Version: 0.1.0
|
|
4
|
-
Summary: Pants plugin for compiling Clawthor Claude Code plugins
|
|
5
|
-
Project-URL: Homepage, https://github.com/anthropics/clawthor
|
|
6
|
-
Project-URL: Documentation, https://github.com/anthropics/clawthor/tree/main/pants-plugin
|
|
7
|
-
Project-URL: Repository, https://github.com/anthropics/clawthor.git
|
|
8
|
-
Project-URL: Issues, https://github.com/anthropics/clawthor/issues
|
|
9
|
-
Author-email: jaymd96 <jay@anthropic.com>
|
|
10
|
-
License: MIT
|
|
11
|
-
License-File: LICENSE
|
|
12
|
-
Keywords: claude,clawthor,dsl,pants,plugin
|
|
13
|
-
Classifier: Development Status :: 3 - Alpha
|
|
14
|
-
Classifier: Environment :: Plugins
|
|
15
|
-
Classifier: Intended Audience :: Developers
|
|
16
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
17
|
-
Classifier: Operating System :: OS Independent
|
|
18
|
-
Classifier: Programming Language :: Python :: 3
|
|
19
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
20
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
21
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
22
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
23
|
-
Classifier: Topic :: Software Development :: Build Tools
|
|
24
|
-
Requires-Python: >=3.9
|
|
25
|
-
Requires-Dist: pants>=2.18.0
|
|
26
|
-
Provides-Extra: dev
|
|
27
|
-
Requires-Dist: black>=23.0; extra == 'dev'
|
|
28
|
-
Requires-Dist: flake8>=6.0; extra == 'dev'
|
|
29
|
-
Requires-Dist: isort>=5.0; extra == 'dev'
|
|
30
|
-
Requires-Dist: pytest-cov>=4.0; extra == 'dev'
|
|
31
|
-
Requires-Dist: pytest>=7.0; extra == 'dev'
|
|
32
|
-
Description-Content-Type: text/markdown
|
|
33
|
-
|
|
34
|
-
# Pants Clawthor Plugin
|
|
35
|
-
|
|
36
|
-
A Pants build backend plugin that integrates Clawthor DSL compilation into your Pants build system.
|
|
37
|
-
|
|
38
|
-
## Installation
|
|
39
|
-
|
|
40
|
-
Install from PyPI:
|
|
41
|
-
|
|
42
|
-
```bash
|
|
43
|
-
pip install jaymd96-pants-clawthor
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
## Configuration
|
|
47
|
-
|
|
48
|
-
Add to your `pants.toml`:
|
|
49
|
-
|
|
50
|
-
```toml
|
|
51
|
-
[python]
|
|
52
|
-
plugins = [
|
|
53
|
-
"jaymd96-pants-clawthor==0.1.0",
|
|
54
|
-
]
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
## Requirements
|
|
58
|
-
|
|
59
|
-
- **Pants** >= 2.18.0
|
|
60
|
-
- **clawthor gem** >= 0.3.0 (install with `gem install clawthor`)
|
|
61
|
-
- **Python** >= 3.9
|
|
62
|
-
- **Ruby** >= 3.0.0 (for clawthor gem)
|
|
63
|
-
|
|
64
|
-
Ensure `clawthor` executable is in your PATH:
|
|
65
|
-
|
|
66
|
-
```bash
|
|
67
|
-
gem install clawthor
|
|
68
|
-
which clawthor # Verify it's available
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
## Usage
|
|
72
|
-
|
|
73
|
-
### Define a Plugin Target
|
|
74
|
-
|
|
75
|
-
Create a BUILD file in your plugin directory:
|
|
76
|
-
|
|
77
|
-
```python
|
|
78
|
-
claude_plugin(
|
|
79
|
-
name="my_plugin",
|
|
80
|
-
definition="definition.rb",
|
|
81
|
-
output_dir="output",
|
|
82
|
-
marketplace=False,
|
|
83
|
-
)
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
### Options
|
|
87
|
-
|
|
88
|
-
- **definition** (required): Path to the Clawthor definition file (e.g., `definition.rb`)
|
|
89
|
-
- **output_dir** (optional): Output directory for generated plugin files (default: `output`)
|
|
90
|
-
- **marketplace** (optional): Generate marketplace layout instead of plugin layout (`true` or `false`, default: `false`)
|
|
91
|
-
|
|
92
|
-
### Build the Plugin
|
|
93
|
-
|
|
94
|
-
```bash
|
|
95
|
-
pants build //my_plugins:my_plugin
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
The generated plugin files will be in the output directory specified.
|
|
99
|
-
|
|
100
|
-
### Marketplace Mode
|
|
101
|
-
|
|
102
|
-
To generate in marketplace layout:
|
|
103
|
-
|
|
104
|
-
```python
|
|
105
|
-
claude_plugin(
|
|
106
|
-
name="my_plugin",
|
|
107
|
-
definition="definition.rb",
|
|
108
|
-
output_dir="output-marketplace",
|
|
109
|
-
marketplace=True,
|
|
110
|
-
)
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
## Example
|
|
114
|
-
|
|
115
|
-
```
|
|
116
|
-
my_project/
|
|
117
|
-
├── BUILD
|
|
118
|
-
├── definition.rb
|
|
119
|
-
└── modules/
|
|
120
|
-
├── planning.rb
|
|
121
|
-
└── quality.rb
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
**BUILD**:
|
|
125
|
-
```python
|
|
126
|
-
claude_plugin(
|
|
127
|
-
name="dev_tools",
|
|
128
|
-
definition="definition.rb",
|
|
129
|
-
output_dir="plugin",
|
|
130
|
-
marketplace=False,
|
|
131
|
-
)
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
**definition.rb**:
|
|
135
|
-
```ruby
|
|
136
|
-
workspace :dev_tools do
|
|
137
|
-
version "1.0.0"
|
|
138
|
-
author "My Team"
|
|
139
|
-
end
|
|
140
|
-
|
|
141
|
-
require_module "./modules/planning.rb"
|
|
142
|
-
require_module "./modules/quality.rb"
|
|
143
|
-
|
|
144
|
-
use :planning
|
|
145
|
-
use :quality
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
**Build**:
|
|
149
|
-
```bash
|
|
150
|
-
pants build //my_project:dev_tools
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
## Integration with Architect
|
|
154
|
-
|
|
155
|
-
Use the Architect reference plugin as a base:
|
|
156
|
-
|
|
157
|
-
```python
|
|
158
|
-
# Copy from baseline/definition.rb
|
|
159
|
-
claude_plugin(
|
|
160
|
-
name="architect",
|
|
161
|
-
definition="architect/definition.rb",
|
|
162
|
-
output_dir="plugins/architect",
|
|
163
|
-
marketplace=False,
|
|
164
|
-
)
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
Then import modules:
|
|
168
|
-
|
|
169
|
-
```ruby
|
|
170
|
-
require_module "../architect/modules/planning.rb"
|
|
171
|
-
require_module "../architect/modules/quality.rb"
|
|
172
|
-
|
|
173
|
-
use :planning
|
|
174
|
-
use :quality
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
## How It Works
|
|
178
|
-
|
|
179
|
-
The plugin:
|
|
180
|
-
1. Accepts a Clawthor definition file path
|
|
181
|
-
2. Invokes `clawthor compile` with appropriate arguments
|
|
182
|
-
3. Generates plugin files in the specified output directory
|
|
183
|
-
4. Returns the compilation result
|
|
184
|
-
|
|
185
|
-
No magic—just a clean bridge between Pants and Clawthor.
|
|
186
|
-
|
|
187
|
-
## Troubleshooting
|
|
188
|
-
|
|
189
|
-
### "clawthor command not found"
|
|
190
|
-
Install the clawthor gem:
|
|
191
|
-
```bash
|
|
192
|
-
gem install clawthor
|
|
193
|
-
```
|
|
194
|
-
|
|
195
|
-
Verify it's in PATH:
|
|
196
|
-
```bash
|
|
197
|
-
which clawthor
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
If using a Ruby version manager (rvm, rbenv, etc.), ensure it's configured:
|
|
201
|
-
```bash
|
|
202
|
-
which ruby # Should show your Ruby version manager's path
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
### Compilation fails with "Definition file not found"
|
|
206
|
-
Ensure the definition file path is relative to the BUILD file:
|
|
207
|
-
|
|
208
|
-
```python
|
|
209
|
-
claude_plugin(
|
|
210
|
-
name="my_plugin",
|
|
211
|
-
definition="definition.rb", # Same directory as BUILD file
|
|
212
|
-
)
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
### Output directory is empty
|
|
216
|
-
Check that the definition file has valid declarations. Run manually to debug:
|
|
217
|
-
|
|
218
|
-
```bash
|
|
219
|
-
cd my_project
|
|
220
|
-
clawthor compile definition.rb output
|
|
221
|
-
```
|
|
222
|
-
|
|
223
|
-
## Development
|
|
224
|
-
|
|
225
|
-
### Setup
|
|
226
|
-
|
|
227
|
-
```bash
|
|
228
|
-
hatch env create
|
|
229
|
-
```
|
|
230
|
-
|
|
231
|
-
This creates a virtual environment configured via Hatch.
|
|
232
|
-
|
|
233
|
-
### Run Tests
|
|
234
|
-
|
|
235
|
-
```bash
|
|
236
|
-
hatch run test
|
|
237
|
-
```
|
|
238
|
-
|
|
239
|
-
### Formatting and Linting
|
|
240
|
-
|
|
241
|
-
```bash
|
|
242
|
-
hatch run format
|
|
243
|
-
hatch run lint
|
|
244
|
-
```
|
|
245
|
-
|
|
246
|
-
Or run individually:
|
|
247
|
-
|
|
248
|
-
```bash
|
|
249
|
-
hatch run black src/
|
|
250
|
-
hatch run isort src/
|
|
251
|
-
hatch run flake8 src/
|
|
252
|
-
```
|
|
253
|
-
|
|
254
|
-
## Publishing
|
|
255
|
-
|
|
256
|
-
To publish a new version to PyPI:
|
|
257
|
-
|
|
258
|
-
```bash
|
|
259
|
-
hatch build
|
|
260
|
-
hatch publish
|
|
261
|
-
```
|
|
262
|
-
|
|
263
|
-
Hatch will use your PyPI credentials from `~/.pypirc` or environment variables:
|
|
264
|
-
- `HATCH_INDEX_USER` — PyPI username
|
|
265
|
-
- `HATCH_INDEX_AUTH` — PyPI API token
|
|
266
|
-
|
|
267
|
-
## Architecture
|
|
268
|
-
|
|
269
|
-
```
|
|
270
|
-
Pants Build System
|
|
271
|
-
↓
|
|
272
|
-
pants-clawthor Plugin (jaymd96-pants-clawthor)
|
|
273
|
-
↓ invokes
|
|
274
|
-
Clawthor DSL Compiler (clawthor gem)
|
|
275
|
-
↓ generates
|
|
276
|
-
Claude Code Plugin Files
|
|
277
|
-
↓ can be tested with
|
|
278
|
-
claude --plugin-dir ./output
|
|
279
|
-
```
|
|
280
|
-
|
|
281
|
-
## License
|
|
282
|
-
|
|
283
|
-
MIT — See [../clawthor/LICENSE](../clawthor/LICENSE)
|
|
284
|
-
|
|
285
|
-
## Related
|
|
286
|
-
|
|
287
|
-
- [Clawthor gem](../clawthor/) — The DSL compiler
|
|
288
|
-
- [Architect plugin](../baseline/) — Reference implementation
|
|
289
|
-
- [Pants](https://www.pantsbuild.org/) — Build system
|
|
290
|
-
|
|
291
|
-
---
|
|
292
|
-
|
|
293
|
-
**Questions?** Open an issue on [GitHub](https://github.com/anthropics/clawthor/issues)
|
|
@@ -1,260 +0,0 @@
|
|
|
1
|
-
# Pants Clawthor Plugin
|
|
2
|
-
|
|
3
|
-
A Pants build backend plugin that integrates Clawthor DSL compilation into your Pants build system.
|
|
4
|
-
|
|
5
|
-
## Installation
|
|
6
|
-
|
|
7
|
-
Install from PyPI:
|
|
8
|
-
|
|
9
|
-
```bash
|
|
10
|
-
pip install jaymd96-pants-clawthor
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
## Configuration
|
|
14
|
-
|
|
15
|
-
Add to your `pants.toml`:
|
|
16
|
-
|
|
17
|
-
```toml
|
|
18
|
-
[python]
|
|
19
|
-
plugins = [
|
|
20
|
-
"jaymd96-pants-clawthor==0.1.0",
|
|
21
|
-
]
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
## Requirements
|
|
25
|
-
|
|
26
|
-
- **Pants** >= 2.18.0
|
|
27
|
-
- **clawthor gem** >= 0.3.0 (install with `gem install clawthor`)
|
|
28
|
-
- **Python** >= 3.9
|
|
29
|
-
- **Ruby** >= 3.0.0 (for clawthor gem)
|
|
30
|
-
|
|
31
|
-
Ensure `clawthor` executable is in your PATH:
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
gem install clawthor
|
|
35
|
-
which clawthor # Verify it's available
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
## Usage
|
|
39
|
-
|
|
40
|
-
### Define a Plugin Target
|
|
41
|
-
|
|
42
|
-
Create a BUILD file in your plugin directory:
|
|
43
|
-
|
|
44
|
-
```python
|
|
45
|
-
claude_plugin(
|
|
46
|
-
name="my_plugin",
|
|
47
|
-
definition="definition.rb",
|
|
48
|
-
output_dir="output",
|
|
49
|
-
marketplace=False,
|
|
50
|
-
)
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
### Options
|
|
54
|
-
|
|
55
|
-
- **definition** (required): Path to the Clawthor definition file (e.g., `definition.rb`)
|
|
56
|
-
- **output_dir** (optional): Output directory for generated plugin files (default: `output`)
|
|
57
|
-
- **marketplace** (optional): Generate marketplace layout instead of plugin layout (`true` or `false`, default: `false`)
|
|
58
|
-
|
|
59
|
-
### Build the Plugin
|
|
60
|
-
|
|
61
|
-
```bash
|
|
62
|
-
pants build //my_plugins:my_plugin
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
The generated plugin files will be in the output directory specified.
|
|
66
|
-
|
|
67
|
-
### Marketplace Mode
|
|
68
|
-
|
|
69
|
-
To generate in marketplace layout:
|
|
70
|
-
|
|
71
|
-
```python
|
|
72
|
-
claude_plugin(
|
|
73
|
-
name="my_plugin",
|
|
74
|
-
definition="definition.rb",
|
|
75
|
-
output_dir="output-marketplace",
|
|
76
|
-
marketplace=True,
|
|
77
|
-
)
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
## Example
|
|
81
|
-
|
|
82
|
-
```
|
|
83
|
-
my_project/
|
|
84
|
-
├── BUILD
|
|
85
|
-
├── definition.rb
|
|
86
|
-
└── modules/
|
|
87
|
-
├── planning.rb
|
|
88
|
-
└── quality.rb
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
**BUILD**:
|
|
92
|
-
```python
|
|
93
|
-
claude_plugin(
|
|
94
|
-
name="dev_tools",
|
|
95
|
-
definition="definition.rb",
|
|
96
|
-
output_dir="plugin",
|
|
97
|
-
marketplace=False,
|
|
98
|
-
)
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
**definition.rb**:
|
|
102
|
-
```ruby
|
|
103
|
-
workspace :dev_tools do
|
|
104
|
-
version "1.0.0"
|
|
105
|
-
author "My Team"
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
require_module "./modules/planning.rb"
|
|
109
|
-
require_module "./modules/quality.rb"
|
|
110
|
-
|
|
111
|
-
use :planning
|
|
112
|
-
use :quality
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
**Build**:
|
|
116
|
-
```bash
|
|
117
|
-
pants build //my_project:dev_tools
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
## Integration with Architect
|
|
121
|
-
|
|
122
|
-
Use the Architect reference plugin as a base:
|
|
123
|
-
|
|
124
|
-
```python
|
|
125
|
-
# Copy from baseline/definition.rb
|
|
126
|
-
claude_plugin(
|
|
127
|
-
name="architect",
|
|
128
|
-
definition="architect/definition.rb",
|
|
129
|
-
output_dir="plugins/architect",
|
|
130
|
-
marketplace=False,
|
|
131
|
-
)
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
Then import modules:
|
|
135
|
-
|
|
136
|
-
```ruby
|
|
137
|
-
require_module "../architect/modules/planning.rb"
|
|
138
|
-
require_module "../architect/modules/quality.rb"
|
|
139
|
-
|
|
140
|
-
use :planning
|
|
141
|
-
use :quality
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
## How It Works
|
|
145
|
-
|
|
146
|
-
The plugin:
|
|
147
|
-
1. Accepts a Clawthor definition file path
|
|
148
|
-
2. Invokes `clawthor compile` with appropriate arguments
|
|
149
|
-
3. Generates plugin files in the specified output directory
|
|
150
|
-
4. Returns the compilation result
|
|
151
|
-
|
|
152
|
-
No magic—just a clean bridge between Pants and Clawthor.
|
|
153
|
-
|
|
154
|
-
## Troubleshooting
|
|
155
|
-
|
|
156
|
-
### "clawthor command not found"
|
|
157
|
-
Install the clawthor gem:
|
|
158
|
-
```bash
|
|
159
|
-
gem install clawthor
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
Verify it's in PATH:
|
|
163
|
-
```bash
|
|
164
|
-
which clawthor
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
If using a Ruby version manager (rvm, rbenv, etc.), ensure it's configured:
|
|
168
|
-
```bash
|
|
169
|
-
which ruby # Should show your Ruby version manager's path
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
### Compilation fails with "Definition file not found"
|
|
173
|
-
Ensure the definition file path is relative to the BUILD file:
|
|
174
|
-
|
|
175
|
-
```python
|
|
176
|
-
claude_plugin(
|
|
177
|
-
name="my_plugin",
|
|
178
|
-
definition="definition.rb", # Same directory as BUILD file
|
|
179
|
-
)
|
|
180
|
-
```
|
|
181
|
-
|
|
182
|
-
### Output directory is empty
|
|
183
|
-
Check that the definition file has valid declarations. Run manually to debug:
|
|
184
|
-
|
|
185
|
-
```bash
|
|
186
|
-
cd my_project
|
|
187
|
-
clawthor compile definition.rb output
|
|
188
|
-
```
|
|
189
|
-
|
|
190
|
-
## Development
|
|
191
|
-
|
|
192
|
-
### Setup
|
|
193
|
-
|
|
194
|
-
```bash
|
|
195
|
-
hatch env create
|
|
196
|
-
```
|
|
197
|
-
|
|
198
|
-
This creates a virtual environment configured via Hatch.
|
|
199
|
-
|
|
200
|
-
### Run Tests
|
|
201
|
-
|
|
202
|
-
```bash
|
|
203
|
-
hatch run test
|
|
204
|
-
```
|
|
205
|
-
|
|
206
|
-
### Formatting and Linting
|
|
207
|
-
|
|
208
|
-
```bash
|
|
209
|
-
hatch run format
|
|
210
|
-
hatch run lint
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
Or run individually:
|
|
214
|
-
|
|
215
|
-
```bash
|
|
216
|
-
hatch run black src/
|
|
217
|
-
hatch run isort src/
|
|
218
|
-
hatch run flake8 src/
|
|
219
|
-
```
|
|
220
|
-
|
|
221
|
-
## Publishing
|
|
222
|
-
|
|
223
|
-
To publish a new version to PyPI:
|
|
224
|
-
|
|
225
|
-
```bash
|
|
226
|
-
hatch build
|
|
227
|
-
hatch publish
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
Hatch will use your PyPI credentials from `~/.pypirc` or environment variables:
|
|
231
|
-
- `HATCH_INDEX_USER` — PyPI username
|
|
232
|
-
- `HATCH_INDEX_AUTH` — PyPI API token
|
|
233
|
-
|
|
234
|
-
## Architecture
|
|
235
|
-
|
|
236
|
-
```
|
|
237
|
-
Pants Build System
|
|
238
|
-
↓
|
|
239
|
-
pants-clawthor Plugin (jaymd96-pants-clawthor)
|
|
240
|
-
↓ invokes
|
|
241
|
-
Clawthor DSL Compiler (clawthor gem)
|
|
242
|
-
↓ generates
|
|
243
|
-
Claude Code Plugin Files
|
|
244
|
-
↓ can be tested with
|
|
245
|
-
claude --plugin-dir ./output
|
|
246
|
-
```
|
|
247
|
-
|
|
248
|
-
## License
|
|
249
|
-
|
|
250
|
-
MIT — See [../clawthor/LICENSE](../clawthor/LICENSE)
|
|
251
|
-
|
|
252
|
-
## Related
|
|
253
|
-
|
|
254
|
-
- [Clawthor gem](../clawthor/) — The DSL compiler
|
|
255
|
-
- [Architect plugin](../baseline/) — Reference implementation
|
|
256
|
-
- [Pants](https://www.pantsbuild.org/) — Build system
|
|
257
|
-
|
|
258
|
-
---
|
|
259
|
-
|
|
260
|
-
**Questions?** Open an issue on [GitHub](https://github.com/anthropics/clawthor/issues)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{jaymd96_pants_clawthor-0.1.0 → jaymd96_pants_clawthor-0.1.2}/src/pants_clawthor/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|