Skip to content

v0.6.4: skill audit — author's-side staleness read (Stream 6 follow-on) - #100

Merged
thrillmot merged 1 commit into
mainfrom
feat/v0.6.4-skill-audit
Jun 1, 2026
Merged

v0.6.4: skill audit — author's-side staleness read (Stream 6 follow-on)#100
thrillmot merged 1 commit into
mainfrom
feat/v0.6.4-skill-audit

Conversation

@thrillmot

Copy link
Copy Markdown
Collaborator

Summary

Closes the "author's-side" arrow of the SkDD loop. logmind skill audit walks every .claude/skills/*/SKILL.md and reports staleness signals:

  • name + path + bytes
  • last touched — last git commit touching SKILL.md (falls back to file mtime if not in git)
  • decision count — # times the skill name appears in docs/decisions.md + docs/decisions-branches/*.md
  • status: active (everyday) / aging (last touched > 90d) / ghost (decision_count==0 AND bytes>2000 → loaded but never iterated)

Pairs with clud-bug's usage --health (v0.6.28+):

  • audit: what's HERE, how stale (author + filesystem side)
  • usage --health: what's USED, how often cited (load + review side)

Surface

  • logmind skill audit — human-readable table with summary line.
  • logmind skill audit --json — machine-readable array.

What changed

  • src/logmind/core/skill_cli.py — new audit_skills, classify_audit_row, _git_last_touched.
  • src/logmind/cli.py — new @skill.command("audit") wiring.
  • tests/test_skill_cli.py — 13 new tests (directory walking, decision counting from main + branch files, every status bucket, CLI rendering, JSON output, edge cases).

Test plan

  • pytest -q — 772 tests pass (758 prior + 14 new)
  • CLI smoke: scaffold a SKILL.md + log a decision mentioning it, run logmind skill audit, verify rendered table + status classification
  • Self-review on this PR via clud-bug-review

@vercel

vercel Bot commented Jun 1, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
logmind-site Ready Ready Preview, Comment Jun 1, 2026 4:42am

@github-actions

github-actions Bot commented Jun 1, 2026

Copy link
Copy Markdown
Contributor

🐛 Q7-logmind bench

ok: 4-angle Q7-logmind compliance
  per-call       -10% bytes vs git equivalent      ✅ saver
  worst-case     -58% even on never-read           ✅ saver
  per-session    (stub — not yet implemented)
  org-cumulative (stub — not yet implemented)

Updated 2026-06-01T04:42Z. See workflow run for full JSON.

@claude

claude Bot commented Jun 1, 2026

Copy link
Copy Markdown

Claude finished @thrillmot's task in 3m 31s —— View job


🐛 Clud Bug review

This round: 0 critical · 0 minor · 0 resolved from prior · 0 still open

Found: 0 🔴 / 0 🟡 / 0 🟣

Per-skill scan

  • [critical-issues-only]: scanned all paths. 0 findings.
  • [evidence-based-review]: applied to all findings. ✓ all anchored.
  • [respect-existing-conventions]: deferred import datetime as _dt inside functions matches existing bench/log conventions. 0 findings.

Tasks

  • Load tools
  • Read skills
  • Fetch PR diff
  • Review src/logmind/core/skill_cli.py
  • Review src/logmind/cli.py
  • Review tests/test_skill_cli.py
  • Check remaining files
  • Post inline findings (none)
  • Emit structured summary

No critical issues found. The implementation is correct: imports are clean (Optional, subprocess, default_skills_dir all present), the git subprocess is invocation-safe (list args + -- separator), classify_audit_row priority (ghost → aging → active) matches spec, mtime fallback for non-git files works, and test coverage hits all status buckets + CLI rendering + JSON output + edge cases.

Skills referenced: [critical-issues-only, evidence-based-review, respect-existing-conventions]

@github-actions

github-actions Bot commented Jun 1, 2026

Copy link
Copy Markdown
Contributor

🐛 Clud Bug review

This round: 0 critical · 0 minor · 0 resolved from prior · 0 still open

Found: 0 🔴 / 0 🟡 / 0 🟣

Per-skill scan

  • [critical-issues-only]: scanned all paths. 0 findings.
  • [evidence-based-review]: applied to all findings. 0 findings.
  • [respect-existing-conventions]: checked deferred import pattern against existing conventions. 0 findings.

Skills referenced: [critical-issues-only, evidence-based-review, respect-existing-conventions]

@thrillmot
thrillmot merged commit a0dd429 into main Jun 1, 2026
15 checks passed
@thrillmot
thrillmot deleted the feat/v0.6.4-skill-audit branch June 1, 2026 04:46
thrillmot added a commit that referenced this pull request Jun 4, 2026
…lback (§8.3) (#140)

Per master plan §8.3. Two-deliverables-in-one: port
`.github/workflows/notify-agent-skills.yml` off the now-dead
`logmind.core.changelog` Python module (PR #137 deleted it) AND add
idempotency to the `fallback-issue` job so a flapping API can't
accumulate dozens of duplicate issues on `thrillmade/agent-skills` (the
v1.0.0 release wave generated 12 such fallback issues — already closed
in parallel).

**Changes:**

1. `.github/workflows/notify-agent-skills.yml`:
   - Stops importing `logmind.core.changelog` (gone after #137 merge).
- Calls vendored `scripts/parse_changelog.py` (~120 LOC) that reads
`docs/changelog-python.md` (new path after #137) with fallback to
top-level `CHANGELOG.md` for backward compat. Same extract-sections
semantics as the old Python module.
- Adds fallback-issue idempotency: rolling-24h daily-cap via
`created:>${CUTOFF}` issue search + same-skill check (open
`from-logmind` issues with `skills/logmind/SKILL.md in:body`). If a
recent or open fallback for the same skill exists, comment on it rather
than opening a new one.

2. `.github/scripts/parse_changelog.py`:
- New file. Docstring calls out the Option-A migration path: add
`logmind changelog --since <tag>` Go subcommand in next release, replace
this script + `python3` call with single binary invocation.
   - Tested locally against `docs/changelog-python.md`:
     - `--since v0.6.13 --up-to v0.6.14` → 3,535 chars
     - `--since "" --up-to v0.5.10` → 58,357 chars (first-release case)
     - `--since v0.7.0 --up-to v0.6.0` → 0 chars (caller-ahead edge)

**Parallel deliverable — 12 stale fallback issues closed on
`thrillmade/agent-skills`:**
#98 #99 #100 #101 #102 #103 #104 #105 #106 #107 #108 #109 (v1.0.0
release wave: rc1 → rc2 → rc3 → v1.0.0).

**Verification:**
- yaml.safe_load + actionlint both clean on the edited workflow.
- Script tested locally with three representative inputs (above).

URGENT: must land before next logmind tag release; without this, the
next tag fires `notify-agent-skills.yml` which then breaks on the
missing Python module and re-opens the fallback issue noise pattern.

---------

Co-authored-by: thrillmot <thrillmot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant