opencastle 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -7
- package/bin/cli.mjs +2 -3
- package/dist/cli/adapters/claude-code.d.ts.map +1 -1
- package/dist/cli/adapters/claude-code.js +7 -3
- package/dist/cli/adapters/claude-code.js.map +1 -1
- package/dist/cli/adapters/cursor.d.ts.map +1 -1
- package/dist/cli/adapters/cursor.js +27 -9
- package/dist/cli/adapters/cursor.js.map +1 -1
- package/dist/cli/dashboard.d.ts.map +1 -1
- package/dist/cli/dashboard.js +7 -4
- package/dist/cli/dashboard.js.map +1 -1
- package/dist/cli/eject.d.ts +1 -1
- package/dist/cli/eject.d.ts.map +1 -1
- package/dist/cli/eject.js +6 -1
- package/dist/cli/eject.js.map +1 -1
- package/dist/cli/gitignore.d.ts +11 -0
- package/dist/cli/gitignore.d.ts.map +1 -0
- package/dist/cli/gitignore.js +61 -0
- package/dist/cli/gitignore.js.map +1 -0
- package/dist/cli/init.d.ts +1 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +65 -2
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/mcp.d.ts +3 -2
- package/dist/cli/mcp.d.ts.map +1 -1
- package/dist/cli/mcp.js +23 -5
- package/dist/cli/mcp.js.map +1 -1
- package/dist/cli/run/schema.d.ts.map +1 -1
- package/dist/cli/run/schema.js +28 -1
- package/dist/cli/run/schema.js.map +1 -1
- package/dist/cli/run.d.ts.map +1 -1
- package/dist/cli/run.js +16 -0
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/update.d.ts.map +1 -1
- package/dist/cli/update.js +16 -3
- package/dist/cli/update.js.map +1 -1
- package/package.json +1 -1
- package/src/cli/adapters/claude-code.ts +7 -5
- package/src/cli/adapters/cursor.ts +28 -13
- package/src/cli/dashboard.ts +9 -4
- package/src/cli/eject.ts +7 -1
- package/src/cli/gitignore.ts +77 -0
- package/src/cli/init.ts +69 -2
- package/src/cli/mcp.ts +31 -6
- package/src/cli/run/schema.ts +26 -1
- package/src/cli/run.ts +4 -0
- package/src/cli/update.ts +18 -3
- package/src/orchestrator/agent-workflows/README.md +2 -0
- package/src/orchestrator/agent-workflows/bug-fix.md +2 -0
- package/src/orchestrator/agent-workflows/data-pipeline.md +2 -0
- package/src/orchestrator/agent-workflows/database-migration.md +2 -0
- package/src/orchestrator/agent-workflows/feature-implementation.md +2 -0
- package/src/orchestrator/agent-workflows/performance-optimization.md +2 -0
- package/src/orchestrator/agent-workflows/refactoring.md +2 -0
- package/src/orchestrator/agent-workflows/schema-changes.md +2 -0
- package/src/orchestrator/agent-workflows/security-audit.md +2 -0
- package/src/orchestrator/agent-workflows/shared-delivery-phase.md +2 -0
- package/src/orchestrator/agents/api-designer.agent.md +2 -0
- package/src/orchestrator/agents/architect.agent.md +2 -0
- package/src/orchestrator/agents/content-engineer.agent.md +2 -0
- package/src/orchestrator/agents/copywriter.agent.md +2 -0
- package/src/orchestrator/agents/data-expert.agent.md +2 -0
- package/src/orchestrator/agents/database-engineer.agent.md +2 -0
- package/src/orchestrator/agents/developer.agent.md +2 -0
- package/src/orchestrator/agents/devops-expert.agent.md +2 -0
- package/src/orchestrator/agents/documentation-writer.agent.md +2 -0
- package/src/orchestrator/agents/performance-expert.agent.md +2 -0
- package/src/orchestrator/agents/release-manager.agent.md +2 -0
- package/src/orchestrator/agents/researcher.agent.md +2 -0
- package/src/orchestrator/agents/reviewer.agent.md +2 -0
- package/src/orchestrator/agents/security-expert.agent.md +2 -0
- package/src/orchestrator/agents/seo-specialist.agent.md +2 -0
- package/src/orchestrator/agents/team-lead.agent.md +2 -0
- package/src/orchestrator/agents/testing-expert.agent.md +3 -1
- package/src/orchestrator/agents/ui-ux-expert.agent.md +5 -3
- package/src/orchestrator/copilot-instructions.md +2 -0
- package/src/orchestrator/instructions/ai-optimization.instructions.md +2 -0
- package/src/orchestrator/instructions/general.instructions.md +2 -0
- package/src/orchestrator/prompts/bootstrap-customizations.prompt.md +2 -0
- package/src/orchestrator/prompts/brainstorm.prompt.md +2 -0
- package/src/orchestrator/prompts/bug-fix.prompt.md +2 -0
- package/src/orchestrator/prompts/create-skill.prompt.md +2 -0
- package/src/orchestrator/prompts/generate-task-spec.prompt.md +2 -0
- package/src/orchestrator/prompts/implement-feature.prompt.md +2 -0
- package/src/orchestrator/prompts/metrics-report.prompt.md +2 -0
- package/src/orchestrator/prompts/quick-refinement.prompt.md +2 -0
- package/src/orchestrator/prompts/resolve-pr-comments.prompt.md +2 -0
- package/src/orchestrator/skills/accessibility-standards/SKILL.md +2 -0
- package/src/orchestrator/skills/agent-hooks/SKILL.md +2 -0
- package/src/orchestrator/skills/agent-memory/SKILL.md +2 -0
- package/src/orchestrator/skills/api-patterns/SKILL.md +2 -0
- package/src/orchestrator/skills/browser-testing/SKILL.md +14 -26
- package/src/orchestrator/skills/code-commenting/SKILL.md +2 -0
- package/src/orchestrator/skills/contentful-cms/SKILL.md +2 -0
- package/src/orchestrator/skills/context-map/SKILL.md +2 -0
- package/src/orchestrator/skills/convex-database/SKILL.md +2 -0
- package/src/orchestrator/skills/data-engineering/SKILL.md +2 -0
- package/src/orchestrator/skills/deployment-infrastructure/SKILL.md +2 -0
- package/src/orchestrator/skills/documentation-standards/SKILL.md +2 -0
- package/src/orchestrator/skills/fast-review/SKILL.md +2 -0
- package/src/orchestrator/skills/frontend-design/SKILL.md +2 -0
- package/src/orchestrator/skills/jira-management/SKILL.md +2 -0
- package/src/orchestrator/skills/memory-merger/SKILL.md +2 -0
- package/src/orchestrator/skills/nextjs-patterns/SKILL.md +2 -0
- package/src/orchestrator/skills/nx-workspace/SKILL.md +2 -0
- package/src/orchestrator/skills/panel-majority-vote/SKILL.md +2 -0
- package/src/orchestrator/skills/panel-majority-vote/panel-report.template.md +2 -0
- package/src/orchestrator/skills/performance-optimization/SKILL.md +2 -0
- package/src/orchestrator/skills/react-development/SKILL.md +2 -0
- package/src/orchestrator/skills/sanity-cms/SKILL.md +2 -0
- package/src/orchestrator/skills/security-hardening/SKILL.md +2 -0
- package/src/orchestrator/skills/self-improvement/SKILL.md +2 -0
- package/src/orchestrator/skills/seo-patterns/SKILL.md +2 -0
- package/src/orchestrator/skills/session-checkpoints/SKILL.md +2 -0
- package/src/orchestrator/skills/slack-notifications/SKILL.md +2 -0
- package/src/orchestrator/skills/strapi-cms/SKILL.md +2 -0
- package/src/orchestrator/skills/supabase-database/SKILL.md +2 -0
- package/src/orchestrator/skills/task-management/SKILL.md +2 -0
- package/src/orchestrator/skills/team-lead-reference/SKILL.md +2 -0
- package/src/orchestrator/skills/teams-notifications/SKILL.md +2 -0
- package/src/orchestrator/skills/testing-workflow/SKILL.md +4 -2
- package/src/orchestrator/skills/validation-gates/SKILL.md +4 -2
- package/dist/cli/diff.d.ts +0 -3
- package/dist/cli/diff.d.ts.map +0 -1
- package/dist/cli/diff.js +0 -27
- package/dist/cli/diff.js.map +0 -1
- package/src/cli/diff.ts +0 -44
|
@@ -3,6 +3,8 @@ description: 'Collaborative brainstorm to explore requirements, approaches, and
|
|
|
3
3
|
agent: Team Lead
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
7
|
+
|
|
6
8
|
# Brainstorm
|
|
7
9
|
|
|
8
10
|
You are the Team Lead. Before planning or writing any code, run a structured brainstorm to explore the request described below. The goal is to **surface assumptions, alternative approaches, and trade-offs** before locking in a plan.
|
|
@@ -3,6 +3,8 @@ description: 'Investigate and fix a reported bug with proper triage, root cause
|
|
|
3
3
|
agent: Team Lead
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
7
|
+
|
|
6
8
|
# Fix Bug
|
|
7
9
|
|
|
8
10
|
You are the Team Lead. Investigate and fix the bug described below. Bugs are real defects that affect users — treat them seriously with proper triage, tracking, and verification.
|
|
@@ -3,6 +3,8 @@ description: 'Scaffold a new skill directory with proper frontmatter, structure,
|
|
|
3
3
|
agent: Team Lead
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
7
|
+
|
|
6
8
|
# Create Skill
|
|
7
9
|
|
|
8
10
|
Scaffold a new skill for the AI agent configuration. Skills encode domain-specific knowledge that agents load on demand.
|
|
@@ -3,6 +3,8 @@ description: 'Generate a valid opencastle.tasks.yml spec file for autonomous ove
|
|
|
3
3
|
agent: Team Lead
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
7
|
+
|
|
6
8
|
# Generate Task Spec for Autonomous Run
|
|
7
9
|
|
|
8
10
|
You are the Team Lead. The user wants to run `opencastle run` to execute a batch of tasks autonomously (e.g., overnight). Your job is to produce a valid `opencastle.tasks.yml` file they can feed to the CLI.
|
|
@@ -3,6 +3,8 @@ description: 'Instruct the Team Lead to implement a specific task from the post-
|
|
|
3
3
|
agent: Team Lead
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
7
|
+
|
|
6
8
|
# Implement Roadmap Task
|
|
7
9
|
|
|
8
10
|
You are the Team Lead. Implement the roadmap task described below following this strict workflow. The task comes from `docs/ROADMAP-POST-MVP.md`.
|
|
@@ -3,6 +3,8 @@ description: 'Collect and report metrics from agent logs, GitHub PRs, Linear iss
|
|
|
3
3
|
agent: Researcher
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
7
|
+
|
|
6
8
|
# Metrics Report
|
|
7
9
|
|
|
8
10
|
Generate a comprehensive metrics dashboard from all project data sources.
|
|
@@ -3,6 +3,8 @@ description: 'Handle follow-up refinements after a roadmap task — bug fixes, U
|
|
|
3
3
|
agent: Team Lead
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
7
|
+
|
|
6
8
|
# Follow-Up Refinement
|
|
7
9
|
|
|
8
10
|
You are the Team Lead. Handle the follow-up refinement described below. This is a **post-task adjustment** — a bug fix, UI tweak, or polish item that came up after reviewing a completed roadmap task. It does NOT require Linear tracking.
|
|
@@ -3,6 +3,8 @@ description: 'Resolve GitHub PR review comments by reading them, grouping by fil
|
|
|
3
3
|
agent: Team Lead
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
7
|
+
|
|
6
8
|
# Resolve PR Comments
|
|
7
9
|
|
|
8
10
|
You are the Team Lead. A pull request has review comments that need to be resolved. Read the comments, group them by file, and delegate fixes efficiently.
|
|
@@ -3,6 +3,8 @@ name: accessibility-standards
|
|
|
3
3
|
description: "WCAG 2.2 Level AA accessibility patterns for React/HTML/CSS. Use when creating or modifying UI components, forms, navigation, tables, images, or any user-facing elements. Covers keyboard navigation, screen reader semantics, low vision contrast, voice access, and inclusive language."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
7
|
+
|
|
6
8
|
# Accessibility Standards
|
|
7
9
|
|
|
8
10
|
Code must conform to [WCAG 2.2 Level AA](https://www.w3.org/TR/WCAG22/). Go beyond minimal conformance wherever possible.
|
|
@@ -3,6 +3,8 @@ name: agent-hooks
|
|
|
3
3
|
description: "Lifecycle hooks for AI agent sessions — reusable actions that run at specific points (session start, session end, pre-delegation, post-delegation). Defines what to do at each lifecycle event so agents behave consistently."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
7
|
+
|
|
6
8
|
# Agent Lifecycle Hooks
|
|
7
9
|
|
|
8
10
|
Hooks are **standardized actions** that agents execute at specific points during their lifecycle. They enforce consistency across sessions and prevent common oversights (missing lessons, forgotten checkpoints, untracked issues).
|
|
@@ -3,6 +3,8 @@ name: agent-memory
|
|
|
3
3
|
description: "Agent expertise tracking and cross-session knowledge graph. Use when delegating tasks to track agent strengths/weaknesses, or when building context about file relationships and patterns."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
7
|
+
|
|
6
8
|
# Agent Memory Protocol
|
|
7
9
|
|
|
8
10
|
## Purpose
|
|
@@ -3,6 +3,8 @@ name: api-patterns
|
|
|
3
3
|
description: "API design patterns for route handlers, Server Actions, Zod validation, and external API integration. Use when creating API routes, Server Actions, or integrating external services."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
7
|
+
|
|
6
8
|
# API Patterns
|
|
7
9
|
|
|
8
10
|
Generic API design patterns for Next.js App Router projects. For project-specific endpoints, actions, and external API inventory, see [api-config.md](../../customizations/stack/api-config.md).
|
|
@@ -3,6 +3,8 @@ name: browser-testing
|
|
|
3
3
|
description: "Chrome DevTools MCP automation patterns for validating UI changes in real browsers. Use when performing E2E browser testing, validating visual changes, testing user interactions, or debugging UI issues with Chrome DevTools."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
7
|
+
|
|
6
8
|
# Browser Testing with Chrome DevTools MCP
|
|
7
9
|
|
|
8
10
|
Generic browser testing methodology using Chrome DevTools MCP. For project-specific test app, selectors, suites, and breakpoint config, see [testing-config.md](../../customizations/stack/testing-config.md).
|
|
@@ -123,48 +125,34 @@ mcp_chrome-devtoo_list_console_messages()
|
|
|
123
125
|
|
|
124
126
|
### 6. Responsive Breakpoint Testing (MANDATORY)
|
|
125
127
|
|
|
126
|
-
**Every UI change MUST be tested at all
|
|
128
|
+
**Every UI change MUST be tested at all responsive breakpoints.** Do not test at desktop only — most layout bugs surface at smaller viewports. Define your breakpoints in your project's testing config (e.g., `testing-config.md`).
|
|
127
129
|
|
|
128
130
|
#### How to Resize
|
|
129
131
|
|
|
130
132
|
```javascript
|
|
131
|
-
//
|
|
132
|
-
mcp_chrome-devtoo_resize_page({ width: 375, height: 812 })
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
mcp_chrome-devtoo_resize_page({ width: 768, height: 1024 })
|
|
136
|
-
|
|
137
|
-
// Desktop (standard)
|
|
138
|
-
mcp_chrome-devtoo_resize_page({ width: 1440, height: 900 })
|
|
133
|
+
// Example breakpoints — adjust to your project's testing config
|
|
134
|
+
mcp_chrome-devtoo_resize_page({ width: 375, height: 812 }) // Mobile
|
|
135
|
+
mcp_chrome-devtoo_resize_page({ width: 768, height: 1024 }) // Tablet
|
|
136
|
+
mcp_chrome-devtoo_resize_page({ width: 1440, height: 900 }) // Desktop
|
|
139
137
|
```
|
|
140
138
|
|
|
141
139
|
#### Per-Breakpoint Verification
|
|
142
140
|
|
|
143
|
-
|
|
141
|
+
#### Per-Breakpoint Verification
|
|
144
142
|
|
|
145
|
-
**
|
|
146
|
-
- [ ] Sidebar/filter panel hidden — accessible via drawer/hamburger
|
|
147
|
-
- [ ] Cards stack vertically, no horizontal overflow
|
|
148
|
-
- [ ] Text truncates or wraps cleanly — no overflow or overlap
|
|
149
|
-
- [ ] Touch targets >= 44px
|
|
150
|
-
- [ ] Badges, tags, and pills wrap without horizontal scroll
|
|
151
|
-
- [ ] Map/list toggle works
|
|
143
|
+
At **each** breakpoint, check:
|
|
152
144
|
|
|
153
|
-
|
|
154
|
-
- [ ]
|
|
155
|
-
- [ ] Interactive elements have adequate spacing
|
|
145
|
+
- [ ] Layout adapts correctly — no horizontal overflow
|
|
146
|
+
- [ ] Text truncates or wraps cleanly — no overlap
|
|
147
|
+
- [ ] Interactive elements have adequate spacing and touch targets
|
|
148
|
+
- [ ] Navigation and panels collapse/expand as expected
|
|
156
149
|
- [ ] Images and cards resize proportionally
|
|
157
150
|
|
|
158
|
-
**Desktop (1440 x 900):**
|
|
159
|
-
- [ ] Full layout visible — sidebar + content columns
|
|
160
|
-
- [ ] Filter sidebar, content area, and any panels properly aligned
|
|
161
|
-
- [ ] No excessive whitespace or stretched elements
|
|
162
|
-
|
|
163
151
|
#### Responsive Testing Anti-Patterns
|
|
164
152
|
|
|
165
153
|
| Anti-Pattern | Correct Approach |
|
|
166
154
|
|---|---|
|
|
167
|
-
| Testing only at desktop width | Test at all
|
|
155
|
+
| Testing only at desktop width | Test at all project-defined breakpoints |
|
|
168
156
|
| Skipping resize because "it uses Tailwind" | Tailwind classes can be wrong — always verify visually |
|
|
169
157
|
| Only checking layout, not interactions | Test filter drawers, dropdowns, and modals at each size |
|
|
170
158
|
| Taking 3 screenshots (one per breakpoint) | Use `evaluate_script()` to check layout; save screenshots for failures |
|
|
@@ -3,6 +3,8 @@ name: code-commenting
|
|
|
3
3
|
description: "Guidelines for writing self-explanatory code with minimal comments. Covers when to comment (WHY not WHAT), anti-patterns to avoid, annotation tags, and public API documentation. Use when writing or reviewing code comments."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
7
|
+
|
|
6
8
|
# Self-explanatory Code Commenting
|
|
7
9
|
|
|
8
10
|
## Core Principle
|
|
@@ -3,6 +3,8 @@ name: contentful-cms
|
|
|
3
3
|
description: "Contentful CMS development patterns, GraphQL/REST API usage, content modeling, and migration best practices. Use when working with Contentful content types, entries, assets, or the Management API."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
7
|
+
|
|
6
8
|
# Contentful CMS
|
|
7
9
|
|
|
8
10
|
Generic Contentful CMS development methodology. For project-specific configuration, content types, and API keys, see [cms-config.md](../../customizations/stack/cms-config.md).
|
|
@@ -3,6 +3,8 @@ name: context-map
|
|
|
3
3
|
description: "Generate a structured file impact map before making changes. Identifies all files that will be affected, their relationships, and cascade effects — improving file partitioning for parallel work and reducing unexpected side effects."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
7
|
+
|
|
6
8
|
# Skill: Context Map
|
|
7
9
|
|
|
8
10
|
Generate a structured **file impact map** before any code changes begin. This map identifies all files that will be touched, their relationships, and cascade effects — directly improving the Team Lead's file partitioning for parallel agents.
|
|
@@ -3,6 +3,8 @@ name: convex-database
|
|
|
3
3
|
description: "Convex reactive database patterns, schema design, real-time queries, mutations, actions, and deployment best practices. Use when designing Convex schemas, writing queries/mutations, or managing the Convex backend."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
7
|
+
|
|
6
8
|
# Convex Database
|
|
7
9
|
|
|
8
10
|
Generic Convex development methodology. For project-specific schema, functions, and deployment details, see [database-config.md](../../customizations/stack/database-config.md).
|
|
@@ -3,6 +3,8 @@ name: data-engineering
|
|
|
3
3
|
description: "Data pipeline ETL workflows, web scraping with Puppeteer, NDJSON processing, and CMS data import. Use when building scrapers, processing data, running CLI tools, or importing to a CMS."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
7
|
+
|
|
6
8
|
# Data Engineering
|
|
7
9
|
|
|
8
10
|
Generic data pipeline patterns and scraping methodology. For project-specific pipeline architecture, sources, CLI commands, and data status, see [data-pipeline-config.md](../../customizations/stack/data-pipeline-config.md).
|
|
@@ -3,6 +3,8 @@ name: deployment-infrastructure
|
|
|
3
3
|
description: "Deployment architecture, environment variables, cron jobs, security headers, and caching patterns. Use when configuring deployments, managing environment variables, setting up cron jobs, or troubleshooting build/deployment issues."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
7
|
+
|
|
6
8
|
# Deployment Infrastructure
|
|
7
9
|
|
|
8
10
|
All deployment configuration is project-specific. See [deployment-config.md](../../customizations/stack/deployment-config.md) for the full architecture, environment variables, cron jobs, caching headers, and key files.
|
|
@@ -3,6 +3,8 @@ name: documentation-standards
|
|
|
3
3
|
description: "Documentation templates, structure, and standards for project docs, roadmaps, ADRs, and known issues. Use when writing or updating documentation files."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
7
|
+
|
|
6
8
|
# Documentation Standards
|
|
7
9
|
|
|
8
10
|
Generic documentation templates and writing standards. For project-specific directory structure and practices, see [docs-structure.md](../../customizations/project/docs-structure.md).
|
|
@@ -4,6 +4,8 @@ description: "Create distinctive, production-grade frontend interfaces with high
|
|
|
4
4
|
license: Complete terms in LICENSE.txt
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
8
|
+
|
|
7
9
|
This skill guides creation of distinctive, production-grade frontend interfaces that avoid generic "AI slop" aesthetics. Implement real working code with exceptional attention to aesthetic details and creative choices.
|
|
8
10
|
|
|
9
11
|
The user provides frontend requirements: a component, page, application, or interface to build. They may include context about the purpose, audience, or technical constraints.
|
|
@@ -3,6 +3,8 @@ name: jira-management
|
|
|
3
3
|
description: "Jira board conventions for tracking feature work — issue naming, labels, priorities, status workflow, and session continuity via Atlassian Rovo MCP. Use when decomposing features into tasks or resuming interrupted sessions."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
7
|
+
|
|
6
8
|
# Task Management with Jira
|
|
7
9
|
|
|
8
10
|
Conventions for tracking feature work on Jira via the Atlassian Rovo MCP server. For project-specific project keys, workflow state IDs, and board configuration, see [jira-config.md](../../customizations/project/jira-config.md).
|
|
@@ -3,6 +3,8 @@ name: memory-merger
|
|
|
3
3
|
description: "Protocol for graduating mature lessons from LESSONS-LEARNED.md into permanent instruction and skill files. Closes the self-improvement loop by codifying validated knowledge at the source level."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
7
|
+
|
|
6
8
|
# Skill: Memory Merger
|
|
7
9
|
|
|
8
10
|
This skill automates the final step of the self-improvement cycle: promoting validated lessons into the instruction and skill files where they have structural, permanent impact.
|
|
@@ -3,6 +3,8 @@ name: nextjs-patterns
|
|
|
3
3
|
description: "Next.js App Router best practices for server/client components, routing, API routes, and project structure. Use when creating or modifying Next.js pages, layouts, route handlers, or Server Actions."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
7
|
+
|
|
6
8
|
# Next.js Patterns (2025)
|
|
7
9
|
|
|
8
10
|
## Project Structure
|
|
@@ -3,6 +3,8 @@ name: nx-workspace
|
|
|
3
3
|
description: "NX monorepo commands, conventions, code generation, and task running patterns. Use when running builds, tests, linting, code generation, or any development commands."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
7
|
+
|
|
6
8
|
# NX Workspace
|
|
7
9
|
|
|
8
10
|
## Commands
|
|
@@ -3,6 +3,8 @@ name: panel-majority-vote
|
|
|
3
3
|
description: "Run 3 isolated reviewer sub-agents against the same question and decide PASS/BLOCK by majority vote (2/3 wins). Use when deterministic verification is insufficient."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
7
|
+
|
|
6
8
|
# Skill: Panel majority vote (3 reviewers)
|
|
7
9
|
|
|
8
10
|
Use this skill when deterministic verification is unavailable and you need a panel to decide PASS/BLOCK for a single question against a declared artifact scope.
|
|
@@ -3,6 +3,8 @@ name: performance-optimization
|
|
|
3
3
|
description: "Frontend and backend performance optimization patterns including rendering, asset optimization, JavaScript performance, caching, profiling, and code review checklist. Use when optimizing components, reviewing code for performance, or analyzing bundle size and Core Web Vitals."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
7
|
+
|
|
6
8
|
# Performance Optimization
|
|
7
9
|
|
|
8
10
|
## General Principles
|
|
@@ -3,6 +3,8 @@ name: react-development
|
|
|
3
3
|
description: "React development standards for functional components, hooks, TypeScript integration, state management, styling with CSS Modules/Sass, and testing patterns. Use when creating or modifying React components, custom hooks, or component tests."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
7
|
+
|
|
6
8
|
# React Development Standards
|
|
7
9
|
|
|
8
10
|
Modern React patterns following the official React documentation at https://react.dev.
|
|
@@ -3,6 +3,8 @@ name: sanity-cms
|
|
|
3
3
|
description: "Sanity CMS development rules, GROQ query patterns, and content management best practices. Use when working with Sanity schemas, writing GROQ queries, modifying content models, or managing CMS configuration."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
7
|
+
|
|
6
8
|
# Sanity CMS
|
|
7
9
|
|
|
8
10
|
Generic Sanity CMS development methodology. For project-specific configuration, schemas, plugins, document types, and GROQ examples, see [sanity-config.md](../../customizations/stack/sanity-config.md).
|
|
@@ -3,6 +3,8 @@ name: security-hardening
|
|
|
3
3
|
description: "Security architecture including authentication, authorization, RLS policies, security headers, CSP, input validation, API security, and OAuth patterns. Use when implementing auth flows, writing RLS policies, configuring security headers, validating inputs, or auditing security."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
7
|
+
|
|
6
8
|
# Security Hardening
|
|
7
9
|
|
|
8
10
|
## Security Architecture
|
|
@@ -3,6 +3,8 @@ name: self-improvement
|
|
|
3
3
|
description: "Protocol for reading and updating the lessons-learned knowledge base. MUST be followed by ALL agents — read lessons before work, write lessons after retries. This makes the agent team self-improving across sessions."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
7
|
+
|
|
6
8
|
# Self-Improvement Protocol
|
|
7
9
|
|
|
8
10
|
This skill defines how agents learn from mistakes and share knowledge so the same pitfalls are never repeated.
|
|
@@ -3,6 +3,8 @@ name: seo-patterns
|
|
|
3
3
|
description: "Technical SEO patterns for meta tags, structured data, sitemaps, URL strategy, and rendering. Use when optimizing pages for search engines or implementing SEO features."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
7
|
+
|
|
6
8
|
# SEO Patterns
|
|
7
9
|
|
|
8
10
|
## Meta Tags & Open Graph
|
|
@@ -3,6 +3,8 @@ name: session-checkpoints
|
|
|
3
3
|
description: "Protocol for saving and restoring session state across agent sessions. Enables replay, fork, and resume of interrupted work — inspired by Sandcastle Run Time Machine."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
7
|
+
|
|
6
8
|
# Skill: Session Checkpoints
|
|
7
9
|
|
|
8
10
|
Use this skill when working on multi-session features or when a session may be interrupted. Checkpoints allow any future session to resume work without re-analyzing the entire codebase.
|
|
@@ -3,6 +3,8 @@ name: slack-notifications
|
|
|
3
3
|
description: "Slack MCP integration for agent-to-human notifications and bi-directional communication. Use when agents need to post progress updates, request approvals, or read user responses via Slack channels and threads."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
7
|
+
|
|
6
8
|
# Slack Notifications
|
|
7
9
|
|
|
8
10
|
Agent communication patterns via the Slack MCP server. Enables agents to post progress updates, request human approvals, and read responses — all through Slack channels and threads.
|
|
@@ -3,6 +3,8 @@ name: strapi-cms
|
|
|
3
3
|
description: "Strapi CMS development patterns, REST/GraphQL API usage, content type building, plugin development, and deployment best practices. Use when working with Strapi content types, controllers, services, or plugins."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
7
|
+
|
|
6
8
|
# Strapi CMS
|
|
7
9
|
|
|
8
10
|
Generic Strapi CMS development methodology. For project-specific configuration, content types, and deployment details, see [cms-config.md](../../customizations/stack/cms-config.md).
|
|
@@ -3,6 +3,8 @@ name: supabase-database
|
|
|
3
3
|
description: "Supabase database migration rules, RLS policy patterns, and auth integration best practices. Use when designing database tables, writing migrations, configuring RLS policies, implementing auth, or managing user roles."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
7
|
+
|
|
6
8
|
# Supabase Database
|
|
7
9
|
|
|
8
10
|
Generic Supabase development methodology. For project-specific schema, roles, migration history, auth flow, and key files, see [supabase-config.md](../../customizations/stack/supabase-config.md).
|
|
@@ -3,6 +3,8 @@ name: task-management
|
|
|
3
3
|
description: "Linear board conventions for tracking feature work — issue naming, labels, priorities, status workflow, and session continuity. Use when decomposing features into tasks or resuming interrupted sessions."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
7
|
+
|
|
6
8
|
# Task Management with Linear
|
|
7
9
|
|
|
8
10
|
Conventions for tracking feature work on the Linear board via MCP tools. For project-specific team ID, workflow state UUIDs, and label UUIDs, see [linear-config.md](../../customizations/project/linear-config.md).
|
|
@@ -3,6 +3,8 @@ name: team-lead-reference
|
|
|
3
3
|
description: "Reference data for Team Lead orchestration — model routing, pre-delegation checks, cost tracking template, and DLQ format. Load when starting a delegation session."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
7
|
+
|
|
6
8
|
# Team Lead Reference
|
|
7
9
|
|
|
8
10
|
For the specialist agent registry and model assignments, see [agent-registry.md](../../customizations/agents/agent-registry.md).
|
|
@@ -3,6 +3,8 @@ name: teams-notifications
|
|
|
3
3
|
description: "Microsoft Teams MCP integration for agent-to-human notifications and bi-directional communication. Use when agents need to post progress updates, request approvals, or read user responses via Teams channels and chats."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
7
|
+
|
|
6
8
|
# Teams Notifications
|
|
7
9
|
|
|
8
10
|
Agent communication patterns via the Microsoft Teams MCP server (Microsoft Agent 365). Enables agents to post progress updates, request human approvals, and read responses — all through Teams channels and chats.
|
|
@@ -3,6 +3,8 @@ name: testing-workflow
|
|
|
3
3
|
description: "Comprehensive testing workflow including test planning, unit/integration/E2E testing patterns, coverage requirements, and common testing mistakes. Use when writing tests, planning test strategies, or validating feature completeness."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
7
|
+
|
|
6
8
|
# Testing Workflow
|
|
7
9
|
|
|
8
10
|
## Core Principles
|
|
@@ -60,7 +62,7 @@ Before implementing any feature, create a plan covering:
|
|
|
60
62
|
|
|
61
63
|
### 6. Responsive Breakpoint Tests (MANDATORY for UI changes)
|
|
62
64
|
|
|
63
|
-
**Every UI feature must be tested at all
|
|
65
|
+
**Every UI feature must be tested at all responsive breakpoints** defined in your project's testing config. Most layout bugs only surface at smaller viewports.
|
|
64
66
|
|
|
65
67
|
> **Detailed breakpoint definitions, resize commands, and per-breakpoint checklists:** See the **browser-testing** skill. The **validation-gates** skill (Gate 3) defines the mandatory testing protocol.
|
|
66
68
|
|
|
@@ -119,7 +121,7 @@ After completing any feature:
|
|
|
119
121
|
- [ ] Verified data changes match expectations
|
|
120
122
|
- [ ] Checked edge cases
|
|
121
123
|
- [ ] Confirmed empty states display correctly
|
|
122
|
-
- [ ] **Tested at
|
|
124
|
+
- [ ] **Tested at all project-defined responsive breakpoints**
|
|
123
125
|
- [ ] **No horizontal overflow or layout breakage at any breakpoint**
|
|
124
126
|
- [ ] Taken screenshots of key scenarios
|
|
125
127
|
- [ ] Verified URL parameters are correct
|
|
@@ -3,6 +3,8 @@ name: validation-gates
|
|
|
3
3
|
description: "Shared validation gates for all orchestration workflows — deterministic checks, browser testing, cache management, regression checks. Referenced by prompt templates to maintain single source of truth."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
<!-- ⚠️ This file is managed by OpenCastle. Edits will be overwritten on update. Customize in the customizations/ directory instead. -->
|
|
7
|
+
|
|
6
8
|
# Validation Gates
|
|
7
9
|
|
|
8
10
|
Canonical reference for validation gates shared across all orchestration workflows. Prompt templates reference this skill to avoid duplication.
|
|
@@ -56,11 +58,11 @@ Run these commands before starting the dev server for browser testing.
|
|
|
56
58
|
2. **Navigate to affected pages** — Verify the new feature renders correctly
|
|
57
59
|
3. **Verify SPECIFIC features** — Check every feature listed in the acceptance criteria. If the criteria say "icons, groups, and AND/OR toggle", you must see all three in the browser
|
|
58
60
|
4. **Test interactions** — Click buttons, fill forms, toggle filters, submit data
|
|
59
|
-
5. **Test responsive** — Resize to
|
|
61
|
+
5. **Test responsive** — Resize to each breakpoint defined in your project's testing config
|
|
60
62
|
6. **Test edge cases** — Empty states, error states, loading states, long content
|
|
61
63
|
7. **Screenshot evidence (REQUIRED)** — Take screenshots of key states. These are mandatory proof
|
|
62
64
|
|
|
63
|
-
> **Anti-pattern:** Testing only at desktop width and assuming
|
|
65
|
+
> **Anti-pattern:** Testing only at desktop width and assuming responsive classes work. They can be wrong — always verify at all defined breakpoints.
|
|
64
66
|
|
|
65
67
|
Load the **browser-testing** skill for Chrome MCP commands, breakpoint details, and reporting format.
|
|
66
68
|
|
package/dist/cli/diff.d.ts
DELETED
package/dist/cli/diff.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/cli/diff.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE5C,wBAA8B,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAsCzE"}
|
package/dist/cli/diff.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { resolve } from 'node:path';
|
|
2
|
-
import { readFile } from 'node:fs/promises';
|
|
3
|
-
import { readManifest } from './manifest.js';
|
|
4
|
-
export default async function diff({ pkgRoot }) {
|
|
5
|
-
const projectRoot = process.cwd();
|
|
6
|
-
const manifest = await readManifest(projectRoot);
|
|
7
|
-
if (!manifest) {
|
|
8
|
-
console.error(' ✗ No OpenCastle installation found. Run "npx opencastle init" first.');
|
|
9
|
-
process.exit(1);
|
|
10
|
-
}
|
|
11
|
-
const pkg = JSON.parse(await readFile(resolve(pkgRoot, 'package.json'), 'utf8'));
|
|
12
|
-
if (manifest.version === pkg.version) {
|
|
13
|
-
console.log(` No changes — installed version matches package version (v${pkg.version}).`);
|
|
14
|
-
return;
|
|
15
|
-
}
|
|
16
|
-
console.log(`\n 🏰 OpenCastle diff: v${manifest.version} → v${pkg.version}\n`);
|
|
17
|
-
console.log(' Framework files that would be updated:\n');
|
|
18
|
-
for (const path of manifest.managedPaths?.framework ?? []) {
|
|
19
|
-
console.log(` ↻ ${path}`);
|
|
20
|
-
}
|
|
21
|
-
console.log('\n Customization files that would be preserved:\n');
|
|
22
|
-
for (const path of manifest.managedPaths?.customizable ?? []) {
|
|
23
|
-
console.log(` ✓ ${path}`);
|
|
24
|
-
}
|
|
25
|
-
console.log(`\n Run "npx opencastle update" to apply.\n`);
|
|
26
|
-
}
|
|
27
|
-
//# sourceMappingURL=diff.js.map
|
package/dist/cli/diff.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/cli/diff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAG5C,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,IAAI,CAAC,EAAE,OAAO,EAAc;IACxD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IAEjC,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,CAAA;IAChD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CACX,wEAAwE,CACzE,CAAA;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,MAAM,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAClC,CAAA;IAExB,IAAI,QAAQ,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CACT,8DAA8D,GAAG,CAAC,OAAO,IAAI,CAC9E,CAAA;QACD,OAAM;IACR,CAAC;IAED,OAAO,CAAC,GAAG,CACT,4BAA4B,QAAQ,CAAC,OAAO,OAAO,GAAG,CAAC,OAAO,IAAI,CACnE,CAAA;IACD,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAA;IAEzD,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,YAAY,EAAE,SAAS,IAAI,EAAE,EAAE,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAA;IAC9B,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAA;IAEjE,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,YAAY,EAAE,YAAY,IAAI,EAAE,EAAE,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAA;IAC9B,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAA;AAC5D,CAAC"}
|
package/src/cli/diff.ts
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { resolve } from 'node:path'
|
|
2
|
-
import { readFile } from 'node:fs/promises'
|
|
3
|
-
import { readManifest } from './manifest.js'
|
|
4
|
-
import type { CliContext } from './types.js'
|
|
5
|
-
|
|
6
|
-
export default async function diff({ pkgRoot }: CliContext): Promise<void> {
|
|
7
|
-
const projectRoot = process.cwd()
|
|
8
|
-
|
|
9
|
-
const manifest = await readManifest(projectRoot)
|
|
10
|
-
if (!manifest) {
|
|
11
|
-
console.error(
|
|
12
|
-
' ✗ No OpenCastle installation found. Run "npx opencastle init" first.'
|
|
13
|
-
)
|
|
14
|
-
process.exit(1)
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
const pkg = JSON.parse(
|
|
18
|
-
await readFile(resolve(pkgRoot, 'package.json'), 'utf8')
|
|
19
|
-
) as { version: string }
|
|
20
|
-
|
|
21
|
-
if (manifest.version === pkg.version) {
|
|
22
|
-
console.log(
|
|
23
|
-
` No changes — installed version matches package version (v${pkg.version}).`
|
|
24
|
-
)
|
|
25
|
-
return
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
console.log(
|
|
29
|
-
`\n 🏰 OpenCastle diff: v${manifest.version} → v${pkg.version}\n`
|
|
30
|
-
)
|
|
31
|
-
console.log(' Framework files that would be updated:\n')
|
|
32
|
-
|
|
33
|
-
for (const path of manifest.managedPaths?.framework ?? []) {
|
|
34
|
-
console.log(` ↻ ${path}`)
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
console.log('\n Customization files that would be preserved:\n')
|
|
38
|
-
|
|
39
|
-
for (const path of manifest.managedPaths?.customizable ?? []) {
|
|
40
|
-
console.log(` ✓ ${path}`)
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
console.log(`\n Run "npx opencastle update" to apply.\n`)
|
|
44
|
-
}
|