@rryter/knowhow
v0.3.0
Published
Claude Code skills, agents and hooks for a personal Staff/Principal engineering knowledge base: capture, weekly review, decision records, blog triage, skill forge.
Maintainers
Readme
knowhow
Personal knowledge base and Claude Code setup for growing toward Staff / Principal Engineer.
The loop: capture → review → decide → publish → automate.
| Step | Skill | Cadence | Output |
|---|---|---|---|
| Capture | /rryter:capture | after meaningful tasks | sanitized note in notes/, line in impact-log.md |
| Review | /rryter:weekly-review | weekly, ~15 min | inbox processed, themes, blog scores updated |
| Decide | /rryter:decision-record | after design choices | ADR in decisions/ |
| Publish | /rryter:blog-triage | monthly | ranked ideas, one outline in blog/drafts/ |
| Automate | /rryter:skill-forge | when something repeats | new skill in forged-skills/ |
| Recall | /rryter:recall | whenever you need it | answer from your notes, with sources and gaps |
Two subagents support this: rryter:staff-reviewer (principal-engineer review of designs/PRs) and rryter:editor (turns drafts into publishable posts).
All of it ships as the Claude Code plugin rryter, so everything is namespaced: /rryter:<skill>, rryter:<agent>. Day-to-day usage: HOW-TO-USE.md.
Layout
.claude-plugin/
plugin.json # the "rryter" plugin
marketplace.json # "knowhow" marketplace, serving the plugin from this checkout
skills/ # the five skills above
agents/ # staff-reviewer, editor
hooks/
hooks.json # registers both hooks with the plugin
log-session.sh # SessionEnd: logs each session to inbox/sessions.md
guard-confidential.sh # PreToolUse: blocks writes to this repo containing client terms or patterns
scan-confidential.pl # the scanner, shared with the git pre-commit check
pre-commit.sh # installed into .git/hooks by the installer
confidential-patterns.default # seed for .confidential-patterns
forged-skills/ # skills made with /rryter:skill-forge, linked as plain user skills
scaffold/ # pristine seed files for npm-installed bases
templates/ # note, decision, post
inbox/ # raw captures (sessions.md is local only, gitignored)
notes/ # atomic, sanitized learnings
decisions/ # ADRs
blog/ideas.md # scored backlog
blog/short-posts.md # LinkedIn / X drafts from the weekly review
blog/drafts/
impact-log.md # brag doc
skills-candidates.md
growth.md # competencies practised this quarter
tags.md # agreed tag vocabularyInstall
From npm (scaffolds a fresh knowledge base):
npx @rryter/knowhow install # base in ~/knowhow
npx @rryter/knowhow install --dir ~/kb # or anywhere elseFrom a checkout of this repo:
git clone [email protected]:rryter/knowhow.git ~/knowhow
cd ~/knowhow && ./install.shThe skills and hooks address the base as ~/knowhow, so when it lives elsewhere the installer makes ~/knowhow a symlink to it (and refuses if ~/knowhow is already something else). It also:
- creates the base folders, templates and seed files where missing; existing content is never overwritten. Git checkouts are never written to
- registers the base as the
knowhowplugin marketplace and installsrryter@knowhow. A checkout serves the plugin from itself; an npm-installed base fetches it from the@rryter/knowhowpackage - links
forged-skills/*into~/.claude/skills/ - allows read-only access to the base from every project (
Read(~/knowhow/**)in~/.claude/settings.json), so/rryter:recallandrryter:staff-reviewerwork in your work repos. Writes still prompt and go through the guard - removes the symlinks and
settings.jsonhook entries left by pre-plugin installs (backing upsettings.jsonfirst), and creates a local.confidential-termsfile
Requires Node 20+, jq and the claude CLI.
To update: npx @rryter/knowhow@latest install for an npm-installed base, or git pull && ./install.sh for a checkout. Both find the base through ~/knowhow, so --dir is only needed the first time. Restart Claude Code afterwards.
Then add the snippet from ~/knowhow/global-CLAUDE.md to ~/.claude/CLAUDE.md.
Publishing
package.json files whitelists only the plugin manifest, skills, agents, hooks, templates and scaffold/ (pristine seed files). Your own notes, decisions, ideas and impact log are never packed. Check with npm pack --dry-run and claude plugin validate ., then npm publish. Keep version in package.json and .claude-plugin/plugin.json in sync.
Using it from a work repo
claude --add-dir ~/knowhowThe plugin is installed at user scope, so /rryter:capture works in any project.
Confidentiality
This repo must never contain client code, internal names, URLs, ticket IDs or data. Only generalized learnings.
- Every skill that writes here has a mandatory sanitize step.
hooks/guard-confidential.shblocks any write into this repo that contains a term from.confidential-terms(one per line, case-insensitive) or matches.confidential-patterns(one<label> <Perl regex>per line: ticket keys, internal hostnames, private IPs, email addresses, tokens). Both files are gitignored. Fill the terms with client names, internal hostnames, project codes. There is no override; reword instead.- A git pre-commit check runs the same scanner over staged changes, so nothing confidential reaches the remote even if it got in another way.
- Keep the repo private.
