Skip to content

feat(catalog): read trigger sets back and list skill package formats - #211

Open
napetrov wants to merge 3 commits into
intel:mainfrom
napetrov:feat/run-trigger-formats
Open

napetrov wants to merge 3 commits into
intel:mainfrom
napetrov:feat/run-trigger-formats

Conversation

@napetrov

@napetrov napetrov commented Oct 24, 2026 •

Copy link
Copy Markdown
Contributor

Stacked on #210 (feat/task-format-detect). Review the commits after #210: f7abf7c, 19822ba (precision in skill_selection_summary). The fix for vendored-skill discovery is a separate PR, #215.

Summary

dokimi could already write three trigger-set formats. With this PR it can read them too and run them through the existing skill-catalog: arm. It adds no new runner.

skill-reach QuerySet  ─┐
skill-creator / agentskills.io [{query, should_trigger}] =TARGET ─┼─> TriggerQuery ─> lint vs --catalog ─> questions | reach | skill-creator
questions + expected_skill ─┘                                                         └─> arms run --arms skill-catalog:<dir>  (skill_selection_summary)
 dokimi/external/trigger_set.py   + detect_trigger_format, from_reach, from_skill_creator, from_questions, read_trigger_set
 dokimi/commands/catalog.py       + trigger-set --trigger-set PATH[=TARGET];  + catalog formats --root [--json]
 dokimi/commands/arms.py          + a reach or skill-creator file gets the conversion command in its error
 dokimi/task_formats/             + consumer "catalog trigger-set" for skill-reach and skill-creator-trigger
 dokimi/skills/formats.py (new)   agent-skill (host + agentskills.io lint), cursor-rule, copilot-instructions, gemini-extension, claude-plugin

Evidence

  • Before: arms run --questions reach.json failed in the questions loader, and tasks inspect gave no consumer for skill-reach or skill-creator sets.
    After: catalog trigger-set --trigger-set reach30.json --format questions reads the file and re-lints it (30 queries: 19 exam-framed, 17 echo). Arms then score it. The round-trip tests (writer, then reader, gives the same labels) are in tests/test_trigger_set_readers.py, and the package scan tests are in tests/test_skill_formats.py. The full suite passes locally (7834), along with ruff and mypy.
  • skill_selection_summary now reports precision, which is hits over the questions where any skill loaded. The arms report shows it as a column. The precision figures below came from an ad-hoc script that used the same definition.
  • Live run: haiku-4.5 (Bedrock) with the intel/skills@370d84d catalog (33 skills). Runs 1–3 are repeats.
condition runs recall precision false trigger
dokimi skill-catalog: with reach30, 33 skills 3×30 0.77 0.66 0.46
skill-reach claude-code haiku, same 30 ids (earlier run) 2×30 0.41–0.50 0.75 0.19–0.31
dokimi skill-catalog: with onetbb skill-creator set, 33 skills 1×20 1.00 0.56 0.80
dokimi skill-catalog: with onetbb skill-creator set, target alone 2×20 1.00 0.63 0.60
skill-creator run_eval.py native (anthropics/skills@dbd4588), haiku 3×20 0.10 n/a 0.00

The tool-calling proxy triggers too often compared with the real harnesses. The import path is unaffected by this; it is the same finding as before.

Merge Danger

Door: two-way

Additive only: two new CLI options or subcommands and a new module. --questions on catalog trigger-set is no longer required (at least one source is still enforced).

Blast Radius: small

A skill-creator negative is read as "no skill should load". In a catalog of more than one skill, loading a rival skill therefore counts as a false trigger. The CLI warns about this.

🤖 Generated with Claude Code

A probe registry (dokimi.task_formats) names the format of a file, a task
directory or a tree, and reports kind, item count, present/missing parts,
lint problems and which dokimi backends consume it today. Probes: harbor and
task-md (wrapping harnesses.tasks), terminal-bench v1, SWE-bench, Inspect AI
samples and @task files (text scan, never imported), OpenAI evals,
skill-creator evals.json and trigger sets, skill-reach QuerySet, promptfoo
and dokimi questions. Unknown paths get a best-effort structure report;
malformed files are lint problems. Detection only: nothing new runs.

Signed-off-by: Nikolay Petrov <nikolay.a.petrov@intel.com>
@github-actions github-actions Bot added the cli-interface-change Changes dokimi's user-facing CLI surface label Oct 24, 2026
@github-actions

