Add poc-rest-owl-loop plugin: AI-powered project scaffolding workflow#249
Add poc-rest-owl-loop plugin: AI-powered project scaffolding workflow#249
Conversation
Plugin Version StatusVersions are auto-bumped in PRs. Manual bumps to higher versions are preserved.
|
0d78011 to
ae72299
Compare
…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
21cdc22 to
6172f48
Compare
- 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
There was a problem hiding this comment.
❌ 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 echo → hook-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
log.sh symlink will crash the SessionStart hook — one fix needed before mergelog.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 echo → hook-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 resolutionBlocking 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:
Tasktool removed (review #1) — SKILL.mdallowed-toolsnow lists only valid tools. Fixed in6cfe741.$(find ...)CI template fixed (review #1) —validation-pipeline/SKILL.mdnow uses the correct two-step pattern with$GITHUB_OUTPUT+${{ steps.diffs.outputs.files }}. Fixed in6cfe741.- Hook uses
hook-logging.sh(review #2) — Detection script useshook_run/hook_respondwithhook_loginstead of rawecho. Fixed in0a1c033. - Command file config-aware (review #2) — Documents configurable
artifactsDirpath.
Plugin Structure
Follows all repository conventions:
plugin.jsonwith required fields (namepoc-rest-owl-loop, version0.1.0, description, author) perplugin-development.md- External
hooks/hooks.jsonperplugin-hooks-organization.md - Settings keys in camelCase per
settings-key-naming.md - Shared lib symlinks for
hook-logging.shandplugin-config-read.sh(just missinglog.sh) marketplace.jsonentry added by CD workflow, not manually edited
Hook Script
detect-poc-rest-owl-loop-project.sh is well-structured:
set -euo pipefail- Reads
artifactsDirfrom config viaplugin_get_config - Exits silently when no artifacts exist (correct per
hook-output-patterns.md) - Uses
hook_run/hook_respondlifecycle (correct pershared-libs.md) - Clean phase detection checking expected artifact files
- 5-second timeout in
hooks.jsonappropriate 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.shsymlink if additional hooks are added in future versions
| @@ -0,0 +1 @@ | |||
| ../../../shared/lib/hook-logging.sh No newline at end of file | |||
There was a problem hiding this comment.
❌ 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.shplugin-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
Summary
poc-rest-owl-loopplugin (renamed fromrest-owl) — a 7-phase workflow for turning simple project ideas into fully researched, specified, designed, and validated software projectsReview Feedback Addressed
echotohook-logging.shstructured output withhook_run/hook_respondhook-logging.shsymlink to pluginlib/docs/rest-owl/)Plugin Phases
Test plan
mise run validatemise run lintcheck-version-files,lint,validateall green/poc-rest-owl-loopcommand works end-to-endhttps://claude.ai/code/session_0191H4s9PX5VxKfmKnrq3aYF