Skip to content

Add poc-rest-owl-loop plugin: AI-powered project scaffolding workflow#249

Open
nsheaps wants to merge 11 commits intomainfrom
claude/rest-owl-plugin-xmlWo
Open

Add poc-rest-owl-loop plugin: AI-powered project scaffolding workflow#249
nsheaps wants to merge 11 commits intomainfrom
claude/rest-owl-plugin-xmlWo

Conversation

@nsheaps
Copy link
Copy Markdown
Owner

@nsheaps nsheaps commented Mar 15, 2026

Summary

  • Add poc-rest-owl-loop plugin (renamed from rest-owl) — a 7-phase workflow for turning simple project ideas into fully researched, specified, designed, and validated software projects
  • Include 22 research notes analyzing the concept landscape (spec-driven development, agentic engineering, visual regression testing)
  • Structure follows all repo conventions (external hooks.json, camelCase settings, proper directory layout, shared lib symlinks)

Review Feedback Addressed

  • Switched hook script from raw echo to hook-logging.sh structured output with hook_run/hook_respond
  • Added hook-logging.sh symlink to plugin lib/
  • Made command file config-aware for artifacts directory path (no longer hardcodes docs/rest-owl/)

Plugin Phases

  1. Intake — Clarify the idea
  2. Competitive Research — Analyze 5-10 existing products
  3. Feature Specification — Detailed specs with acceptance criteria
  4. Visual Design — Design system, wireframes, HTML mockups
  5. Architecture — Tech decisions + project constitution (CLAUDE.md)
  6. Implementation Planning — Ordered milestones
  7. Build & Validate — Test-first implementation with visual regression CI
  8. Handoff — Architecture walkthrough and maintenance guide

Test plan

  • Validate plugin structure passes mise run validate
  • Lint passes mise run lint
  • CI check-version-files, lint, validate all green
  • Plugin installs correctly via marketplace
  • /poc-rest-owl-loop command works end-to-end

https://claude.ai/code/session_0191H4s9PX5VxKfmKnrq3aYF

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Mar 15, 2026

Plugin Version Status

Versions are auto-bumped in PRs. Manual bumps to higher versions are preserved.

Plugin Base Current Action
poc-rest-owl-loop 0.0.0 0.1.0 Already bumped

@nsheaps nsheaps added the request-review Request a one-time review from the Claude review bot (label is removed after review starts) label Mar 15, 2026
@henry-nsheaps henry-nsheaps Bot removed the request-review Request a one-time review from the Claude review bot (label is removed after review starts) label Mar 15, 2026
henry-nsheaps[bot]

This comment was marked as outdated.

This was referenced Mar 16, 2026
@nsheaps nsheaps force-pushed the claude/rest-owl-plugin-xmlWo branch from 0d78011 to ae72299 Compare March 20, 2026 16:53
@nsheaps nsheaps changed the title Add rest-owl plugin: AI-powered project scaffolding workflow Add poc-rest-owl-loop plugin: AI-powered project scaffolding workflow Mar 23, 2026
@nsheaps nsheaps marked this pull request as ready for review March 23, 2026 04:05
claude and others added 7 commits March 23, 2026 00:05
…ects

New plugin with 5 skills, 1 command, and a session hook that orchestrates a 7-phase
workflow: intake, competitive research, feature specification, visual design (with
HTML mockups), technical architecture, implementation planning, and build with
full validation including Playwright visual regression testing in CI.

https://claude.ai/code/session_0191H4s9PX5VxKfmKnrq3aYF
- Remove invalid `Task` from allowed-tools in rest-owl skill (not a real tool)
- Fix CI template: use step output for visual diff file list instead of
  shell expansion in YAML body literal
- Use plugin-config-read to read artifactsDir from settings instead of
  hardcoding docs/rest-owl in detection hook
- Add shared lib symlink for plugin-config-read.sh
- Add flexibility notes about tool choices (Tailwind, Bun, Playwright)
  being defaults that adapt to user preferences from Phase 0

https://claude.ai/code/session_0191H4s9PX5VxKfmKnrq3aYF
…yzed)

