Code Review
yaklang/yakit
对 Yakit 仓库的代码改动做规范化 code review:按代码逻辑、TS 定义、UI 引用与 Props、CSS 样式、依赖版本、配置项六个维度审查,检查测试用例缺失,强制执行 tsc 类型检查与 vitest 测试验证,输出「结果汇总 / 明细解释 / 合并结论」三块报告,经用户确认后写入文件。当用户要求 review、审查、评审代码改动,或在提交、合并、提 PR…
Walks through adding a new file format to remindb's Go parser package: the parser file, the ParseBytes case, table tests and fuzz seeds.
$ npx skills add radimsem/remindb --skill add-parser -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install radimsem/remindb add-parser --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/radimsem/remindb.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/add-parser .claude/skills/add-parser && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "add-parser" agent skill from https://github.com/radimsem/remindb/tree/dev/.claude/skills/add-parser into .claude/skills/add-parser/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-parser", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/radimsem/remindb/tree/dev/.claude/skills/add-parserType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add radimsem/remindb --skill add-parser -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install radimsem/remindb add-parser --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/radimsem/remindb.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/add-parser .agents/skills/add-parser && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "add-parser" agent skill from https://github.com/radimsem/remindb/tree/dev/.claude/skills/add-parser into .agents/skills/add-parser/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-parser", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add radimsem/remindb --skill add-parser -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install radimsem/remindb add-parser --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/radimsem/remindb.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/add-parser .cursor/skills/add-parser && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "add-parser" agent skill from https://github.com/radimsem/remindb/tree/dev/.claude/skills/add-parser into .cursor/skills/add-parser/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-parser", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/radimsem/remindb.git --path .claude/skills/add-parser--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add radimsem/remindb --skill add-parser -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install radimsem/remindb add-parser --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/radimsem/remindb.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/add-parser .gemini/skills/add-parser && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "add-parser" agent skill from https://github.com/radimsem/remindb/tree/dev/.claude/skills/add-parser into .gemini/skills/add-parser/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-parser", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install radimsem/remindb add-parserInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add radimsem/remindb --skill add-parser -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/radimsem/remindb.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/add-parser .github/skills/add-parser && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "add-parser" agent skill from https://github.com/radimsem/remindb/tree/dev/.claude/skills/add-parser into .github/skills/add-parser/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-parser", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add radimsem/remindb --skill add-parser -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install radimsem/remindb add-parser --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/radimsem/remindb.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/add-parser .opencode/skills/add-parser && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "add-parser" agent skill from https://github.com/radimsem/remindb/tree/dev/.claude/skills/add-parser into .opencode/skills/add-parser/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-parser", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
add-parserWalks through adding a new file format to remindb's Go parser package: the parser file, the ParseBytes case, table tests and fuzz seeds.
This skill covers extending remindb's pkg/parser package, which turns raw source bytes into trees of ContextNode values. Adding a format means routing one new extension through ParseBytes and emitting nodes that follow the conventions of the existing formats. It names five places that must change: the new parser file, a new case in the ParseBytes switch in parser.go, a table-driven test file, a few seeds for FuzzParseBytes in fuzz_test.go, and optionally a sample file under testdata.
The parser file should mirror pkg/parser/yaml.go, using an empty struct as a namespace with a free function as the entry point. Naming follows the repository's rules, for example TomlParser rather than TOMLParser, and action errors start with a failed-to prefix and wrap with %w. By default a parse failure aborts the whole-workspace compile. Wrapping the error with the ErrMalformed sentinel makes the compiler skip the file with a warning instead, which suits formats where unparseable input is routine.
Read from SKILL.md and the folder at commit 977b31c. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are go).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Add a remindb Parser loads about 1.6k tokens when it runs. Until then it costs about 75 tokens; SKILL.md has 617 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from radimsem/remindb at commit 977b31c, republished under its MIT licence (© radimsem). 617 words, ~1,586 tokens.
.claude/skills/add-parser/SKILL.md (or your agent's skills folder).remindb's pkg/parser/ package turns raw source bytes into a slice of *ContextNode trees. Adding a format means routing one new extension through ParseBytes and emitting nodes that match the conventions every other format already follows.
Five files. Skipping any one of them ships a half-wired format.
| File | What changes |
|---|---|
pkg/parser/<format>.go | New file — the parser itself |
pkg/parser/parser.go | Add a case to the ParseBytes switch |
pkg/parser/<format>_test.go | New file — table tests over fixture strings |
pkg/parser/fuzz_test.go | Add 2–4 f.Add(...) seeds to FuzzParseBytes |
pkg/parser/testdata/ (optional) | Drop a sample file if tests are easier with a real fixture |
Mirror pkg/parser/yaml.go exactly. The pattern is from .claude/rules/go-concise.md §4 ("Namespace prefix-sharing helpers via a struct"): an empty struct provides the namespace, a free function is the entry point, methods drop the prefix.
package parser
import "fmt"
type TomlParser struct{}
func parseToml(path string, data []byte) ([]*ContextNode, error) {
return TomlParser{}.parse(path, data)
}
func (p TomlParser) parse(path string, data []byte) ([]*ContextNode, error) {
// ... format-specific decode ...
if err != nil {
return nil, fmt.Errorf("failed to parse: toml %s: %w", path, err)
}
return []*ContextNode{buildNode(path, "", root, 1)}, nil
}Initialism rule (memory + go-concise.md): TomlParser not TOMLParser, JsonParser not JSONParser. Pascal-case file-format initialisms.
Error message rule (go-concise.md §5): action errors take a failed to <verb>: prefix and wrap with %w. Validation errors carry no prefix.
Abort vs. skip on bad content: by default a parse failure aborts the whole-workspace compile (the errgroup fails fast). If a malformed file of your format should instead be skipped with a warning — like JSON config that routinely carries comments (#171) — wrap the decode failure with the ErrMalformed sentinel (fmt.Errorf("%w: <format> %s: %v", ErrMalformed, path, err)) instead of the failed to <verb>: form. pkg/compiler/compiler.go already skips ErrMalformed exactly as it skips ErrUnsupportedExt; no compiler change needed. Note this drops the loud error for genuine corruption, so reserve it for formats where unparseable input is expected noise, not a signal.
Open pkg/parser/parser.go, find ParseBytes, add the case in the alphabetic position you'd expect a reader to scan:
switch ext {
case ".md", ".markdown":
return parseMarkdown(path, data)
case ".toml":
return parseToml(path, data) // <-- new line
case ".yml", ".yaml":
return parseYaml(path, data)
// ...
default:
return nil, fmt.Errorf("%w: %q", ErrUnsupportedExt, ext)
}Multi-extension formats list every variant in one case line (see .md/.markdown, .yml/.yaml, .jsonl/.ndjson).
pkg/parser/yaml_test.go is the cleanest template. Table-driven, exercises the happy path plus at least one each of: empty input, malformed input, deeply nested input, and the format's specific edge case (BOM, frontmatter delimiter, mixed-type collection, etc.).
pkg/parser/fuzz_test.go defines FuzzParseBytes, which scripts/fuzz.sh auto-discovers. Add seeds covering your format's shape variety:
f.Add("data.toml", []byte("title = \"Hello\"\n[section]\nkey = 1"))
f.Add("data.toml", []byte("")) // empty
f.Add("data.toml", []byte("[unclosed")) // malformed
f.Add("DATA.TOML", []byte("title = \"upper\"")) // extension caseThe fuzz invariant is "must never panic regardless of input." If your parser deref's a nil from the decoder or indexes past a slice, fuzz will find it. Run scripts/fuzz.sh 30s locally before committing to confirm the new seeds don't regress.
1. Create pkg/parser/<format>.go (empty struct + parseXxx + (p) parse)
2. Wire pkg/parser/parser.go (one case in ParseBytes)
3. Create pkg/parser/<format>_test.go (table tests)
4. Add seeds to pkg/parser/fuzz_test.go (FuzzParseBytes f.Add lines)
5. go test ./pkg/parser/... (must pass)
6. scripts/fuzz.sh 30s (must pass, no panics)(nil, nil) for empty input but the test asserts len(nodes) == 0. Both work since len(nil) == 0, but be explicit in the test about which one your parser actually returns. yaml.go short-circuits with nil, nil when the document is empty — mirror its style if your decoder gives you an obvious "no content" signal.SourceFile to something other than the path arg. Downstream code (search ranking, MemoryFetch ancestor walks) keys on it. Pass path straight through to buildNode.ErrInvalidUTF8, ErrUnsupportedExt, and ErrMalformed (skip-on-bad-content) from parser.go; don't redefine them per format.parser.NewTomlParser() is wrong; the empty struct is exposed bare as TomlParser and constructed with TomlParser{}. See go-concise.md §7..claude/rules/go-concise.md — error message format, naming, struct-with-methods pattern.claude/rules/git-versioning.md — commit each of (parser, switch, tests, fuzz seeds) as one logical chunk; feat(parser): add toml support covers all five files in one commit since they share the idea.claude/skills/add-fuzz-target/SKILL.md — for the broader fuzz discipline if you're adding a brand-new fuzz target rather than seeding an existing one© radimsem, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/add-parser of radimsem/remindb.
Open the folder on GitHubat commit 977b31c
Add a remindb Parser next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Add a remindb Parser this skillradimsem/remindb | 129 | — | ~1.6k | Automated safety check: Pass | MIT | |
| Code Reviewyaklang/yakit | 7.8k | — | ~1.4k | Automated safety check: Notes | AGPL-3.0 | |
| Go Development Guidelinesjumppad-labs/jumppad | 263 | — | ~1.5k | Automated safety check: Pass | MPL-2.0 | |
| Golang Testingunxed/f4 | 241 | 1 repos | ~4.5k | Automated safety check: Pass | MIT | |
| Go Helpershepherdjerred/monorepo | 112 | — | ~1.7k | Automated safety check: Pass | GPL-3.0 | |
| Golang Testingantoniopaya22/go-rest-template | 172 | 9 repos | ~4.2k | Automated safety check: Pass | None |
yaklang/yakit
对 Yakit 仓库的代码改动做规范化 code review:按代码逻辑、TS 定义、UI 引用与 Props、CSS 样式、依赖版本、配置项六个维度审查,检查测试用例缺失,强制执行 tsc 类型检查与 vitest 测试验证,输出「结果汇总 / 明细解释 / 合并结论」三块报告,经用户确认后写入文件。当用户要求 review、审查、评审代码改动,或在提交、合并、提 PR…
jumppad-labs/jumppad
Sets idiomatic Go conventions with a test-first workflow, using testify/require for assertions and mockery for mocks, for new features, packages and refactors.
unxed/f4
Production-ready Golang tests — table-driven tests, testify suites and mocks, parallel tests, fuzzing, fixtures, goroutine leak detection with goleak, snapshot testing, code coverage, integration…
shepherdjerred/monorepo
Current Go development guidance for modules, toolchains, workspaces, testing, fuzzing, concurrency, profiling, security, and Go tooling.
antoniopaya22/go-rest-template
Go testing patterns including table-driven tests, subtests, benchmarks, fuzzing, and test coverage.
mvrahden/go-test
Guides writing, fixing and migrating tests in Go repositories that use the gotest suite framework, including version differences and CI setup.
radimsem/remindb
Guides an agent writing to a remindb memory server: structured notes go in as files parsed into a node tree, single text facts go in through MemoryWrite.
radimsem/remindb
Covers the read-side tools of the remindb MCP server, a SQLite-backed agent memory, for orienting, searching, resyncing and tracing relations.
radimsem/remindb
Adds a new row to remindb's token-savings benchmark table by writing a scenario function that measures the naive shell-tool token cost against the remindb tool-call cost for the same task.
radimsem/remindb
Adds a new Go fuzz target to remindb following its seed-corpus discipline: one target per logical surface, discovered automatically by its FuzzXxx function name.
radimsem/remindb
Explains how to add an end-to-end test scenario to remindb, choosing between a direct API test and an MCP test and using the shared helpers and fixtures.
radimsem/remindb
Checklist for adding a new Memory-prefixed tool to remindb's Go MCP server: tool file, registration, test, skill docs, plus the locking and logging rules.
Works with
Categories
Walks through adding a new file format to remindb's Go parser package: the parser file, the ParseBytes case, table tests and fuzz seeds. This skill covers extending remindb's pkg/parser package, which turns raw source bytes into trees of ContextNode values. Adding a format means routing one new extension through ParseBytes and emitting nodes that follow the conventions of the existing formats.
Add a remindb Parser fits situations like: supporting a new file extension such as .toml or .xml in remindb; registering a new extension in the ParseBytes switch; deciding whether a malformed file should abort the compile or be skipped with a warning; writing tests and fuzz seeds for a new parser.
Run `npx skills add radimsem/remindb --skill add-parser -a claude-code`. Or copy the skill folder (.claude/skills/add-parser in radimsem/remindb) into .claude/skills/add-parser in your project. Claude Code loads it when a task matches its description.
Run `npx skills add radimsem/remindb --skill add-parser -a codex`. Or copy the skill folder (.claude/skills/add-parser in radimsem/remindb) into .agents/skills/add-parser in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add radimsem/remindb --skill add-parser -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/add-parser, .gemini/skills/add-parser, .github/skills/add-parser and .opencode/skills/add-parser in your project.
SKILL.md names no scripts, command-line tools or credentials: Add a remindb Parser is instructions for the agent only. Our summary lists: A checkout of the remindb repository and a Go toolchain.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Add a remindb Parser is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.6k tokens (SKILL.md is roughly 6.3k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Add a remindb Parser: Code Review (yaklang/yakit, 7.8k stars), Go Development Guidelines (jumppad-labs/jumppad, 263 stars), Golang Testing (unxed/f4, 241 stars) and Go Helper (shepherdjerred/monorepo, 112 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
radimsem (a GitHub user) maintains it in radimsem/remindb, which has 129 GitHub stars. The repository holds 11 skills in this directory. The repository was last updated on August 3, 2026.
Source: radimsem/remindb on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.