Skip to content

feat: scaffold next-postgres-shadcn full stack developer harness#23

Draft
ryaneggz wants to merge 58 commits intodevelopmentfrom
agent/next-postgres-shadcn
Draft

feat: scaffold next-postgres-shadcn full stack developer harness#23
ryaneggz wants to merge 58 commits intodevelopmentfrom
agent/next-postgres-shadcn

Conversation

@ryaneggz
Copy link
Copy Markdown
Owner

@ryaneggz ryaneggz commented Apr 4, 2026

Summary

  • Scaffolds a Full Stack Developer agent workspace with Next.js + TypeScript + PostgreSQL + shadcn/ui
  • Project isolated in workspace/next-app/ keeping agent harness files (SOUL.md, MEMORY.md, heartbeats) at workspace root
  • Docker Compose override adds PostgreSQL 16 on an isolated bridge network (${NAME}-devnet)

Stack & Tooling

  • Next.js 15+ (App Router, TypeScript strict, src/ directory)
  • PostgreSQL 16 + Prisma ORM
  • shadcn/ui + Tailwind CSS + next-themes (light/dark/system)
  • PWA via next-pwa
  • Testing: Vitest + React Testing Library + Playwright
  • Linting: ESLint + Prettier + lint-staged
  • Hooks: Husky pre-commit (lint + format + type-check + tests)
  • CI: GitHub Actions mirrors pre-commit with Postgres service container
  • Infrastructure: cloudflared tunnel (next-postgres-shadcn.ruska.dev), agent-browser + Chromium for QA
  • Ralph: Autonomous agent orchestrator

Files Changed

  • docker/docker-compose.nextjs.yml — PostgreSQL + isolated network + port 3000
  • workspace/SOUL.md — Full Stack Developer persona
  • workspace/MEMORY.md — Seeded stack decisions
  • workspace/AGENTS.md — Stack-specific guidance (DB, shadcn, testing, CI, tunnel, QA)
  • workspace/next-app/ — Scaffolded Next.js project with all tooling configured
  • workspace/heartbeats/build-health.md — Periodic build + test health check
  • .github/workflows/ci.yml — CI pipeline with Postgres service
  • .github/ISSUE_TEMPLATE/{feature,bug}.md — Stack-tailored templates
  • README.md — Setup guide with post-provisioning auth steps

Test plan

  • Container starts and workspace files are accessible
  • cd next-app && npm run build succeeds
  • npm test passes (Vitest)
  • npm run lint && npm run format:check && npm run type-check all clean
  • PostgreSQL reachable via psql -c "SELECT 1" (requires compose nextjs override)
  • Cloudflared tunnel connects to next-postgres-shadcn.ruska.dev (requires auth)
  • Git commit triggers Husky pre-commit hooks
  • CI workflow runs on push

Closes #22

🤖 Generated with Claude Code

ryaneggz and others added 30 commits April 4, 2026 22:26
Provision a Full Stack Developer agent workspace with:
- Next.js 15+ (App Router, TypeScript strict, src/ directory) in workspace/next-app/
- PostgreSQL 16 via docker-compose.nextjs.yml on isolated network
- Prisma ORM with schema configured for PostgreSQL
- shadcn/ui + Tailwind CSS with light/dark/system theme (next-themes)
- PWA support via next-pwa
- Vitest + React Testing Library + Playwright for testing
- ESLint + Prettier + Husky pre-commit (lint-staged + tsc + tests)
- GitHub Actions CI mirroring pre-commit checks with Postgres service
- Cloudflared tunnel for next-postgres-shadcn.ruska.dev
- agent-browser + Chromium for QA
- Ralph autonomous agent orchestrator
- Feature and bug issue templates tailored for the stack
- Build health heartbeat (every 30 min, 9am-9pm)
- Setup README documenting post-provisioning auth steps

Closes #22

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The development branch has no root Makefile. All sandbox management
commands now use the openharness CLI (quickstart, shell, stop, clean,
heartbeat sync/stop/status) which is the actual tool available.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Ralph is harness-level tooling, not project-level. It belongs alongside
SOUL.md, MEMORY.md, and .claude/ at the workspace root.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add `openharness ralph` subcommand with full plan-to-PR pipeline:
- prd: generate PRD from plan files
- setup: convert PRD to prd.json + create draft PR
- run: start Ralph loop in tmux session
- status: show story progress and tmux state
- reflect: update MEMORY.md with actionable intelligence for future sessions
- cleanup: lint, format, type-check, test before PR
- pr: archive run by branch name + undraft PR