Research covering: the subreddit origin, spec-driven development (Thoughtworks,
InfoQ, orchestrator.dev, JetBrains Junie), GitHub Spec Kit architecture,
agentic engineering (Karpathy, Addy Osmani), vibe coding landscape,
visual regression testing best practices, AI scaffolding platforms,
competitive analysis methodologies, and the "missing middle" in tutorials.

https://claude.ai/code/session_0191H4s9PX5VxKfmKnrq3aYF
Key improvements based on analysis of 20+ articles on spec-driven development,
agentic engineering, and visual regression testing:

- Frame as "agentic engineering" (Karpathy 2026), not vibe coding
- Add Phase 7 (Handoff & Ownership) to address skill gap concern (Osmani)
- Add project constitution (CLAUDE.md) to Phase 4 (from GitHub Spec Kit pattern)
- Switch Phase 6 to test-first: write tests from specs before implementation
- Add positioning statement to Phase 0 intake (from OpenAI PRD template)
- Add spec quality principles to feature-spec skill (from Thoughtworks SDD)
- Use Playwright Docker container in CI for consistent visual regression (best practices)
- Add dynamic content masking and flaky test prevention guidance
- Update README and command to reflect new Phase 7 and constitution artifact

https://claude.ai/code/session_0191H4s9PX5VxKfmKnrq3aYF
Rename plugin directory, files, and all internal references.
The docs/rest-owl artifacts directory path is preserved as a
config default since it's a user-facing path.

https://claude.ai/code/session_0191H4s9PX5VxKfmKnrq3aYF
@nsheaps nsheaps force-pushed the claude/rest-owl-plugin-xmlWo branch from 21cdc22 to 6172f48 Compare March 23, 2026 04:05
henry-nsheaps[bot]

This comment was marked as outdated.

henry-nsheaps[bot]

This comment was marked as outdated.

claude and others added 2 commits March 23, 2026 08:02
- Switch hook script from raw echo to hook-logging.sh structured output
- Add hook-logging.sh symlink to plugin lib/
- Make command file config-aware for artifacts directory path
- Format settings.json (linter fix)

https://claude.ai/code/session_0191H4s9PX5VxKfmKnrq3aYF
henry-nsheaps[bot]

This comment was marked as outdated.

henry-nsheaps[bot]

This comment was marked as outdated.

Copy link
Copy Markdown
Contributor

@henry-nsheaps henry-nsheaps Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❌ Missing log.sh symlink will crash the SessionStart hook — one fix needed before merge

log.sh symlink missing from lib/hook-logging.sh depends on it and will crash at runtime (see inline comment, also prior thread)
✅ All 3 issues from earlier reviews addressed (Task tool removed, $(find...) template fixed, raw echohook-logging.sh)
✅ Plugin structure follows all repo conventions (external hooks.json, camelCase settings, shared lib symlinks)
✅ 22 research docs with real sources and critical analysis
✅ Well-organized 7-phase workflow with clear artifact-driven checkpoints
✅ Detection hook reads artifactsDir from config with proper 3-tier resolution

🖱️ Click to expand for full details

Blocking Issue: Missing log.sh Symlink

hook-logging.sh resolves its directory via BASH_SOURCE[0] and sources log.sh from the same path (lines 43-44 of shared/lib/hook-logging.sh):

_HOOK_LOGGING_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "${_HOOK_LOGGING_DIR}/log.sh"

The plugin's lib/ directory only contains two symlinks (hook-logging.sh and plugin-config-read.sh). When the SessionStart hook runs, this source call will fail and crash the hook.

Per shared-libs.md: "When hook-logging.sh is symlinked, log.sh must also be symlinked (it's a dependency)." Verified all 48+ other plugins with hook-logging.sh also include log.sh.

Fix: ln -s ../../../shared/lib/log.sh plugins/poc-rest-owl-loop/lib/log.sh

Previous Review Issues — All Resolved

