DBDelve
Dive deep into your data. A fast, native, multi-engine database client written in Rust. Free and open source, no telemetry.
翻译准备中
尚未收集仓库信息。
尚未检测到更新。GitHub 发布版本后会显示在这里。
Skill for iteratively improving SKILL.md frontmatter compliance using the Ralph loop pattern
翻译准备中
正在加载完整 README。
查看完整 README ↗"A true master teaches not by telling, but by refining." - The Skill Sensei
Sensei validates portable Agent Skills frontmatter and suggests authoring improvements using the Ralph loop pattern. Medium-High is a Sensei advisory target, not a specification compliance level.
Specification versus advice: score keeps portable diagnostics in specChecks
and optional Sensei recommendations in checks, including license/version suggestions.
The standard requires only name and description; 150 characters, 60 words,
WHEN:, type prefixes, and the 500-token target are heuristics, not normative rules.
Static scores and proof artifacts are neither observed activation nor security audits.
See scoring and host portability
for constraints, runtime limitations, and the separately owned Copilot extension work in #5.
Skills without proper frontmatter lead to skill collision - agents invoking the wrong skill for a given prompt. Common issues include:
Sensei implements the "Ralph Wiggum" technique:
Run sensei on my-skill-name
Run sensei on my-skill-name --fast
Run sensei on skill-a, skill-b, skill-c
Run sensei on all Low-adherence skills
Run sensei on all skills
Run sensei on my-skill-name --gepa
Run sensei score my-skill-name
Score-only mode runs without LLM calls.
Published packages and Action tags may lag main; see release status
before using newly merged features.
npx @spboyer/sensei score .
npx @spboyer/sensei check --root . --config .token-limits.json --strict
--root resolves paths; --config selects limits; --emit-proof writes sensei-audit.md; .sensei.json enables repo policy. Install globally via npm i -g @spboyer/sensei.
steps:
- uses: actions/checkout@v4
- uses: spboyer/[email protected]
with:
command: check
root: .
path: .
config: .token-limits.json
strict: 'true'
import { scoreSkillContent } from '@spboyer/sensei/score';
import { parseFrontmatter } from '@spboyer/sensei/parse';
import { checkNameCompliance } from '@spboyer/sensei/checks';
const result = scoreSkillContent(renderedSkillMarkdown, { path: 'skills/my-skill', moduleCount: 2 });
const frontmatter = parseFrontmatter(renderedSkillMarkdown);
checkNameCompliance(frontmatter?.name ?? '');
path is metadata; moduleCount defaults to 0. parseFrontmatter returns
null for absent/unclosed delimiters, and optional errors for invalid delimited
YAML. Nested metadata and scalar types are preserved; inspect diagnostics before
using typed convenience fields.
npm run --silent tokens -- eval manifest.json --root=/path/to/project --format=json
Run from a current Sensei checkout with script dependencies installed. Compare repeated host observations and output assertions against a baseline. Unavailable evidence cannot pass; GEPA keyword fitness is not observed activation. No provider or Python dependency is added. See the trusted adapter contract, exit codes, and protocol smoke test.
uv run scripts/src/gepa/auto_evaluator.py score --skill my-skill --skills-dir skills --tests-dir tests
uv run --with-requirements scripts/src/gepa/requirements.txt scripts/src/gepa/auto_evaluator.py optimize --skill my-skill --skills-dir skills --tests-dir tests
Score-only mode needs no GEPA installation. Optimization requires the optional
version in scripts/src/gepa/requirements.txt and model access; if that version
is unavailable from your package index, optimization cannot run. GEPA uses
keyword/proxy fitness; it does not observe whether a host loaded a skill.
| Flag | Description |
|---|---|
--fast | Skip tests for faster iteration |
--gepa | Use GEPA evolutionary optimization instead of template-based improvements |
--skip-integration | Skip integration tests (unit + trigger tests only) |
⚠️ Note: Using
--fastspeeds up the loop significantly but may miss issues. Consider running full tests before final commit.
以上为 README 的开头部分。其余内容请阅读原文。 查看完整 README ↗