github TypeScript re-analysis due

cobusgreyling/loop-engineering

github

Practical patterns, starters & CLI tools for loop engineering with AI coding agents. Design systems that prompt and orchestrate agents (inspired by Addy Osmani and Boris Cherny). Includes loop-audit, loop-init, loop-cost.

maintainer
cobusgreyling
licence
MIT
first seen
2026-06-11
last seen
2026-09-19
releases · 30d
0
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 11 tools
transport stdio counts 11 tools · 0 res · 0 prompts permission surface via code analysis

tools

  • loop_audit_score
  • loop_check_breaker
  • loop_estimate_cost
  • loop_gate_check
  • loop_get_pattern
  • loop_get_skill
  • loop_get_state
  • loop_list_patterns
  • loop_list_skills
  • loop_list_state_files
  • loop_recommend_pattern
skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit 44dc6c2 · analyzer v33 · 2d ago

skills & prompt files 40

code evidence vv1.6.0 · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 185

filesystem 76

  • fs (weak) cobusgreyling-loop-engineering-44dc6c2/scripts/append-run-log.mjs :6 import { readFile, writeFile } from 'node:fs/promises';
  • fs (weak) cobusgreyling-loop-engineering-44dc6c2/scripts/append-run-log.test.mjs :10 import { mkdtemp, writeFile, rm, readFile } from 'node:fs/promises';
  • fs (weak) cobusgreyling-loop-engineering-44dc6c2/scripts/check-loop-init-sync.mjs :2 import { readFile } from 'node:fs/promises';
  • fs (weak) cobusgreyling-loop-engineering-44dc6c2/scripts/generate-contributors.mjs :10 import { readFileSync, readdirSync, writeFileSync } from 'node:fs';
  • fs (weak) cobusgreyling-loop-engineering-44dc6c2/scripts/github-triage.mjs :12 import { readFile, writeFile } from 'node:fs/promises';
  • fs (weak) cobusgreyling-loop-engineering-44dc6c2/scripts/github-triage.test.mjs :4 import { mkdtemp, writeFile, rm, readFile } from 'node:fs/promises';
  • fs (weak) cobusgreyling-loop-engineering-44dc6c2/scripts/update-last-run-badge.mjs :6 import { readFile, writeFile, mkdir } from 'node:fs/promises';
  • fs (weak) cobusgreyling-loop-engineering-44dc6c2/scripts/validate-registry.mjs :6 import { readFile, readdir, stat } from 'node:fs/promises';
  • fs cobusgreyling-loop-engineering-44dc6c2/tools/goal-audit/dist/auditor.js :1 import { readFile } from 'node:fs/promises';
  • fs cobusgreyling-loop-engineering-44dc6c2/tools/goal-audit/src/auditor.ts :1 import { readFile } from 'node:fs/promises';
  • fs cobusgreyling-loop-engineering-44dc6c2/tools/goal-init/dist/cli.js :3 import { cp, mkdir, readFile, writeFile, access } from 'node:fs/promises';
  • fs (weak) cobusgreyling-loop-engineering-44dc6c2/tools/goal-init/scripts/bundle-assets.mjs :2 import { cp, rm, access, rename, mkdir } from 'node:fs/promises';
