Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@
"description": "Daymade skills core suite. Bundles skill creation, quality review, governance, and marketplace development tooling under one shared namespace. Existing-skill edits use an old-vs-new capability audit and content-bound packaging attestation so prompt compression cannot silently delete runtime contracts. When the official skill-creator plugin is also installed, skill-creator detects the coexistence and offers a consent-based, reversible SessionStart routing hook so the daymade edition wins deterministically; on machines without the official plugin nothing is ever installed.",
"source": "./daymade-skill",
"strict": false,
"version": "1.21.0",
"version": "1.22.0",
"category": "suite",
"keywords": [
"suite",
Expand Down
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- **claude-migrate-memory-to-doc** (`daymade-claude-code` v1.19.0): migrate Claude Code personal memory (per-project `memory/`) into tool-agnostic reference docs so other AI CLIs auto-loading `AGENTS.md` (Codex primarily; transfers to Cursor) read the same user profile and collaboration preferences. Two-layer `references/` + CLAUDE.md-inline + AGENTS.md-symlink architecture designed around what each tool actually auto-loads; runs inline with multi-agent review and empirical `codex` verification. Also newly registers `claude-migrate-memory-to-doc` in the suite's `skills` array (it had shipped on disk unlisted).

### Changed
- **skill-creator** (`daymade-skill` v1.22.0): six corrections distilled from using the skill to ship consecutive updates to an existing skill, each one a place where the workflow let a predictable mistake through. (1) **Description budget** — the 1024-character ceiling was never stated, so an update that added trigger phrases for newly-covered scope blew past it and took two rounds of compression to land; the guidance now names the limit, notes that it is in direct tension with the "pushy" advice, and makes explicit that near the ceiling **adding a trigger is zero-sum** (you are deleting an existing one to pay for it) — a trade that must be made consciously and recorded, since a silently-dropped trigger phrase narrows when the skill fires and nobody notices until it stops firing for someone. It also ranks what to cut: prose qualifiers are re-derivable from the body, distinct trigger phrases are not. (2) **Registry minimal-diff** — the marketplace manifest is the single file every skill shares and therefore the likeliest concurrent-edit collision; scripted bumps silently normalize trailing newline / indent / key order, so the step now requires a round-trip check that `git diff` shows only the intended fields (a scripted bump once added a trailing newline to a manifest that never had one). (3) **Activation check** — "sync the installed copy" is often not work at all: a symlinked skills dir or a `source: directory` marketplace reads the working tree, so edits are already live, while only cached/copied installs need the official update. Verify by grepping the resolved runtime file for a phrase unique to the new content, never by trusting a recorded version string — one session read a plugin record naming a cache directory with the new version in its path and nearly reported the update as live; that directory had never existed. (4) **Production-as-eval** gains a second signal source: when a skill's output is something that keeps running (guard, monitor, scheduled job, hook), its own telemetry is eval data, and the **first false alarm** is the highest-signal record in it — a user correction needs a user to notice and bother, while a deployed mechanism reports on itself unprompted, and a false positive proves a rule is wrong in a way re-reading never would. (5) **Concurrency now covers branch switching, not just a moved HEAD** — a checkout is worktree-wide, so a sibling session running `checkout main` mid-edit lands your next commit on **main**, violating the repo's never-commit-to-main rule while your feature branch still points at the old base; the pre-commit check gains `git branch --show-current`, with `git reflog` as the authoritative reconstruction and a ref-only repair (`checkout -B` + `branch -f`) that, unlike `reset --hard`, cannot destroy a parallel session's uncommitted work. (6) **PR staleness** — the same property that makes the manifest a collision hotspot makes an open PR go stale, so `CONFLICTING` is the expected state rather than a surprise (this PR itself sat through 69 commits of main). Conflicts there are additive (two authors appended to the same section), so keep both sides, never `--ours`/`--theirs`; and the skipped step that catches a bad resolution is proving afterwards that the **only** difference from the base is your own entry, with a copy-paste check for it. Push with `--force-with-lease`, whose whole value is failing exactly when someone else pushed to your branch.
- **frontend-visual-qa** v1.11.0: make the user-supplied target canonical and separate current-render truth from delivery freshness. Web navigation preserves the exact URL while persisted evidence redacts paths, query values, fragments, navigation errors, and target values reflected into rendered labels; reports store label hashes plus a target-string fingerprint. Single-file evidence adds a byte hash, multi-resource files use a resource/dependency manifest, and native apps use an installed-artifact fingerprint. Source, interaction/data, and target-lifecycle authority are independent. The skill now traces source → build → runtime → target → inspected pixels only for freshness/deployment claims, reports “source fixed; verification target stale” without blocking read-only inspection, and requires same-target identity/visual recheck only for fix closure. Every probe header value uses environment indirection, and raw screenshot/report directories are temporary local sensitive evidence.
- **git-safety-net** v1.7.0: close the gap between "judge by content, not counts" and *which* content check to trust, plus a shared-worktree hazard. Distilled from a real audit in which three successive content-level instruments each returned a wrong answer before the trial merge settled it: `git cherry` (squash rewrites patch-ids → false UNMERGED), a **three-dot** `diff base...ref` used to ask "what does base lack" (wrong question — under-reported missing files 1 vs 5), and a file-level existence check (a file present on base can still be missing the ref's lines). Adds a diff-form section (two-dot vs three-dot, chosen by the question) and a **fourth supersession rung**: grep the base for the missing file's own name, because a replacement usually documents the removal in prose — a 107-line script absent from the base looked like textbook unique work until its successor's comments read "replaces the old …", "made this worse, not better", "CAUSED the corruption", i.e. deliberately excised harmful code whose "rescue" would have reintroduced a known bug. Also separates generated artifacts (scan markers, lockfiles) and relocated paths from real loss. New Mode D rule: in a shared tree, never aim `reset --hard`/`merge`/`rebase` at "the current branch" — a branch check goes stale the instant it returns, so a parallel session's `switch` redirects your destructive command onto **their** branch; use checkout-independent forms (`git branch -f`, `git fetch origin <branch>:<branch>`) that name their target.
- **claude-code-hooks** (`daymade-claude-code` v1.23.0): add a fifth pattern — Stop hook, the only hook type that can react to Claude's own generated text (`UserPromptSubmit` only ever sees the user's input, a category mistake that caused a real same-day incident: a hook meant to catch Claude inventing an unverified shorthand name never once fired, while repeatedly false-blocking the user's own unrelated typing). Covers the full contract (`last_assistant_message` vs `transcript_path` fallback, the `stop_hook_active` anti-loop check and its JSON-string-vs-Python-truthiness trap), with a runnable, tested skeleton that uses a quoted heredoc instead of `python3 -c "…"` to structurally avoid a newly-cataloged pitfall (#9, 8→9 total): a literal quote or backtick inside a Python *comment* can silently corrupt an embedded multi-line block without `bash -n` catching it — confirmed by extracting and executing the shipped skeleton against 5 real JSON payloads, not just reading it. Also fixes CLAUDE.md / README.md / README.zh-CN.md skill lists, which were missing `docx-creator` and `claude-code-hooks` (both already registered in `marketplace.json`, never synced to the human-facing lists).
Expand Down
Loading
Loading