Copy link
Copy Markdown

CLI interface change detected

This PR changes dokimi's user-facing CLI surface (commands and/or options):

+ added command `dokimi catalog formats`
    + option `--help/-h`
    + option `--json`
    + option `--root`
+ added command `dokimi tasks inspect`
    + argument `path`
    + option `--help/-h`
    + option `--json`
~ `dokimi catalog trigger-set` parameters changed:
    + added option `--trigger-set`
    ~ changed option `--questions`: required: True -> False

Updated on every push; the cli-interface-change label is on while the diff is non-empty.

@codecov-commenter

codecov-commenter commented Oct 24, 2026 •

Copy link
Copy Markdown

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

❌ Patch coverage is 90.81309% with 87 lines in your changes missing coverage. Please review.
✅ Project coverage is 91.97%. Comparing base (09be35b) to head (19822ba).

Files with missing lines Patch % Lines
dokimi/dokimi/external/trigger_set.py 81.91% 8 Missing and 9 partials ⚠️
dokimi/dokimi/task_formats/detect.py 87.61% 8 Missing and 5 partials ⚠️
dokimi/dokimi/task_formats/source.py 82.43% 8 Missing and 5 partials ⚠️
dokimi/dokimi/task_formats/datasets.py 94.54% 5 Missing and 7 partials ⚠️
dokimi/dokimi/skills/formats.py 92.90% 6 Missing and 4 partials ⚠️
dokimi/dokimi/task_formats/dirs.py 89.36% 4 Missing and 6 partials ⚠️
dokimi/dokimi/task_formats/configs.py 90.32% 3 Missing and 3 partials ⚠️
dokimi/dokimi/commands/catalog.py 95.38% 1 Missing and 2 partials ⚠️
dokimi/dokimi/commands/arms.py 83.33% 2 Missing ⚠️
dokimi/dokimi/commands/tasks.py 96.77% 0 Missing and 1 partial ⚠️
❗ Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #211      +/-   ##
==========================================
- Coverage   92.01%   91.97%   -0.05%     
==========================================
  Files         223      231       +8     
  Lines       27768    28701     +933     
  Branches     4563     4716     +153     
==========================================
+ Hits        25552    26398     +846     
- Misses       1570     1615      +45     
- Partials      646      688      +42     
Files with missing lines Coverage Δ
dokimi/dokimi/__init__.py 100.00% <ø> (ø)
dokimi/dokimi/eval/arm_summary.py 97.41% <ø> (ø)
dokimi/dokimi/report/arms_report.py 96.95% <100.00%> (ø)
dokimi/dokimi/task_formats/__init__.py 100.00% <100.00%> (ø)
dokimi/dokimi/task_formats/model.py 100.00% <100.00%> (ø)
dokimi/dokimi/commands/tasks.py 92.40% <96.77%> (+1.06%) ⬆️
dokimi/dokimi/commands/arms.py 88.85% <83.33%> (-0.19%) ⬇️
dokimi/dokimi/commands/catalog.py 97.07% <95.38%> (-1.23%) ⬇️
dokimi/dokimi/task_formats/configs.py 90.32% <90.32%> (ø)
dokimi/dokimi/skills/formats.py 92.90% <92.90%> (ø)
... and 5 more
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@napetrov
napetrov force-pushed the feat/run-trigger-formats branch from 29df5da to f7abf7c Compare October 24, 2026 17:13
Readers for the three trigger-set formats dokimi already writes (skill-reach
QuerySet, skill-creator / agentskills.io eval queries, questions with
expected_skill) into TriggerQuery, held to the writers by round-trip tests.
catalog trigger-set --trigger-set relints an imported set against the catalog
and hands it to the skill-catalog: arm; arms run points external sets at it.

catalog formats names the skill/rule packages of other ecosystems (Cursor
rules, Copilot instructions, Gemini extensions, Claude plugins) next to
agentskills.io SKILL.md, with spec lint and the selecting mechanism.

Signed-off-by: Nikolay Petrov <nikolay.a.petrov@intel.com>
Hits over the questions where the arm loaded any skill, strict on
multi-load like recall; rendered in the arms report's Skill selection
table. Replaces the ad-hoc calculation used for the intel#211 evidence table.

Signed-off-by: Nikolay Petrov <nikolay.a.petrov@intel.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cli-interface-change Changes dokimi's user-facing CLI surface

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants