Skip to content

feat(harness): scaffold pnpm/TS/eslint/vitest tooling (feat-001) - #2

Draft
ClaudiaFang wants to merge 2 commits into
docs/requirements-spec-test-planfrom
feat-001-project-setup
Draft

feat(harness): scaffold pnpm/TS/eslint/vitest tooling (feat-001)#2
ClaudiaFang wants to merge 2 commits into
docs/requirements-spec-test-planfrom
feat-001-project-setup

Conversation

@ClaudiaFang

Copy link
Copy Markdown
Member

Summary

  • Scaffolds package.json (pnpm/ESM/Node>=24), TypeScript config, ESLint flat config with the three provider-boundary import zones (GitHub SDK closure, Claude/spawn closure, orchestrator purity) plus reserved http/composition zones, vitest, prettier, and husky pre-commit (secret regex scan + lint-staged) / commit-msg (commitlint) hooks — per docs/SPEC.md §2.1–2.3.2 and §11 step 1.
  • Switches init.sh and CLAUDE.md's verification commands from npm to pnpm.
  • Adds a minimal src/index.ts startup banner + smoke test so ./init.sh goes green.
  • Marks feat-000/feat-001 done in feature_list.json, archives their evidence, points progress.md at feat-002/feat-004 next.

Test plan

  • ./init.sh green end-to-end (corepack enable, pnpm install --frozen-lockfile, lint, build, test)
  • TEST-PLAN §5.1 negative checks run manually and reverted:
    • forbidden @octokit/rest import outside providers/tracker/github/ → lint fails
    • execFile('claude', ...) outside providers/agent/claude-code/ → lint fails
    • undeclared transitive import (esbuild) → build fails (hoist=false resolution-layer failure)
    • lint-broken staged file → pre-commit rejects
    • non-conventional commit message → commit-msg rejects
    • disallowed commit scope → commit-msg rejects
    • valid conventional commit → accepted
    • staged fake ghp_... token → pre-commit secret scan rejects
    • pnpm install --frozen-lockfile → no lockfile drift
  • Repository restartable from ./init.sh after reverting all temporary test changes

🤖 Generated with Claude Code

Implements docs/SPEC.md §2.1-2.3.2 and §11 step 1: package.json (ESM,
pinned deps, packageManager/engines), tsconfig pair, eslint flat config
with the three provider-boundary zones (GitHub SDK, Claude/spawn,
orchestrator purity) plus the reserved http/composition zones, vitest,
prettier, husky pre-commit (secret regex scan + lint-staged) and
commit-msg (commitlint) hooks, and .npmrc strict resolution. Switches
init.sh and CLAUDE.md's verification commands from npm to pnpm.
Records feat-001's completion evidence (commit 8769af7) and corrects
feat-000's evidence to point at its actual commit hash. Moves both
into archive/2026-07.md per the progress.md cleanup cadence and points
progress.md's open-work section at feat-002/feat-004 next.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant