Skip to content

[rig-tasks] Daily rig evaluation — 2026-08-16 — 10/10 passed #433

Description

@github-actions

Summary

Task Description Kind Typecheck Key finding
1 (reused) HTML anchor link extractor agent ✅ pass Clean use of defineTool with readFile + regex loop; s.enum for link classification works well
2 (reused) TS optional chaining counter agent ✅ pass s.record(s.object(...)) pattern with steering() addon; regex-based counting idiomatic
3 (reused) Git file size change tracker agent ✅ pass execSync in tool handler for git cat-file -s; s.enum for grew/shrank/unchanged is expressive
4 (reused) JSON pretty-printer stats agent ✅ pass Multiple tools (read/analyze/write) chain naturally; s.unknown for JSON value parameter works
5 (reused) TS interface method counter agent ✅ pass p.glob + per-file tool calls; s.record(s.object) for named interfaces; steering() with message arg
6 (reused) Git tag annotation extractor agent ✅ pass execSync in tool for git cat-file -t; as const on return literals for enum matching
7 (new) TS wildcard re-export detector agent ✅ pass p.glob discovery + readFile/regex; s.array(s.string) for targets field; steering() addon
8 (new) Markdown link classifier agent ✅ pass p.glob("**/*.md") with per-file tool; s.record for file stats map; repair() addon
9 (new) package.json field auditor agent ✅ pass p.read("package.json") inline in instructions; s.enum("present","absent","malformed"); s.number for score
10 (new) Parallel git stats workflow workflow ✅ pass Initial attempt used import { call } from "rig" (wrong); fixed to destructure call from body param. Also needed meta.description and WorkflowMeta-compliant object. Promise.all with two subagents pattern works well.

Problems encountered

Task 10 — Parallel git stats workflow (fixed)

What the code tried to do: Two subagents (commitStatsAgent, fileStatsAgent) run in parallel via Promise.all, then a call.json() combines results.

Error 1:

Module '"rig"' has no exported member 'call'.

Root cause: call is NOT exported from "rig". It is destructured from the body function parameter: body: async ({ call }) => { ... }. Fix: remove call from the import, add it to the body destructure.

Error 2:

Property 'description' is missing in type '{ name: string; }' but required in type 'WorkflowMeta'.

Root cause: WorkflowMeta requires both name and description. Fix: add description to meta.

Error 3:

'b' is of type 'unknown'.

Root cause: s.record(s.int) values are typed as unknown at the TypeScript call-site when accessed via Object.entries. Fix: cast with (b as number).


Improvement opportunities

Missing or undiscoverable schema helpers (s.*)

  • No issues; s.record(s.int), s.record(s.object(...)), s.enum(...), s.optional, s.unknown all worked cleanly.

Missing or undiscoverable prompt helpers (p.*)

  • p.glob is useful for discovery but has no built-in fan-out; models must be instructed to call tools per path, which is verbose in instructions. A short SKILL.md note about this pattern would reduce confusion.

Error message quality

  • The error Module '"rig"' has no exported member 'call' is clear, but the fix is non-obvious: call is a body parameter, not a module export. The SKILL.md table already documents this but it was still the most common first-draft mistake in workflow programs.

API ergonomics

  • WorkflowMeta requiring description is easy to forget when only name feels sufficient. A lint rule or a good TypeScript error with the field name visible would help.
  • s.record(s.int) entries being typed as unknown when destructured from Object.entries causes surprise. Models consistently need to add as number casts. A note in the s.record reference about this would prevent repeated failures.

Candidate lint rules

Rule: workflow-call-not-imported

  • Invalid: import { workflow, agent, call } from "rig";
  • Valid: body: async ({ call }) => { ... }
  • Why: call is only available as a body parameter; importing from "rig" always fails at typecheck.
  • Safe autofix: Yes — remove call from the named import and add it to the body destructure.

Documentation gaps

  • WorkflowMeta shape (name + description required) is not prominently documented. Add a minimal meta example to SKILL.md or the composition reference.
  • The s.record value-type-is-unknown issue with Object.entries is undocumented. Mention in the agent-api reference that sorting/aggregating s.record(s.int) values requires as number casts.

Tasks run today

  • (reused) HTML anchor link extractor: p.bash find for .html, defineTool extractAnchors with regex, s.enum(internal/external/fragment), repair addon
  • (reused) TypeScript optional chaining counter: p.bash find .ts, defineTool countNullSafetyOperators, s.record, steering addon
  • (reused) Git file size change tracker: p.bash git diff --name-only, defineTool getFileSizeAtRevision via execSync, s.enum(grew/shrank/unchanged), repair addon
  • (reused) JSON pretty-printer stats: s.object input, three tools (read/analyze/write), s.unknown parameter, repair addon
  • (reused) TypeScript interface method counter: p.glob src/**/*.ts, defineTool countInterfaceMethods, s.record, steering addon
  • (reused) Git tag annotation extractor: p.bash git tag -l, defineTool classifyTagType via execSync, s.enum, repair addon
  • (new) TypeScript wildcard re-export detector: p.glob src/**/*.ts, defineTool scanWildcardReexports, s.array(s.string), steering addon
  • (new) Markdown link classifier: p.glob **/*.md, defineTool extractLinks with regex, s.record, repair addon
  • (new) package.json field auditor: p.read package.json, defineTool checkFieldPresence, s.enum(present/absent/malformed), s.number for score
  • (new) Parallel git stats workflow: workflow + Promise.all, two subagents (commit stats + file stats), call.json for combining, s.enum(healthy/sparse/empty)

Generated by Daily Rig Task Generator · sonnet46 148.7 AIC · ⌖ 9.36 AIC · ⊞ 6.8K ·

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions