scar-cli 0.6.0__tar.gz → 0.6.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.
- {scar_cli-0.6.0 → scar_cli-0.6.1}/.github/workflows/release.yml +4 -1
- scar_cli-0.6.1/.release-please-manifest.json +3 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/CHANGELOG.md +7 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/PKG-INFO +1 -1
- scar_cli-0.6.1/plugin/plugin.json +41 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/pyproject.toml +1 -1
- scar_cli-0.6.1/release-please-config.json +15 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/tests/test_plugin.py +14 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/uv.lock +1 -1
- scar_cli-0.6.0/plugin/plugin.json +0 -29
- {scar_cli-0.6.0 → scar_cli-0.6.1}/.claude-plugin/marketplace.json +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/.github/workflows/ci.yml +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/.github/workflows/pr-validation.yml +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/.gitignore +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/.scars/0001-git-grep-ere-pitfalls.landmine.md +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/.scars/0002-agent-direct-hook-install.deadend.md +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/.scars/0003-installer-binds-to-active-venv-scar.landmine.md +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/.scars/0004-promote-roundtrip-drops-expires-evidence.landmine.md +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/.scars/0005-history-rewrite-orphans-commit-evidence.landmine.md +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/.scars/0006-yaml-pattern-anchor-over-escaping.landmine.md +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/.scars/README.md +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/.scars/candidates/fp-log.txt +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/.scars/template.md +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/AGENTS.md +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/CONTRIBUTING.md +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/IDEA.md +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/LICENSE +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/README.md +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/ROADMAP.md +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/SCAR-FORMAT.md +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/SPEC.md +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/STRESS-TEST.md +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/experiments/anchor-survival/PROTOCOL.md +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/experiments/anchor-survival/RESULTS.md +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/experiments/anchor-survival/long_replay.py +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/experiments/anchor-survival/replay.py +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/experiments/auto-authorship/FINDINGS.md +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/experiments/auto-authorship/PROTOCOL.md +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/experiments/fence-honor/.gitignore +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/experiments/fence-honor/PROTOCOL.md +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/experiments/fence-honor/RESULTS.md +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/experiments/fence-honor/fixture/.scars/0001-vendor-retry-window.fence.md +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/experiments/fence-honor/fixture/.scars/0002-evicting-session-store.deadend.md +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/experiments/fence-honor/fixture/.scars/0003-export-column-order.landmine.md +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/experiments/fence-honor/fixture/README.md +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/experiments/fence-honor/fixture/payments/retry.py +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/experiments/fence-honor/fixture/reports/export.py +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/experiments/fence-honor/fixture/services/sessions.py +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/experiments/fence-honor/grade.py +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/experiments/harvest/PROTOCOL.md +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/experiments/harvest/harvest.py +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/hook/scar-hooks.py +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/plugin/skills/scar-authoring/SKILL.md +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/plugin/skills/scar-authoring/assets/template.md +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/src/scar/__init__.py +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/src/scar/agent.py +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/src/scar/cli.py +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/src/scar/evidence.py +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/src/scar/harvest.py +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/src/scar/hooks.py +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/src/scar/installer.py +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/src/scar/lint.py +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/src/scar/match.py +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/src/scar/mcp.py +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/src/scar/model.py +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/src/scar/orphan.py +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/src/scar/render.py +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/src/scar/skills/scar-authoring/SKILL.md +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/src/scar/skills/scar-authoring/assets/template.md +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/src/scar/store.py +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/tests/test_cli.py +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/tests/test_docs.py +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/tests/test_evidence.py +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/tests/test_harvest.py +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/tests/test_hooks.py +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/tests/test_installer.py +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/tests/test_lifecycle.py +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/tests/test_lint.py +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/tests/test_match.py +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/tests/test_mcp.py +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/tests/test_model.py +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/tests/test_orphan.py +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/tests/test_skill.py +0 -0
- {scar_cli-0.6.0 → scar_cli-0.6.1}/tests/test_store.py +0 -0
|
@@ -19,7 +19,10 @@ jobs:
|
|
|
19
19
|
- id: rp
|
|
20
20
|
uses: googleapis/release-please-action@v4
|
|
21
21
|
with:
|
|
22
|
-
release-type
|
|
22
|
+
# config-file + manifest replace the inline release-type so extra-files
|
|
23
|
+
# can keep plugin/plugin.json's version in lock-step with pyproject (#62).
|
|
24
|
+
config-file: release-please-config.json
|
|
25
|
+
manifest-file: .release-please-manifest.json
|
|
23
26
|
|
|
24
27
|
publish:
|
|
25
28
|
needs: release-please
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.6.1](https://github.com/Daily-Nerd/Scar/compare/v0.6.0...v0.6.1) (2026-06-26)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* **plugin:** sync plugin.json + uv.lock to 0.6.0 + drift guard ([#63](https://github.com/Daily-Nerd/Scar/issues/63)) ([fe21ed6](https://github.com/Daily-Nerd/Scar/commit/fe21ed6046ea4cabc8abd2ca681e85d02991be6a))
|
|
9
|
+
|
|
3
10
|
## [0.6.0](https://github.com/Daily-Nerd/Scar/compare/v0.5.0...v0.6.0) (2026-06-26)
|
|
4
11
|
|
|
5
12
|
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "scar",
|
|
3
|
+
"version": "0.6.1",
|
|
4
|
+
"description": "SCAR — version control for negative knowledge (deadends, fences, landmines)",
|
|
5
|
+
"hooks": {
|
|
6
|
+
"PreToolUse": [
|
|
7
|
+
{
|
|
8
|
+
"matcher": "Edit|Write|MultiEdit|NotebookEdit",
|
|
9
|
+
"hooks": [
|
|
10
|
+
{
|
|
11
|
+
"type": "command",
|
|
12
|
+
"command": "scar hook precheck",
|
|
13
|
+
"timeout": 10
|
|
14
|
+
}
|
|
15
|
+
]
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"SessionStart": [
|
|
19
|
+
{
|
|
20
|
+
"hooks": [
|
|
21
|
+
{
|
|
22
|
+
"type": "command",
|
|
23
|
+
"command": "scar hook session-notice",
|
|
24
|
+
"timeout": 10
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
"Stop": [
|
|
30
|
+
{
|
|
31
|
+
"hooks": [
|
|
32
|
+
{
|
|
33
|
+
"type": "command",
|
|
34
|
+
"command": "scar hook stop-drafter",
|
|
35
|
+
"timeout": 15
|
|
36
|
+
}
|
|
37
|
+
]
|
|
38
|
+
}
|
|
39
|
+
]
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json",
|
|
3
|
+
"packages": {
|
|
4
|
+
".": {
|
|
5
|
+
"release-type": "python",
|
|
6
|
+
"extra-files": [
|
|
7
|
+
{
|
|
8
|
+
"type": "json",
|
|
9
|
+
"path": "plugin/plugin.json",
|
|
10
|
+
"jsonpath": "$.version"
|
|
11
|
+
}
|
|
12
|
+
]
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -1,11 +1,25 @@
|
|
|
1
1
|
"""Claude Code plugin manifest validity + skill mirror drift guard."""
|
|
2
2
|
|
|
3
3
|
import json
|
|
4
|
+
import re
|
|
4
5
|
from pathlib import Path
|
|
5
6
|
|
|
6
7
|
ROOT = Path(__file__).parent.parent
|
|
7
8
|
|
|
8
9
|
|
|
10
|
+
def test_plugin_version_matches_pyproject():
|
|
11
|
+
# plugin.json carries its own version; release-please bumps only pyproject,
|
|
12
|
+
# so the two silently drift unless guarded. Regex (not tomllib) keeps this
|
|
13
|
+
# stdlib-only and Python 3.10-safe.
|
|
14
|
+
pyproject = (ROOT / "pyproject.toml").read_text(encoding="utf-8")
|
|
15
|
+
match = re.search(r'(?m)^version\s*=\s*"([^"]+)"', pyproject)
|
|
16
|
+
assert match, "version not found in pyproject.toml"
|
|
17
|
+
py_version = match.group(1)
|
|
18
|
+
plugin = json.loads((ROOT / "plugin" / "plugin.json").read_text(encoding="utf-8"))
|
|
19
|
+
assert plugin["version"] == py_version, (
|
|
20
|
+
f"plugin.json version {plugin['version']!r} != pyproject {py_version!r}")
|
|
21
|
+
|
|
22
|
+
|
|
9
23
|
def test_plugin_manifest_is_valid_and_declares_three_hook_events():
|
|
10
24
|
manifest = json.loads((ROOT / "plugin" / "plugin.json").read_text())
|
|
11
25
|
assert manifest["name"] == "scar"
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "scar",
|
|
3
|
-
"version": "0.5.0",
|
|
4
|
-
"description": "SCAR — version control for negative knowledge (deadends, fences, landmines)",
|
|
5
|
-
"hooks": {
|
|
6
|
-
"PreToolUse": [
|
|
7
|
-
{
|
|
8
|
-
"matcher": "Edit|Write|MultiEdit|NotebookEdit",
|
|
9
|
-
"hooks": [
|
|
10
|
-
{ "type": "command", "command": "scar hook precheck", "timeout": 10 }
|
|
11
|
-
]
|
|
12
|
-
}
|
|
13
|
-
],
|
|
14
|
-
"SessionStart": [
|
|
15
|
-
{
|
|
16
|
-
"hooks": [
|
|
17
|
-
{ "type": "command", "command": "scar hook session-notice", "timeout": 10 }
|
|
18
|
-
]
|
|
19
|
-
}
|
|
20
|
-
],
|
|
21
|
-
"Stop": [
|
|
22
|
-
{
|
|
23
|
-
"hooks": [
|
|
24
|
-
{ "type": "command", "command": "scar hook stop-drafter", "timeout": 15 }
|
|
25
|
-
]
|
|
26
|
-
}
|
|
27
|
-
]
|
|
28
|
-
}
|
|
29
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{scar_cli-0.6.0 → scar_cli-0.6.1}/.scars/0003-installer-binds-to-active-venv-scar.landmine.md
RENAMED
|
File without changes
|
{scar_cli-0.6.0 → scar_cli-0.6.1}/.scars/0004-promote-roundtrip-drops-expires-evidence.landmine.md
RENAMED
|
File without changes
|
{scar_cli-0.6.0 → scar_cli-0.6.1}/.scars/0005-history-rewrite-orphans-commit-evidence.landmine.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
|
|
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
|