release-local
Create a local test release of TeensyROM Web for quick validation before official release
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Create a local test release of TeensyROM Web for quick validation before official release
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Visual UI verification workflow using Chrome DevTools MCP. Use when validating component rendering, CSS/styling changes, layout regressions, interactive UI behavior, screenshots, and post-change visual checks. Use this skill when the user is having trouble with styling or UI work or is trying to change the visual appearance of the app.
Create new Agent Skills for GitHub Copilot from prompts or by duplicating this template. Use when asked to "create a skill", "make a new skill", "scaffold a skill", or when building specialized AI capabilities with bundled resources. Generates SKILL.md files with proper frontmatter, directory structure, and optional scripts/references/assets folders.
TeensyROM .NET backend domain knowledge — architecture, MediatR CQRS, serial protocol, storage systems, RadEndpoints, and testing patterns. Use when working on backend code, adding endpoints, modifying serial commands, updating storage/caching logic, writing backend tests, or understanding backend architecture. Covers .NET 9 API, pipeline behaviors, state machines, and multi-device orchestration.
TeensyROM Angular 19 frontend domain knowledge — Clean Architecture, Nx monorepo, NgRx Signal Store, component patterns, testing standards, and coding conventions. Use when working on Angular components, stores, services, infrastructure, features, UI components, writing frontend tests, or understanding frontend architecture. Covers dependency injection, layer boundaries, ESLint enforcement, and modern Angular patterns.
Create custom GitHub Copilot agents (.agent.md files) with interactive configuration. Use when asked to "create an agent", "make an agent", "new agent", "scaffold an agent", "build a custom agent", or when building specialized AI personas for VS Code. Guides users through every frontmatter option with ask_questions tool, then generates a complete .agent.md file.
Executes a pre-planned subagent orchestration project by handing off tasks to specialized worker agents, monitoring reports, and adapting the plan. Use when asked to "execute a plan", "run subagents", "start execution", "hand off tasks", or when given a project name to execute against an existing docs/projects/<PROJECT-NAME>/ plan folder.
| name | release-local |
| description | Create a local test release of TeensyROM Web for quick validation before official release |
| user-invocable | true |
| disable-model-invocation | true |
This skill creates a local test release of TeensyROM Web without version bumping, git tagging, or triggering CI/CD. Use this for quick validation and testing before creating an official GitHub release.
release skill instead)Command:
pnpm run build:frontend
What it does:
nx build teensyrom-ui --configuration=production --skip-nx-cacheapps/api/src/TeensyRom.Api/wwwroot/ (preserves .gitkeep)Expected output:
═══════════════════════════════════════════════════
TeensyROM Frontend Build & Copy
═══════════════════════════════════════════════════
📦 Building Angular frontend (production)...
✅ Build completed successfully
🔍 Verifying build output...
Found 13 files in build output
🧹 Cleaning wwwroot folder...
Cleaned existing files (preserved .gitkeep)
📋 Copying files to wwwroot...
Copied 13 files to wwwroot
Common Issues:
connectionType not found: Old code referencing removed domain properties (see Troubleshooting section)pnpm install to restore dependenciesCommand:
dotnet publish apps/api/src/TeensyRom.Api/TeensyRom.Api.csproj \
-c Release \
-r win-x64 \
--self-contained true \
-p:PublishSingleFile=true \
-p:SkipBuildFrontend=true \
-p:OpenApiGenerateDocuments=false \
-p:OpenApiGenerateDocumentsOnBuild=false \
-o ./publish/win-x64
Parameters explained:
-c Release - Release configuration (optimized)-r win-x64 - Target Windows 64-bit--self-contained true - Bundle .NET runtime (no SDK needed to run)-p:PublishSingleFile=true - Create single executable-p:SkipBuildFrontend=true - Don't rebuild frontend (already built in Step 1)-p:OpenApiGenerateDocuments=false - Skip OpenAPI build-time generation-p:OpenApiGenerateDocumentsOnBuild=false - Prevent platform-specific binary execution-o ./publish/win-x64 - Output directoryExpected output:
Restore complete (3.0s)
TeensyRom.Core succeeded (5.3s)
TeensyRom.Core.Serial succeeded (1.6s)
TeensyRom.Core.Storage succeeded (1.5s)
TeensyRom.Core.Device succeeded (1.3s)
TeensyRom.Api succeeded (45.0s)
Build succeeded with 23 warning(s) in 58.7s
Output structure:
publish/win-x64/
├── TeensyRom.Api.exe ← Single executable (~71 MB)
├── TeensyRom.Api.pdb ← Debug symbols
├── wwwroot/ ← Angular frontend (50+ files)
├── Assets/ ← System config & database files
├── api-spec/ ← OpenAPI schema
├── appsettings.json ← Runtime configuration
└── ... (other support files)
Run the executable:
cd publish/win-x64
.\TeensyRom.Api.exe
Verify functionality:
http://localhost:5000http://localhost:5000/api/deviceshttp://localhost:5000/scalar/v1Common Issues:
Always provide the user with:
📍 Full path to executable:
c:\dev\src\TeensyROM-Web\src\publish\win-x64\TeensyRom.Api.exe
Include:
dotnet publish apps/api/src/TeensyRom.Api/TeensyRom.Api.csproj \
-c Release \
-r osx-x64 \
--self-contained true \
-p:PublishSingleFile=true \
-p:SkipBuildFrontend=true \
-p:OpenApiGenerateDocuments=false \
-p:OpenApiGenerateDocumentsOnBuild=false \
-o ./publish/osx-x64
# Make executable
chmod +x ./publish/osx-x64/TeensyRom.Api
dotnet publish apps/api/src/TeensyRom.Api/TeensyRom.Api.csproj \
-c Release \
-r osx-arm64 \
--self-contained true \
-p:PublishSingleFile=true \
-p:SkipBuildFrontend=true \
-p:OpenApiGenerateDocuments=false \
-p:OpenApiGenerateDocumentsOnBuild=false \
-o ./publish/osx-arm64
chmod +x ./publish/osx-arm64/TeensyRom.Api
dotnet publish apps/api/src/TeensyRom.Api/TeensyRom.Api.csproj \
-c Release \
-r linux-x64 \
--self-contained true \
-p:PublishSingleFile=true \
-p:SkipBuildFrontend=true \
-p:OpenApiGenerateDocuments=false \
-p:OpenApiGenerateDocumentsOnBuild=false \
-o ./publish/linux-x64
chmod +x ./publish/linux-x64/TeensyRom.Api
Note: Cross-platform builds work from any OS, but testing requires the target OS.
Cause: Stale code referencing removed/renamed domain properties
Example: connectionType property removed from frontend Device model (lives on backend only)
Fix: Search and remove obsolete property references:
# Find all usages
grep -r "connectionType" libs/
# Common locations to check:
- libs/features/*/src/**/*.html (template bindings)
- libs/features/*/src/**/*.spec.ts (test fixtures)
- libs/application/src/**/*.spec.ts (mock data)
- libs/infrastructure/src/**/domain.mapper.ts (DTO mappings)
Pattern for fixes:
ConnectionType enum)Cause: Reading Assembly.Location in single-file publish
Fix: Replace with AppContext.BaseDirectory:
// ❌ Don't use
var path = Assembly.GetExecutingAssembly().Location;
// ✅ Use instead
var path = AppContext.BaseDirectory;
Symptoms:
/ routeFix:
# Verify wwwroot populated
ls apps/api/src/TeensyRom.Api/wwwroot/
# Should see: index.html, *.js, *.css, images, etc.
# If empty, rebuild frontend
pnpm run build:frontend
# Republish backend
dotnet publish apps/api/src/TeensyRom.Api/TeensyRom.Api.csproj \
-c Release -r win-x64 --self-contained true \
-p:PublishSingleFile=true -p:SkipBuildFrontend=true \
-o ./publish/win-x64
Expected size: ~70-75 MB for Windows x64
Causes:
.pdb files are separate)Not a problem unless exceeding 150+ MB
Windows (.zip):
cd publish/win-x64
Compress-Archive -Path * -DestinationPath ../TeensyROM-Web-local-win-x64.zip
macOS/Linux (.tar.gz):
cd publish/osx-x64
tar -czvf ../TeensyROM-Web-local-osx-x64.tar.gz .
After successful local testing:
When ready for official release:
Use the release skill to version bump, tag, and create GitHub Release with all 4 platforms.
release skill (.claude/skills/release/SKILL.md)