codepraxis 0.3.0__tar.gz → 0.3.1__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.
- {codepraxis-0.3.0 → codepraxis-0.3.1}/PKG-INFO +1 -1
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/__init__.py +1 -1
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/plugin/installer.py +6 -2
- {codepraxis-0.3.0 → codepraxis-0.3.1}/tests/test_validation_rules.py +30 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/.gitignore +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/CONTRIBUTING.md +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/README.md +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/RELEASING.md +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/pyproject.toml +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/__main__.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/cli.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/commands/__init__.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/commands/example.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/commands/lint.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/commands/login.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/commands/publish.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/commands/validate.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/domain/__init__.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/domain/contract.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/domain/pack.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/domain/results.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/errors.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/execution/__init__.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/execution/executor.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/execution/local/__init__.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/execution/local/backends.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/execution/local/executor.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/execution/local/worker.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/execution/local/workspace.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/execution/remote/__init__.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/execution/remote/client.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/execution/remote/config.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/execution/remote/executor.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/packio/__init__.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/packio/archive.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/packio/discovery.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/packio/loader.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/packio/toc.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/plugin/__init__.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/plugin/templates/commands/new.md +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/plugin/templates/commands/validate.md +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/plugin/templates/marketplace.json +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/plugin/templates/plugin.json +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/plugin/templates/skills/pack-authoring/SKILL.md +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/reporting/__init__.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/reporting/human.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/reporting/json_reporter.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/reporting/reporter.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/scaffold/__init__.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/scaffold/generator.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/scaffold/templates/README.md +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/scaffold/templates/backend.conf +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/scaffold/templates/course_toc.json +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/scaffold/templates/feature.md +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/scaffold/templates/main.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/scaffold/templates/metadata.json +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/scaffold/templates/solution.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/scaffold/templates/test_1.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/validation/__init__.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/validation/registry.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/validation/rule.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/validation/rules/__init__.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/validation/rules/hygiene.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/validation/rules/instructions.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/validation/rules/testcases.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/tests/conformance/test_corpus.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/tests/conftest.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/tests/test_classification.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/tests/test_publish.py +0 -0
- {codepraxis-0.3.0 → codepraxis-0.3.1}/tests/test_toc.py +0 -0
|
@@ -108,12 +108,16 @@ def describe(result: InstallResult) -> str:
|
|
|
108
108
|
"",
|
|
109
109
|
"Enable it in Claude Code:",
|
|
110
110
|
"",
|
|
111
|
-
|
|
111
|
+
# The absolute path is deliberate. `/plugin marketplace add` reads a
|
|
112
|
+
# bare `foo/bar` as a GitHub owner/repo shorthand and tries to clone
|
|
113
|
+
# it, so a relative path here fails with "Repository not found". A
|
|
114
|
+
# leading slash cannot be parsed that way.
|
|
115
|
+
f" /plugin marketplace add {result.root}",
|
|
112
116
|
f" /plugin install {PLUGIN_NAME}@{MARKETPLACE_NAME}",
|
|
113
117
|
"",
|
|
114
118
|
"Then:",
|
|
115
119
|
"",
|
|
116
|
-
" /codepraxis:new
|
|
120
|
+
" /codepraxis:new scaffold a pack from a description",
|
|
117
121
|
" /codepraxis:validate validate a pack and fix what fails",
|
|
118
122
|
"",
|
|
119
123
|
"The pack-authoring skill loads automatically when Claude touches a pack.",
|
|
@@ -219,3 +219,33 @@ class TestExampleCommand:
|
|
|
219
219
|
monkeypatch.delenv("CODEPRAXIS_TOKEN", raising=False)
|
|
220
220
|
|
|
221
221
|
assert RemoteConfig.resolve_public().token == ""
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
class TestPluginInstructions:
|
|
225
|
+
"""`/plugin marketplace add` reads a bare `foo/bar` as a GitHub repo.
|
|
226
|
+
|
|
227
|
+
A relative path there fails with "Repository not found", so the printed
|
|
228
|
+
command must be one that cannot be parsed as owner/repo.
|
|
229
|
+
"""
|
|
230
|
+
|
|
231
|
+
def test_marketplace_command_uses_an_absolute_path(self, tmp_path, monkeypatch):
|
|
232
|
+
from codepraxis.plugin import installer
|
|
233
|
+
|
|
234
|
+
monkeypatch.chdir(tmp_path)
|
|
235
|
+
result = installer.install(tmp_path)
|
|
236
|
+
line = next(
|
|
237
|
+
text for text in installer.describe(result).splitlines() if "marketplace add" in text
|
|
238
|
+
)
|
|
239
|
+
|
|
240
|
+
path = line.split("marketplace add", 1)[1].strip()
|
|
241
|
+
assert path.startswith("/"), f"{path!r} would be read as a GitHub owner/repo"
|
|
242
|
+
assert Path(path).is_dir()
|
|
243
|
+
|
|
244
|
+
def test_the_marketplace_manifest_is_where_the_command_points(self, tmp_path, monkeypatch):
|
|
245
|
+
from codepraxis.plugin import installer
|
|
246
|
+
|
|
247
|
+
monkeypatch.chdir(tmp_path)
|
|
248
|
+
result = installer.install(tmp_path)
|
|
249
|
+
|
|
250
|
+
assert (result.root / ".claude-plugin" / "marketplace.json").is_file()
|
|
251
|
+
assert (result.root / "codepraxis" / ".claude-plugin" / "plugin.json").is_file()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codepraxis-0.3.0 → codepraxis-0.3.1}/src/codepraxis/plugin/templates/skills/pack-authoring/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|