Skip to content

[rig-tasks] Daily rig evaluation — 2026-07-28 — 10/10 passed #268

Description

@github-actions

Summary

Task Description Typecheck Key finding
1 (reused) Commit churn classifier ✅ pass Clean use of steering() + repair() addons; defineTool classifyRisk with as const literal returns worked correctly
2 (reused) NPM package size estimator ✅ pass p.bash for npm pack --dry-run combined with defineTool tier classification; s.array(s.object(...)) for topFiles nested correctly
3 (reused) TypeScript branch coverage analyzer ✅ pass Two-agent delegation with agents: { branchAnalyzer }; both agents have Agent role: comments; clean subagent input/output schemas
4 (reused) Env variable type inferrer ✅ pass p.readOptional with fallback string; defineTool with regex inference; s.record(s.object(...)) wrapped in outer s.object with allDocumented field
5 (reused) Makefile target extractor ✅ pass p.readOptional("Makefile") with fallback; s.optional(s.string) for description field; repair() addon
6 (reused) Test fixture generator ✅ pass Two-agent pattern with signatureAnalyzer subagent; s.path for output file; p.readInput("sourceFile") correctly referenced in instructions
7 (new) Git file ownership mapper ✅ pass (after fix) Initially had unused readFile import from node:fs/promises — removed. Used node:child_process execSync directly in async defineTool handler
8 (new) Workflow input validator ✅ pass Async defineTool with node:fs/promises readFile and regex parsing of YAML; explicit type annotations on arrow callbacks in .map()
9 (new) TypeScript dead export finder ✅ pass (after fix) Initially had unused readdir and join imports — removed. Combined p.glob + p.bash for discovery; nested async tool with per-file cross-reference scan
10 (new) package.json scripts documenter ✅ pass p.read("package.json") + p.write("SCRIPTS.md", "scripts") intent; synchronous defineTool with explicit parameter type annotation

Problems encountered

Task 7 — Unused import

  • What it tried: Used node:child_process execSync inside an async defineTool handler to shell out for git blame, but also imported readFile from node:fs/promises which was never used.
  • Error: 'readFile' is declared but its value is never read.
  • Fix: Removed the unused node:fs/promises import.

Task 9 — Unused imports

  • What it tried: Imported readdir from node:fs/promises and join from node:path for anticipated directory traversal, but the final implementation only used readFile.
  • Error: 'readdir' is declared but its value is never read. and 'join' is declared but its value is never read.
  • Fix: Removed readdir and join imports, keeping only readFile.

Improvement opportunities

Missing or undiscoverable schema helpers (s.*)

  • No issues with schema helpers this run. s.record, s.optional, s.enum, s.int, s.path, s.array(s.object(...)) all worked cleanly.

Missing or undiscoverable prompt helpers (p.*)

  • p.write with a field-name second argument (e.g., p.write("SCRIPTS.md", "scripts")) is present but the semantics (field name vs. literal content) weren't fully clear from SKILL.md alone — the reference file clarifies this. A short example in the high-frequency table would help.
  • p.readInput is referenced in instructions text by agents with input: schemas but the intent isn't injected automatically — developers need to know to use it explicitly in instructions.

Error message quality

  • Typecheck errors from --typecheck were clear and actionable (TS6133: declared but never read).
  • No misleading errors this run.

API ergonomics

  • When using node:child_process execSync inside an async defineTool handler, there's ambiguity about whether to declare the handler async — it works either way but a note in the composition reference would help.
  • The two-agent pattern with agents: { subagent } and Agent role: comments worked smoothly for tasks 3 and 6.
  • p.write(path, fieldName) vs p.write(path, literalContent) overloads are easy to confuse — a dedicated example in the prompt intents reference would prevent errors.

Candidate lint rules

  • no-unused-node-imports: When defineTool handlers import Node.js built-ins (e.g., node:fs/promises) but only use a subset of the destructured exports, unused imports cause typecheck failures. A lint rule that checks for unused import { X } from "node:..." bindings before typechecking would catch this early. Invalid: import { readFile, readdir } from "node:fs/promises" when readdir is never used. Valid: import { readFile } from "node:fs/promises". This pattern appeared in 2/10 tasks.

Documentation gaps

  • SKILL.md mentions p.write(path, content) in the high-frequency table but doesn't clarify that the second argument can be a field name from the output schema (which triggers a write intent). An example in references/prompt-intents.md would prevent confusion.
  • The composition reference could use a note that execSync from node:child_process is usable synchronously inside async defineTool handlers.

Tasks run today

  • (reused) Commit churn classifier: git log --name-only with uniq -c, churnCount/riskLevel per file
  • (reused) NPM package size estimator: npm pack --dry-run, sizeRating enum
  • (reused) TypeScript branch coverage analyzer: branchAnalyzer subagent, branches array
  • (reused) Env variable type inferrer: .env.example, type classification
  • (reused) Makefile target extractor: phony vs real targets
  • (reused) Test fixture generator: signatureAnalyzer subagent, p.readInput
  • (new) Git file ownership mapper: p.glob + node:child_process execSync per file, ownership record
  • (new) GitHub Actions workflow input validator: p.glob + async defineTool with YAML regex parsing
  • (new) TypeScript dead export finder: p.glob + p.bash + async cross-file reference scan
  • (new) package.json scripts documenter: p.read + defineTool classification + p.write SCRIPTS.md

Generated by Daily Rig Task Generator · sonnet46 99.7 AIC · ⌖ 10.3 AIC · ⊞ 6.7K ·

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