show 28 more
  • fs cobusgreyling-loop-engineering-44dc6c2/tools/goal-init/src/cli.ts :3 import { cp, mkdir, readFile, writeFile, access } from 'node:fs/promises';
  • fs (weak) cobusgreyling-loop-engineering-44dc6c2/tools/goal-init/test/cli.test.mjs :4 import { mkdir, rm, access, readFile } from 'node:fs/promises';
  • fs cobusgreyling-loop-engineering-44dc6c2/tools/loop-audit/dist/auditor.js :1 import { readdir, readFile } from 'node:fs/promises';
  • fs cobusgreyling-loop-engineering-44dc6c2/tools/loop-audit/dist/autofixer.js :1 import { writeFile, mkdir } from 'node:fs/promises';
  • fs cobusgreyling-loop-engineering-44dc6c2/tools/loop-audit/src/auditor.ts :1 import { readdir, readFile } from 'node:fs/promises';
  • fs cobusgreyling-loop-engineering-44dc6c2/tools/loop-audit/src/autofixer.ts :1 import { writeFile, mkdir } from 'node:fs/promises';
  • fs (weak) cobusgreyling-loop-engineering-44dc6c2/tools/loop-audit/test/auditor.test.mjs :3 import { mkdtemp, mkdir, writeFile, rm } from 'node:fs/promises';
  • fs (weak) cobusgreyling-loop-engineering-44dc6c2/tools/loop-audit/test/autofixer.test.mjs :3 import { mkdtemp, readFile, rm } from 'node:fs/promises';
  • fs cobusgreyling-loop-engineering-44dc6c2/tools/loop-context/dist/budget-resolver.js :3 import { access } from 'node:fs/promises';
  • fs cobusgreyling-loop-engineering-44dc6c2/tools/loop-context/dist/cli.js :2 import { readFile } from 'node:fs/promises';
  • fs cobusgreyling-loop-engineering-44dc6c2/tools/loop-context/dist/daily-spend.js :2 import { mkdir, readFile, writeFile, open, unlink, stat } from 'node:fs/promises';
  • fs cobusgreyling-loop-engineering-44dc6c2/tools/loop-context/src/budget-resolver.ts :3 import { access } from 'node:fs/promises';
  • fs cobusgreyling-loop-engineering-44dc6c2/tools/loop-context/src/cli.ts :2 import { readFile } from 'node:fs/promises';
  • fs cobusgreyling-loop-engineering-44dc6c2/tools/loop-context/src/daily-spend.ts :2 import { mkdir, readFile, writeFile, open, unlink, stat } from 'node:fs/promises';
  • fs (weak) cobusgreyling-loop-engineering-44dc6c2/tools/loop-context/test/cli.test.mjs :6 import { mkdtemp, readFile, writeFile } from 'node:fs/promises';
  • fs (weak) cobusgreyling-loop-engineering-44dc6c2/tools/loop-context/test/daily-spend.test.mjs :3 import { mkdtemp, readFile, writeFile } from 'node:fs/promises';
  • fs (weak) cobusgreyling-loop-engineering-44dc6c2/tools/loop-context/test/fixtures/on-exceed-capture.mjs :1 import { writeFileSync } from 'node:fs';
  • fs (weak) cobusgreyling-loop-engineering-44dc6c2/tools/loop-context/test/fixtures/on-exceed-ignore-stdin.mjs :1 import { writeFileSync } from 'node:fs';
  • fs cobusgreyling-loop-engineering-44dc6c2/tools/loop-cost/dist/cli.js :2 import { readFile, access } from 'node:fs/promises';
  • fs (weak) cobusgreyling-loop-engineering-44dc6c2/tools/loop-cost/scripts/bundle-registry.mjs :2 import { readFile, writeFile, access } from 'node:fs/promises';
  • fs cobusgreyling-loop-engineering-44dc6c2/tools/loop-cost/src/cli.ts :2 import { readFile, access } from 'node:fs/promises';
  • fs cobusgreyling-loop-engineering-44dc6c2/tools/loop-drill/dist/canary.js :21 import { readFile, writeFile, rm } from 'node:fs/promises';
  • fs cobusgreyling-loop-engineering-44dc6c2/tools/loop-drill/src/canary.ts :22 import { readFile, writeFile, rm } from 'node:fs/promises';
  • fs (weak) cobusgreyling-loop-engineering-44dc6c2/tools/loop-drill/test/canary.test.mjs :5 import { mkdtemp, mkdir, writeFile, rm, readdir } from 'node:fs/promises';
  • fs cobusgreyling-loop-engineering-44dc6c2/tools/loop-gate/dist/gate.js :8 import { readFile } from 'node:fs/promises';
  • fs cobusgreyling-loop-engineering-44dc6c2/tools/loop-gate/src/gate.ts :9 import { readFile } from 'node:fs/promises';
  • fs (weak) cobusgreyling-loop-engineering-44dc6c2/tools/loop-gate/test/cli.test.mjs :5 import { mkdtemp, writeFile } from 'node:fs/promises';
  • fs (weak) cobusgreyling-loop-engineering-44dc6c2/tools/loop-gate/test/gate.test.mjs :3 import { mkdtemp, writeFile } from 'node:fs/promises';