Also includes:
- /prd and /ralph skills for use inside sandbox
- Slack notification hooks (Stop + Notification events)
- .env.claude with SLACK_WEBHOOK_URL
- Ralph documentation in AGENTS.md
- Removes next-app/Makefile (Ralph commands now in CLI)
- All CLI and sandbox tests pass

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The file is already covered by **/.env* in .gitignore.
The secret stays local only.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Consolidate permissions into settings.local.json, remove peer flags from
lock files, add example env and plans directory.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add standalone Dev Container setup instructions so users who clone this
branch directly can spin it up without the orchestrator. Expand docs to
match the root project README depth — services, commands, Ralph, memory,
heartbeats, and management.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…d tunnel

- next dev -H 0.0.0.0 for container port forwarding
- turbopack: {} in next.config.ts for Next.js 16
- Fix circular --font-sans CSS variable, apply Geist directly
- Add cloudflared-tunnel.sh for reproducible tunnel setup
- Add .openharness/config.json with compose override declaration

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Root CLAUDE.md: replace make with openharness CLI, add compose override
  docs, document .openharness/config.json and cloudflared-tunnel.sh
- Workspace AGENTS.md: update cloudflared tunnel section with actual
  config path and setup script, document 0.0.0.0 binding, add
  .openharness/config.json reference

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
… script

- Quickstart uses npm run setup instead of manual cd/npm/link
- Base branch corrected to main
- Added compose override note for PostgreSQL + port 3000
- Dev Container moved to optional section
- Cloudflared section uses install/cloudflared-tunnel.sh

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Root AGENTS.md (symlinked as CLAUDE.md) now identifies this as a
Full Stack Developer workspace, not the orchestrator. Points to
workspace/SOUL.md, workspace/MEMORY.md, workspace/AGENTS.md for
persona, context, and operational instructions.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- CI triggers only on agent/next-postgres-shadcn branch
- Remove url from prisma schema (Prisma 7 uses prisma.config.ts)
- Add engines >= 22 to package.json and .nvmrc

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Rename workflow to 'CI: next-postgres-shadcn' to distinguish from orchestrator CI
- Add passWithNoTests to vitest config (no test files yet)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Polls GitHub Actions for the current branch, reports pass/fail
with failure details, and includes local pre-flight commands.
Agent should use this after every push to confirm work is done.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Both root and workspace instruction files now list all available
slash commands: /ci-status, /agent-browser, /prd, /ralph,
/quality-gate, /strategy-review. Emphasizes running /ci-status
after every push.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
8 self-authored rules (2 global + 6 path-scoped):
- git.md: commit format, push + CI workflow
- code-quality.md: strict TS, linting, formatting
- nextjs.md: App Router + Vercel best practices (merged)
- components.md: shadcn, cva, accessibility
- prisma.md: schema-first, Prisma 7, migrations
- testing.md: vitest, RTL, playwright
- styles.md: Tailwind v4, theming, fonts
- api.md: route handlers, validation

Also: slim AGENTS.md to 113 lines (from 262), gitignore
Prisma generated client, add /agent-browser skill.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Hero with Live Demo + GitHub CTAs, 6 feature cards, quick start
terminal with copy button, tech stack badges, dark mode toggle,
responsive layout. All shadcn/ui components, Lucide icons, no
external dependencies.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Visitors fork this specific harness branch, not the main repo.
Simplified to: clone branch → npm run setup → docker compose → shell.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
… mode default

- Quickstart shows complete flow: clone → build → compose → setup →
  shell → auth boundary (cloudflared + gh) → resume