All three issues from prior reviews have been addressed:

  1. Task tool removed (review #1) — SKILL.md allowed-tools now lists only valid tools. Fixed in 6cfe741.
  2. $(find ...) CI template fixed (review #1) — validation-pipeline/SKILL.md now uses the correct two-step pattern with $GITHUB_OUTPUT + ${{ steps.diffs.outputs.files }}. Fixed in 6cfe741.
  3. Hook uses hook-logging.sh (review #2) — Detection script uses hook_run/hook_respond with hook_log instead of raw echo. Fixed in 0a1c033.
  4. Command file config-aware (review #2) — Documents configurable artifactsDir path.

Plugin Structure

Follows all repository conventions:

  • plugin.json with required fields (name poc-rest-owl-loop, version 0.1.0, description, author) per plugin-development.md
  • External hooks/hooks.json per plugin-hooks-organization.md
  • Settings keys in camelCase per settings-key-naming.md
  • Shared lib symlinks for hook-logging.sh and plugin-config-read.sh (just missing log.sh)
  • marketplace.json entry added by CD workflow, not manually edited

Hook Script

detect-poc-rest-owl-loop-project.sh is well-structured:

  • set -euo pipefail
  • Reads artifactsDir from config via plugin_get_config
  • Exits silently when no artifacts exist (correct per hook-output-patterns.md)
  • Uses hook_run/hook_respond lifecycle (correct per shared-libs.md)
  • Clean phase detection checking expected artifact files
  • 5-second timeout in hooks.json appropriate for lightweight file checks

Skills & Command

All 5 skills declare appropriate allowed-tools for their phases. The orchestrator skill correctly coordinates phases with human approval gates. The command file provides a clean entry point with pre-flight detection that checks multiple possible artifact directories.

Research Documentation

22 research notes covering spec-driven development, agentic engineering, visual regression testing. Spot-checked multiple docs — well-sourced with real URLs, publication dates, balanced analysis, and actionable insights tied back to plugin design decisions.

Settings

poc-rest-owl-loop.settings.yaml is well-structured with 9 configurable keys, all camelCase. README configuration table matches the settings file. Defaults are sensible for the POC scope.

Score Rationale

Quality 85%: All prior issues fixed. The missing log.sh symlink is a runtime crash bug that prevents this score from being higher. Once fixed, this would be 92%+.

Security N/A: No security-sensitive code — documentation, bash file-existence checks, and skill/command definitions only.

Simplicity 78%: 2,954 lines across 36 files is a large PR. The complexity maps to the ambitious 7-phase orchestration scope with 5 skills + 22 research docs. Each skill is well-separated with clear boundaries.

Confidence 93%: Sixth review pass with full file analysis. The log.sh dependency is confirmed by reading hook-logging.sh source (lines 43-44), cross-referencing all 48+ other plugins' lib/ directories via git ls-tree, and the explicit requirement in shared-libs.md. Verified via git ls-tree -r that lib/ contains exactly 2 files (no log.sh).

Recommended follow-ups (non-blocking):

  • Consider noting tool choices (Tailwind, Bun, Playwright) as defaults/suggestions rather than requirements, so the workflow adapts to user preferences stated in Phase 0
  • Add skills for Phase 4 (Architecture) and Phase 5 (Planning) if the plugin scope grows beyond POC
  • Consider adding hook-output.sh symlink if additional hooks are added in future versions

@@ -0,0 +1 @@
../../../shared/lib/hook-logging.sh No newline at end of file
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Still missing: log.sh symlink — this will crash the SessionStart hook at runtime.

This was flagged in the previous review thread and has not been addressed in subsequent commits.

hook-logging.sh sources log.sh from its own resolved directory (source lines 43-44):

_HOOK_LOGGING_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "${_HOOK_LOGGING_DIR}/log.sh"

The lib/ directory currently only has two symlinks:

  • hook-logging.sh../../../shared/lib/hook-logging.sh
  • plugin-config-read.sh../../../shared/lib/plugin-config-read.sh

Per shared-libs.md: "When hook-logging.sh is symlinked, log.sh must also be symlinked (it's a dependency)." Every other plugin in the repo (48+) that uses hook-logging.sh also includes log.sh.

Fix:

cd plugins/poc-rest-owl-loop/lib/
ln -s ../../../shared/lib/log.sh log.sh

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.

2 participants