36 more not shown — this panel samples each group; the count above is the real total.

shell / exec 40

  • shell (weak) cobusgreyling-loop-engineering-44dc6c2/scripts/append-run-log.test.mjs :8 import { execFile } from 'node:child_process';
  • shell (weak) cobusgreyling-loop-engineering-44dc6c2/scripts/generate-contributors.mjs :9 import { execFileSync } from 'node:child_process';
  • shell (weak) cobusgreyling-loop-engineering-44dc6c2/scripts/github-triage.mjs :10 import { execFile } from 'node:child_process';
  • shell (weak) cobusgreyling-loop-engineering-44dc6c2/scripts/github-triage.test.mjs :7 import { execFile } from 'node:child_process';
  • shell cobusgreyling-loop-engineering-44dc6c2/tools/goal-init/dist/cli.js :2 import { spawn } from 'node:child_process';
  • shell cobusgreyling-loop-engineering-44dc6c2/tools/goal-init/src/cli.ts :2 import { spawn } from 'node:child_process';
  • shell (weak) cobusgreyling-loop-engineering-44dc6c2/tools/goal-init/test/cli.test.mjs :5 import { execFile } from 'node:child_process';
  • shell cobusgreyling-loop-engineering-44dc6c2/tools/loop-audit/dist/auditor.js :3 import { execSync } from 'node:child_process';
  • shell cobusgreyling-loop-engineering-44dc6c2/tools/loop-audit/dist/autofixer.js :3 import { execSync } from 'node:child_process';
  • shell cobusgreyling-loop-engineering-44dc6c2/tools/loop-audit/src/auditor.ts :3 import { execSync } from 'node:child_process';
  • shell cobusgreyling-loop-engineering-44dc6c2/tools/loop-audit/src/autofixer.ts :3 import { execSync } from 'node:child_process';
  • shell (weak) cobusgreyling-loop-engineering-44dc6c2/tools/loop-audit/test/auditor.test.mjs :6 import { execFileSync, execSync } from 'node:child_process';