- Lightweight bash syntax highlighting (comments, commands, flags, paths)
- Default theme changed from system to dark

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Comments: emerald green (distinct from code)
Flags: sky blue
Paths/URLs: amber
Commands: bold foreground

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Quickstart now shows the intended UX:
1. User clones + npm run setup (2 commands)
2. User starts claude — agent auto-provisions everything
3. Agent pauses at auth boundary, user runs cloudflared login + gh auth
4. Agent resumes: configures tunnel, starts dev server, validates

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Shows claude --permission-mode plan with example prompt
- Agent generates SSH key, returns pub key for user to add
- Agent pauses at auth boundaries (cloudflared, gh)
- Concise 4-step numbered flow, less comment noise

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Terminal block: 3 clean commands (clone, setup, claude plan mode)
- Example prompt block: copyable query for the agent
- Steps list: plain text describing what the agent does
- No bash comments as documentation

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Query inlined into claude -p "..." — single copyable command
- Removed separate example prompt block
- Moved QuickStart to right after Hero (visible on page load)
- Features and Tech Stack follow below

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Restored comment highlighting (emerald green, italic)
- String highlighting (amber) for quoted text
- Prompt simplified to "Provision this harness" (skill handles details)
- Clone command uses backslashes for readable line wrapping
- Removed .includes(".") from path detection (was catching prose)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Hero (left) + QuickStart terminal (right) in a 2-column grid on
lg breakpoint. Stacks vertically on mobile. Both visible on page
load without scrolling. Prompt simplified to "Provision this harness".

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
ryaneggz and others added 19 commits April 6, 2026 22:12
- Tech stack: infinite scrolling marquee with Lucide icons, two rows
  scrolling in opposite directions
- All GitHub links now point to agent/next-postgres-shadcn branch
- CSS keyframe animations for marquee + marquee-reverse

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Rounded pill badges with icons and backdrop blur
- Tripled items for seamless loop continuity
- Gradient edge fades on left/right for smooth appearance
- Pauses on hover for readability
- Two rows scrolling in opposite directions

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Single continuous row instead of two, cleaner pill badges with
hover states, gradient edge fades, pause on hover. Closer to
ruska.ai aesthetic.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Large cards with emoji icons (🐘 🐳 🎭 etc), name + subtitle
- Matches ruska.ai/services tech ecosystem pattern
- Slower animation (60s vs 30s) for readability

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…nd project intent

Rewrite all landing page sections to communicate what problems this harness
solves: setup overhead, agent isolation, amnesia, autonomous operation, visual
verification, and multi-agent coordination with independent heartbeats.

- Add FAQ accordion section with problem-oriented questions
- Add agent-browser skill for browser automation and screenshots
- Add .claude/screenshots/ with .gitkeep (contents gitignored)
- Fix string highlighting bug in quick-start terminal block
- Hero/features/tech-stack copy reframed around harness intent

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…README

All three now use the same flow: clone the agent/next-postgres-shadcn
branch, npm run setup, claude -p "Provision this harness".

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add paths filter to ci.yml so pushes that only touch docs, skills,
memory, or harness config don't trigger the full lint/build/test pipeline.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
… repo

- Add release.yml: calver tags (YYYY.M.D) trigger CI + Docker build + GitHub Release
- Update all clone URLs and GitHub links from open-harness branch to ryaneggz/next-postgres-shadcn
- Add versioning section to README documenting branch strategy and release flow
- Align quickstart across landing page, root README, and next-app README

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adds autonomous issue monitoring for ryaneggz/next-postgres-shadcn:
- Issue-triage skill: queries unassigned issues hourly, spawns 3 parallel
  sub-agents (Implementer, Critic, PM) for adversarial analysis, then an
  Expert AI Council synthesizes into a draft PR using issue template format
- Sub-agent definitions: .claude/agents/{implementer,critic,pm,council}.md
- Heartbeat: hourly cron (24/7) with idempotency guards
- Memory protocol: self-improving loop at end of every task
- IDENTITY.md, USER.md: agent identity card and owner context
- SOUL.md: Memory Improvement Protocol added
- MEMORY.md: Triage History section for pattern tracking
- Issue-triage rule: workflow constraints for deterministic execution

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
skill: add issue-triage skill with parallel sub-agents and AI council
Separate concerns across root identity files:
- SOUL.md: personality only (was mixing practices/procedures)
- AGENTS.md: operating procedures, decision rules, memory protocol
- TOOLS.md: environment, tools, services, workflows (new)
- HEARTBEAT.md: meta-maintenance routines (new)
- MEMORY.md: cleaned — removed stack info duplicated from IDENTITY.md
- Updated cross-references in IDENTITY.md, USER.md, outer CLAUDE.md

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add destroy/diagnose/release skills, cloudflared compose overlay,
startup script, vitest setup, and landing page component updates.
Refactor Docker entrypoint, setup, and provision skill.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@gitguardian
Copy link
Copy Markdown

