claude-dev-env 8.96.5 → 8.96.7

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.
@@ -123,7 +123,7 @@ An image a PR needs as visual evidence is not an exception to that row. Upload i
123
123
  3. Fix systematically, marking each todo complete.
124
124
  4. Reply to each comment inline.
125
125
 
126
- Repair only the reported findings.
126
+ Repair only the reported findings. A finding that comes back on a second head escalates. Fix the source the reviewer reads, or change the gate that files the finding. Post no second reply with the same text, because a repeat finding shows the first reply changed nothing the reviewer sees.
127
127
 
128
128
  Every `gh` post in this workflow uses `--body-file` per [gh-cli-conventions.md](#gh-cli-conventions) and keeps volatile scratch paths out per [durable-post-artifacts.md](#github-post-input-rules). Stage session edits per [re-stage-before-commit.md](#re-stage-session-edits-before-commit) before each commit.
129
129
 
@@ -458,7 +458,7 @@ slurped array and take the last element. For one page, cap the request with a
458
458
 
459
459
  Stage the files you edited this session right before you commit them. A plain `git commit` records only the staged snapshot; a tracked file this session changed but left unstaged stays behind in the working tree.
460
460
 
461
- No hook denies a commit that would drop tracked session edits. Run `git status` before you commit, then stage what you changed with `git add <paths>` or commit with `git commit -a`. Before you say nothing is left to commit, run `git status` in every worktree the session wrote to, as `git worktree list` lists them.
461
+ No hook denies a commit that would drop tracked session edits. Run `git status` before you commit, then stage what you changed with `git add <paths>` or commit with `git commit -a`. Before you say nothing is left to commit, run `git status` in every worktree the session wrote to, as `git worktree list` lists them. On PowerShell, write the commit message to a scratch file and run `git commit -F <file>`. A here-string piped into `git commit -F -` makes git read the message lines as pathspecs, and the commit fails.
462
462
 
463
463
  Staging covers tracked files you edited. Do not commit untracked files unless the user explicitly instructs it. An untracked file in the working tree is outside the change until they say otherwise.
464
464
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: sync-dev-env
3
- description: Install or update claude-dev-env in a running session, link the skills of every enabled plugin so a running session loads them, and schedule a daily re-sync at 6:00 AM local by default. Use when the user asks to sync claude-dev-env into a session, to load the skills of a plugin without a restart, to set up the daily sync, to check which session prompt a session uses, or to turn the claude-dev-env session prompt off for one session.
3
+ description: Install or update claude-dev-env in a running session, link the skills of every enabled plugin so a running session loads them, and schedule a daily re-sync at 6:00 AM local by default. Use when the user asks to sync claude-dev-env into a session, to load the skills of a plugin without a restart, when a /skill fails to resolve, to set up the daily sync, to check which session prompt a session uses, or to turn the claude-dev-env session prompt off for one session.
4
4
  argument-hint: "[HH:MM] [IANA time zone]"
5
5
  ---
6
6
 
@@ -8,6 +8,10 @@ argument-hint: "[HH:MM] [IANA time zone]"
8
8
 
9
9
  An always-on session starts once, so a SessionStart hook runs once and never again. Claude Code reads plugins only at session start, and a running session has no plugin reload. The skills directory is read live, so one symlink per skill makes each skill of a plugin load at once.
10
10
 
11
+ ## A /skill fails to resolve
12
+
13
+ Run `/reload-skills` first. It reloads the skills directory in the running session, so the session keeps its context. When the skill still fails to resolve, run the linker in step 2.
14
+
11
15
  ## 1. Install or update the package
12
16
 
13
17
  Run `npx --yes claude-dev-env@latest --update --target ~/.claude`.
@@ -87,6 +87,23 @@ def test_should_allow_a_run_a_tool_result_shows(
87
87
  assert run_gate(monkeypatch, capsys, MEASURED_REPLY, transcript_path) == (0, "")
88
88
 
89
89
 
90
+ def test_should_steer_a_skipped_check_to_an_open_line(
91
+ monkeypatch: pytest.MonkeyPatch, capsys: pytest.CaptureFixture[str]
92
+ ) -> None:
93
+ skipped_check_reply = "I have not checked the pivot, reach, or screen 26 captures yet."
94
+ _, stdout_text = run_gate(monkeypatch, capsys, skipped_check_reply)
95
+ block_reason = json.loads(stdout_text)["reason"]
96
+ assert "`Open: <check> - <next step>`" in block_reason
97
+ assert "leave the claim out" not in block_reason
98
+
99
+
100
+ def test_should_allow_an_open_line_for_a_skipped_check(
101
+ monkeypatch: pytest.MonkeyPatch, capsys: pytest.CaptureFixture[str]
102
+ ) -> None:
103
+ open_line = "Open: pivot, reach, and screen 26 checks - the next check-in measures them."
104
+ assert run_gate(monkeypatch, capsys, open_line) == (0, "")
105
+
106
+
90
107
  def test_should_allow_a_closing_reply_with_no_message(
91
108
  monkeypatch: pytest.MonkeyPatch, capsys: pytest.CaptureFixture[str]
92
109
  ) -> None:
@@ -1000,8 +1000,8 @@ def test_should_collect_each_question_card_prose_field() -> None:
1000
1000
  def test_should_quote_the_hedged_sentence() -> None:
1001
1001
  assert reply_length_gate.unvalidated_claim_violation("Done. It should take a few minutes.") == (
1002
1002
  'No tool validated this: "It should take a few minutes.". Run the check yourself or through'
1003
- " a subagent, then state what the run, log line, output, or file and line shows, or leave"
1004
- " the claim out."
1003
+ " a subagent, then state what the run, log line, output, or file and line shows. When you"
1004
+ " cannot run it this turn, report it as `Open: <check> - <next step>`."
1005
1005
  )
1006
1006
 
1007
1007
 
@@ -147,7 +147,8 @@ DURATION_CLAIM_PATTERN = re.compile(
147
147
  )
148
148
  UNVALIDATED_CLAIM_MESSAGE = (
149
149
  'No tool validated this: "{claim}". Run the check yourself or through a subagent,'
150
- " then state what the run, log line, output, or file and line shows, or leave the claim out."
150
+ " then state what the run, log line, output, or file and line shows. When you cannot run it"
151
+ " this turn, report it as `Open: <check> - <next step>`."
151
152
  )
152
153
  CITED_NUMBER_PATTERN = re.compile(
153
154
  r"/actions/runs/(\d+)|/pull/(\d+)|\b(?:run|job|check)\s+#?(\d{5,})\b", re.IGNORECASE
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-dev-env",
3
- "version": "8.96.5",
3
+ "version": "8.96.7",
4
4
  "description": "Claude Code development standards — rules, hooks, agents, commands, and skills",
5
5
  "type": "module",
6
6
  "bin": {