Skip to content

[rig-tasks] Daily rig evaluation — 2026-08-05 — 10/10 passed #355

Description

@github-actions

Summary

Task Description Type Typecheck Key finding
1 (reused) NPM lifecycle script analyzer agent ✅ pass Clean defineTool with s.enum categories and s.record output; repair addon applied correctly
2 (reused) TS JSDoc coverage checker agent ✅ pass Async tool with node:fs/promises readFile; s.record with nested s.object; wellDocumentedFiles uses s.array(s.path)
3 (reused) Git hook installer agent ✅ pass Input s.object with s.array; async checkHooksDir tool using node:fs/promises access; p.write pattern used correctly
4 (reused) TS type guard generator agent ✅ pass p.readInput for caller-supplied s.path; async extractInterfaces tool with regex; p.writeInput for output
5 (reused) JSON fixture anonymizer agent ✅ pass Input s.object with s.path and s.array; defineTool with field-name heuristics; result in output schema
6 (reused) CSV to Markdown table agent ✅ pass Input with s.boolean flag; parseCSVRow tool handles quoted fields; markdownTable in output schema
7 (new) TS interface method counter agent ✅ pass p.glob + async tool with node:fs/promises; s.record output; steering addon; s.optional on largestInterface
8 (new) Git tag annotation extractor agent ✅ pass p.bash with git tag --format; classifyTagType tool returns s.enum; s.record with s.optional fields
9 (new) JSONL file analyzer agent ✅ pass Input s.path; analyzeJsonLine tool with JSON.parse; s.record(s.string) for valueTypes; repair addon
10 (new) NPM peer dep conflict checker agent ✅ pass p.read + p.bash combination; checkPeerConflict tool with simple semver major check; s.enum severity

Problems encountered

No failures this run.


Improvement opportunities

Missing or undiscoverable schema helpers (s.*)

  • No s.int shorthand for common integer patterns like counts and indices was missed; all programs used s.int correctly.
  • s.record(s.string) for valueTypes maps (string-to-string) worked well but the SKILL.md example only shows s.record(s.int) — an example with s.record(s.string) would reduce guesswork.

Missing or undiscoverable prompt helpers (p.*)

  • For the type guard generator (task 4), the natural intent was p.writeInput("outputFile", "generatedSource") — this pattern (writing to a caller-supplied path with content from an output field) is mentioned in SKILL.md but a concrete sample would help.
  • p.readInput + p.writeInput pairing is common in file-transformation agents but currently only has one sample (18-patch-writer-output.md).

Error message quality

No typecheck failures this run, so no error messages to assess.

API ergonomics

  • Async tool imports: Every async tool using node:fs/promises repeats const { readFile } = await import("node:fs/promises") inside the handler. A top-level static import is more idiomatic; the SKILL.md note about async handler could show this pattern.
  • as const for enum return values: Handlers returning string literals for s.enum fields needed explicit as const casts (e.g. "annotated" as const) to satisfy TypeScript. This is a recurring ergonomics friction point — SKILL.md or a reference should document it.
  • Array iteration with type annotations: Arrow callbacks in .map() and .matchAll() required explicit (m: RegExpExecArray) annotations per the SKILL.md construction rule, which is correct but not intuitive.

Candidate lint rules

  • Rule: no-enum-string-without-as-const — when a defineTool handler returns a plain string that matches an s.enum value, flag it and suggest as const. Invalid: return { type: "annotated" }. Valid: return { type: "annotated" as const }. This pattern confused the model and causes TS2322 errors without it.

Documentation gaps

  • The p.writeInput(pathField, outputField) pattern should have a standalone example in references/prompt-intents.md showing both the input schema (with s.path) and the output schema (with the string field).
  • s.record(s.string) usage (string-to-string maps) is not shown in any example; adding one would prevent the model from wrapping in unnecessary s.object.

Tasks run today

  • (reused) NPM lifecycle script analyzer: reads package.json via p.read, defineTool classifyScript with s.enum categories, repair addon
  • (reused) TypeScript function JSDoc coverage checker: p.bash find for .ts files, async defineTool analyzeFunctionComments, repair addon
  • (reused) Git hook installer: input s.object with s.array of hooks, async checkHooksDir tool, p.write, repair addon
  • (reused) TypeScript type guard generator: input s.object with s.path fields, p.readInput, async extractInterfaces, p.writeInput, repair addon
  • (reused) JSON fixture anonymizer: input s.object with s.path and s.array, defineTool anonymizeValue, p.writeInput, repair addon
  • (reused) CSV to Markdown table converter: input with s.boolean flag, defineTool parseCSVRow, p.writeInput, repair addon
  • (new) TypeScript interface method counter: p.glob, async defineTool countInterfaceMethods, steering addon, s.record + s.optional output
  • (new) Git tag annotation extractor: p.bash with git tag --format, defineTool classifyTagType returning s.enum, repair addon, s.record with s.optional fields
  • (new) JSONL file analyzer: input s.path, p.readInput, defineTool analyzeJsonLine, repair addon, s.record(s.string) for value types
  • (new) NPM peer dependency conflict checker: p.read + p.bash, defineTool checkPeerConflict with s.enum severity, repair addon

Generated by Daily Rig Task Generator · sonnet46 99.6 AIC · ⌖ 9.28 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