Repository navigation
v0.7.0
Added
youdede-toolkit search <term...>matches terms against an artifact's name, slug, summary, and refusals, and ranks a result by how many of those fields a term hit. Searching refusals finds an artifact by the thing you want prevented. Every term must match, so each one narrows the result, and everylistfilter applies to a search as well.youdede-toolkit installedlists what the installation state records for a target and scope, including prerequisites that were pulled in and artifacts no longer in the catalog. It answers what is installed, wheredoctoranswers whether what is installed still matches what was recorded.youdede-toolkit completion bash|zshprints a shell completion generated from the same tables the parser uses and from the catalog, so it cannot offer a command, flag, or value the CLI would then refuse. zsh loads the same definition throughbashcompinit.youdede-toolkit version, and the--versionspelling, report the package name and version.--versionwas previously read as an option expecting a value and exited 1.--jsononlist,search,info,installed, anddoctor. The recordslistandsearchemit are a stable summary rather than the whole manifest, becausecatalog/artifacts.jsonalready carries every field.--dry-runand--jsononremoveandremove-pack. The plan names every file that would be deleted, kept because another install also records it, or put back, and whether the settings, MCP configuration, state, and generated notice would be rewritten or removed. It is produced by the removal itself, stopped before its first write, so it cannot describe something other than what would happen, and it takes no installation lock, so it writes nothing at all. It reports the installed artifacts that still need the one being removed instead of refusing over them.docs/install.mdstates the exit codes:0when a command answered,1when it refused or failed, and what falls under each.
Changed
doctoraccepts--jsonand keeps exiting 1 when it finds drift. It previously refused the flag, and that refusal was asserted by a test; a drift check that CI runs is the one diagnostic that most needs machine-readable output.npm run validaterefuses a taxonomy value that no artifact carries. A declared value makes a filter a legitimate question whose answer is always none, which reads as an empty catalog rather than an absent dimension. What the installer and the adapters support — kinds, risk levels, targets, scopes — is not checked against the catalog's contents.catalog/taxonomy.jsonno longer declares theexpress,fastapi,flask,nestjs, andspringframeworks, which no artifact carried.list --framework expressanswered0 artifact(s).with exit 0; it is now refused with the frameworks the catalog does carry.
Fixed
- Secret history scanning reads the
git rev-list --objectsoutput that Git actually produced. Git accepts-zand ignores it before 2.47, so on the Git that Debian 12 and Ubuntu 24.04 LTS ship,npm run check:secrets:historystopped withmalformed object metadataand the release gate could not run at all. - A one-dash option is refused instead of being read as a positional word and ignored.
add <artifact> -target codexreported installing to Codex' default and wrote toclaude-code. - A word beyond the arguments a command takes is refused.
info <artifact> <other-artifact>described the first and ignored the second. listrefuses a filter value the taxonomy does not carry.list --kind hooksprinted0 artifact(s).and exited 0, so a typo in a script reported an empty catalog.infono longer accepts--target,--scope, and--cwd, andpack-infono longer accepts--scopeand--cwd. Each was accepted and read by nothing, so naming a target asked a question the answer ignored.- The multi-file install rollback test states the privilege it needs instead of failing as root, where a directory mode cannot block a write. The case still runs on the runners that gate the suite.
Integrity
Root digest: f525ef52caa89c8c033504e7f0f4c62a349d96ba0a8778831191ce470ef10eeb. Compare it with npx @youdede/toolkit verify-integrity.