gitguardian bot commented Apr 8, 2026

⚠️ GitGuardian has uncovered 1 secret following the scan of your pull request.

Please consider investigating the findings and remediating the incidents. Failure to do so may lead to compromising the associated services or software components.

🔎 Detected hardcoded secret in your pull request
GitGuardian id GitGuardian status Secret Commit Filename
29850720 Triggered Generic High Entropy Secret 389861c workspace/startup.sh View secret
🛠 Guidelines to remediate hardcoded secrets
  1. Understand the implications of revoking this secret by investigating where it is used in your code.
  2. Replace and store your secret safely. Learn here the best practices.
  3. Revoke and rotate this secret.
  4. If possible, rewrite git history. Rewriting git history is not a trivial act. You might completely break other contributing developers' workflow and you risk accidentally deleting legitimate data.

To avoid such incidents in the future consider


🦉 GitGuardian detects secrets in your source code to help developers and security teams secure the modern development process. You are seeing this because you or someone else with access to this repository has authorized GitGuardian to scan your pull request.

ryaneggz and others added 9 commits April 7, 2026 21:42
Add missing npm run setup step, use full claude CLI invocation,
and match the agent steps to the README description.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Update both READMEs to use claude "/provision" and match the
landing page's agent step descriptions.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
… startup

- Harden startup.sh: npm install, prisma generate/migrate, DB wait, health check
- Add procps to Dockerfile for process detection
- entrypoint.sh auto-installs cloudflared + agent-browser from env flags
- Add test:setup (8 vitest tests) for stack validation
- Add /provision skill: build, start, wait, validate, report SSH key + setup steps
- Add /diagnose skill: run tests from host, auto-remediate failures
- Add /release skill: CalVer YYYY.M.D with auto-increment
- Add /destroy skill: teardown containers + volumes
- Update README with Skills section
- Update landing page quick-start to use /provision

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Runs /release if new commits exist since last tag. Skips with HEARTBEAT_OK otherwise.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…l.json

- Add .claude/hooks/notify_slack.sh for Stop/Notification hooks
- Remove .claude/settings.json (superseded by settings.local.json with
  dynamic $CLAUDE_PROJECT_DIR paths)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…tbeat, and process tests

- 5 expert sub-agents (product, docs, security, registry, agent-systems)
  + strategic council (opus) + strategic critic for adversarial backpressure
- /strategic-proposal skill: experts → council draft → critic → council final
- /roadmap page with signal-over-features principle, vote callout, phase sections
- /implement skill: picks validated roadmap items, critic reviews PRD, runs
  Ralph in tmux with 1:1 iteration-to-story, browser QA, US-FINAL (archive +
  draft PR with Closes #N + Roadmap Context + CI green)
- /backlog-rank skill: daily PM curation of top-10 issues
- 35 tests: roadmap data integrity, page rendering, PRD validation (US-FINAL,
  browser QA, typecheck, Closes, Roadmap Context), implement guards
- Implementer heartbeat every 2h (9am-9pm), backlog-rank daily 08:00 UTC

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…EAT, TOOLS

- Add Product Roadmap section to README (vision, phases, properties, automation pipeline, how to vote)
- README skills table: add 5 missing workspace skills
- README workflow table: list all 5 heartbeats
- README project structure: reflect new dirs, counts (12 skills, 11 agents, 35 tests)
- IDENTITY.md: add missing Nightly release heartbeat to list
- HEARTBEAT.md: expand from 2 to all 5 heartbeats with descriptions
- TOOLS.md: document /implement integration with Ralph, add archive dir

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Fix archive path: .ralph/archive/ → .ralph/archives/YYYY-MM-DD/<feature>/
  (ralph.sh, implement SKILL.md, CLAUDE.md all aligned)
- US-FINAL now requires: dev server 200, public URL 200, archive verification
- Add git safety rules to .ralph/CLAUDE.md (never clone, never init)
- Fix tmux launch to use gosu sandbox (Claude refuses --dangerously-skip-permissions as root)
- Add validateArchivePath guard + 4 tests (39 total)
- Seed roadmap with 2 items (#4 health endpoint, #5 OG meta tags)
- Add @prisma/adapter-pg dependency
- Clean nested .git Ralph left in workspace/next-app/
- Harden .gitignore for src/generated/, repo-clone artifacts, .ralph/.claude/

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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