show 28 more
  • shell cobusgreyling-loop-engineering-44dc6c2/tools/loop-context/dist/budget-resolver.js :4 import { spawn } from 'node:child_process';
  • shell cobusgreyling-loop-engineering-44dc6c2/tools/loop-context/dist/cli.js :3 import { spawn } from 'node:child_process';
  • shell cobusgreyling-loop-engineering-44dc6c2/tools/loop-context/src/budget-resolver.ts :4 import { spawn } from 'node:child_process';
  • shell cobusgreyling-loop-engineering-44dc6c2/tools/loop-context/src/cli.ts :3 import { spawn } from 'node:child_process';
  • shell (weak) cobusgreyling-loop-engineering-44dc6c2/tools/loop-context/test/cli.test.mjs :3 import { spawnSync } from 'node:child_process';
  • shell cobusgreyling-loop-engineering-44dc6c2/tools/loop-drill/dist/canary.js :20 import { exec as execShellCb, execFile as execFileCb } from 'node:child_process';
  • shell cobusgreyling-loop-engineering-44dc6c2/tools/loop-drill/src/canary.ts :21 import { exec as execShellCb, execFile as execFileCb } from 'node:child_process';
  • shell (weak) cobusgreyling-loop-engineering-44dc6c2/tools/loop-drill/test/canary.test.mjs :6 import { execFile } from 'node:child_process';
  • shell (weak) cobusgreyling-loop-engineering-44dc6c2/tools/loop-gate/test/cli.test.mjs :3 import { spawnSync } from 'node:child_process';
  • shell cobusgreyling-loop-engineering-44dc6c2/tools/loop-init/dist/cli.js :2 import { spawn } from 'node:child_process';
  • shell cobusgreyling-loop-engineering-44dc6c2/tools/loop-init/src/cli.ts :2 import { spawn } from 'node:child_process';
  • shell (weak) cobusgreyling-loop-engineering-44dc6c2/tools/loop-init/test/cli.test.mjs :6 import { execFile } from 'node:child_process';
  • shell cobusgreyling-loop-engineering-44dc6c2/tools/loop-sandbox/dist/sandbox.js :1 import { spawn, execFile } from 'node:child_process';
  • shell cobusgreyling-loop-engineering-44dc6c2/tools/loop-sandbox/src/sandbox.ts :1 import { spawn, execFile } from 'node:child_process';
  • shell (weak) cobusgreyling-loop-engineering-44dc6c2/tools/loop-sandbox/test/sandbox.test.mjs :8 import { execSync, spawn } from 'node:child_process';
  • shell cobusgreyling-loop-engineering-44dc6c2/tools/loop-swarm/dist/cli.js :21 --count, -n Number of parallel agents to spawn (default: 3)
  • shell cobusgreyling-loop-engineering-44dc6c2/tools/loop-swarm/src/cli.ts :24 --count, -n Number of sequential agents to spawn (default: 3)
  • shell (weak) cobusgreyling-loop-engineering-44dc6c2/tools/loop-swarm/test/swarm.test.mjs :3 import { spawnSync } from 'node:child_process';
  • shell (weak) cobusgreyling-loop-engineering-44dc6c2/tools/loop-sync/test/sync.test.mjs :5 import { execFile } from 'node:child_process';
  • shell cobusgreyling-loop-engineering-44dc6c2/tools/loop-worktree/dist/worktree.js :1 import { execFile } from 'node:child_process';
  • shell cobusgreyling-loop-engineering-44dc6c2/tools/loop-worktree/src/worktree.ts :1 import { execFile } from 'node:child_process';
  • shell (weak) cobusgreyling-loop-engineering-44dc6c2/tools/loop-worktree/test/cli.test.mjs :3 import { spawnSync } from 'node:child_process';
  • shell (weak) cobusgreyling-loop-engineering-44dc6c2/tools/loop-worktree/test/package-exports.test.mjs :3 import { execFile } from 'node:child_process';
  • shell (weak) cobusgreyling-loop-engineering-44dc6c2/tools/loop-worktree/test/worktree.test.mjs :6 import { execFile } from 'node:child_process';
  • shell cobusgreyling-loop-engineering-44dc6c2/tools/loop/dist/pass-through.js :8 import { spawn } from 'node:child_process';
  • shell cobusgreyling-loop-engineering-44dc6c2/tools/loop/src/pass-through.ts :8 import { spawn } from 'node:child_process';
  • shell (weak) cobusgreyling-loop-engineering-44dc6c2/tools/loop/test/cli.test.mjs :5 import { execFile, execFileSync } from 'node:child_process';
  • shell (weak) cobusgreyling-loop-engineering-44dc6c2/tools/mcp-server/test/server.test.mjs :7 import { spawn } from 'node:child_process';

tool registrations 22

  • loop_list_patterns cobusgreyling-loop-engineering-44dc6c2/tools/mcp-server/dist/index.js :121
  • loop_list_skills cobusgreyling-loop-engineering-44dc6c2/tools/mcp-server/dist/index.js :139
  • loop_list_state_files cobusgreyling-loop-engineering-44dc6c2/tools/mcp-server/dist/index.js :148
  • loop_get_pattern cobusgreyling-loop-engineering-44dc6c2/tools/mcp-server/dist/index.js :160
  • loop_get_skill cobusgreyling-loop-engineering-44dc6c2/tools/mcp-server/dist/index.js :183
  • loop_get_state cobusgreyling-loop-engineering-44dc6c2/tools/mcp-server/dist/index.js :197
  • loop_recommend_pattern cobusgreyling-loop-engineering-44dc6c2/tools/mcp-server/dist/index.js :211
  • loop_estimate_cost cobusgreyling-loop-engineering-44dc6c2/tools/mcp-server/dist/index.js :264
  • loop_gate_check cobusgreyling-loop-engineering-44dc6c2/tools/mcp-server/dist/index.js :317
  • loop_audit_score cobusgreyling-loop-engineering-44dc6c2/tools/mcp-server/dist/index.js :344
  • loop_check_breaker cobusgreyling-loop-engineering-44dc6c2/tools/mcp-server/dist/index.js :368
  • loop_list_patterns cobusgreyling-loop-engineering-44dc6c2/tools/mcp-server/src/index.ts :195
show 10 more
  • loop_list_skills cobusgreyling-loop-engineering-44dc6c2/tools/mcp-server/src/index.ts :219
  • loop_list_state_files cobusgreyling-loop-engineering-44dc6c2/tools/mcp-server/src/index.ts :234
  • loop_get_pattern cobusgreyling-loop-engineering-44dc6c2/tools/mcp-server/src/index.ts :252
  • loop_get_skill cobusgreyling-loop-engineering-44dc6c2/tools/mcp-server/src/index.ts :285
  • loop_get_state cobusgreyling-loop-engineering-44dc6c2/tools/mcp-server/src/index.ts :305
  • loop_recommend_pattern cobusgreyling-loop-engineering-44dc6c2/tools/mcp-server/src/index.ts :325
  • loop_estimate_cost cobusgreyling-loop-engineering-44dc6c2/tools/mcp-server/src/index.ts :377
  • loop_gate_check cobusgreyling-loop-engineering-44dc6c2/tools/mcp-server/src/index.ts :441
  • loop_audit_score cobusgreyling-loop-engineering-44dc6c2/tools/mcp-server/src/index.ts :478
  • loop_check_breaker cobusgreyling-loop-engineering-44dc6c2/tools/mcp-server/src/index.ts :506

install hooks 15

  • prepublishOnly cobusgreyling-loop-engineering-44dc6c2/tools/goal-audit/package.json :16 npm test
  • prepublishOnly cobusgreyling-loop-engineering-44dc6c2/tools/goal-init/package.json :18 npm test
  • prepublishOnly cobusgreyling-loop-engineering-44dc6c2/tools/loop-audit/package.json :16 npm test
  • prepublishOnly cobusgreyling-loop-engineering-44dc6c2/tools/loop-context/package.json :20 npm test
  • prepublishOnly cobusgreyling-loop-engineering-44dc6c2/tools/loop-cost/package.json :18 npm test
  • prepublishOnly cobusgreyling-loop-engineering-44dc6c2/tools/loop-drill/package.json :20 npm test
  • prepublishOnly cobusgreyling-loop-engineering-44dc6c2/tools/loop-gate/package.json :20 npm test
  • prepublishOnly cobusgreyling-loop-engineering-44dc6c2/tools/loop-init/package.json :19 npm test
  • prepublishOnly cobusgreyling-loop-engineering-44dc6c2/tools/loop-metrics/package.json :16 npm test
  • prepublishOnly cobusgreyling-loop-engineering-44dc6c2/tools/loop-sandbox/package.json :18 npm test
  • prepublishOnly cobusgreyling-loop-engineering-44dc6c2/tools/loop-swarm/package.json :18 npm test
  • prepublishOnly cobusgreyling-loop-engineering-44dc6c2/tools/loop-sync/package.json :17 npm test
show 3 more
  • prepublishOnly cobusgreyling-loop-engineering-44dc6c2/tools/loop-worktree/package.json :39 npm test
  • prepublishOnly cobusgreyling-loop-engineering-44dc6c2/tools/loop/package.json :16 npm test
  • prepublishOnly cobusgreyling-loop-engineering-44dc6c2/tools/mcp-server/package.json :16 npm test

declared dependencies 2

  • ajv@^8.17.1
  • yaml@^2.8.0

obfuscation 1

  • dynamic require()/import() cobusgreyling-loop-engineering-44dc6c2/tools/loop-sandbox/test/sandbox.test.mjs :262 const mod = await import(${JSON.stringify(sandboxDistUrl)});