output-format
Beautiful ASCII art output formatting guidelines for all plugin commands
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Beautiful ASCII art output formatting guidelines for all plugin commands
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | output-format |
| description | Beautiful ASCII art output formatting guidelines for all plugin commands |
All plugin outputs should be visually clear and beautiful. Choose the format that best fits the content.
When generating output for any OAS plugin command, Claude MUST:
This is a REFERENCE skill - use it to format outputs from other commands.
Content Type → Best Format
─────────────────────────────────────
Key-Value pairs → Table or Aligned
Process/Steps → Flow Diagram
Hierarchy/Structure → Tree
Before/After → Comparison
Status/Progress → Progress Bar
Summary → Box
List with status → Checklist
Timeline → Timeline
For structured key-value or multi-column data:
┌──────────────┬─────────────────────────────────────┐
│ Item │ Content │
├──────────────┼─────────────────────────────────────┤
│ File │ src/api/user-api.ts │
│ Location │ getUserById() function (line 45-52) │
│ Reason │ Response type: email field added │
└──────────────┴─────────────────────────────────────┘
Simple aligned format (for fewer columns):
File: src/api/user-api.ts
Location: getUserById() function (line 45-52)
Reason: Response type: email field added
Horizontal flow:
┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐
│ Fetch │───▶│ Parse │───▶│ Diff │───▶│ Generate│
│ Spec │ │ Schema │ │ Compare │ │ Code │
└─────────┘ └─────────┘ └─────────┘ └─────────┘
Vertical flow with details:
┌──────────────────────────────┐
│ 1. Fetch OpenAPI Spec │
│ GET /openapi.json │
└──────────────┬───────────────┘
│
▼
┌──────────────────────────────┐
│ 2. Compare with Cache │
│ Hash: abc123 → def456 │
└──────────────┬───────────────┘
│
┌───────┴───────┐
▼ ▼
┌──────────┐ ┌──────────┐
│ Changed │ │ No Change│
│ Continue │ │ Done │
└────┬─────┘ └──────────┘
│
▼
┌──────────────────────────────┐
│ 3. Generate Code │
└──────────────────────────────┘
Decision flow:
┌─────────────┐
│ Cache exists?│
└──────┬──────┘
│
┌────────────┼────────────┐
▼ │ ▼
[ Yes ] │ [ No ]
│ │ │
▼ │ ▼
┌─────────────────┐ │ ┌─────────────────┐
│ Compare hash │ │ │ Full fetch │
└────────┬────────┘ │ └────────┬────────┘
│ │ │
└─────────────┴─────────────┘
│
▼
┌─────────────┐
│ Output │
└─────────────┘
File tree:
src/entities/user/
├── api/
│ ├── user-api.ts ← 8 functions
│ ├── user-api-paths.ts ← 8 paths
│ └── user-queries.ts ← 8 hooks
├── model/
│ └── user-types.ts ← 12 types
└── index.ts
Nested structure with status:
📦 API Coverage
│
├── ✅ user (100%)
│ ├── getUser
│ ├── updateUser
│ └── deleteUser
│
├── ⚠️ workspace (75%)
│ ├── ✅ getWorkspace
│ ├── ✅ createWorkspace
│ ├── ❌ inviteUser ← missing
│ └── ✅ deleteWorkspace
│
└── ❌ billing (0%)
├── ❌ getPlans
├── ❌ subscribe
└── ❌ cancelSubscription
Side-by-side diff:
┌─────────────────────────────┬─────────────────────────────┐
│ Before │ After │
├─────────────────────────────┼─────────────────────────────┤
│ interface User { │ interface User { │
│ id: string; │ id: string; │
│ name: string; │ name: string; │
│ │ + email: string; │
│ │ + avatar?: string; │
│ } │ } │
└─────────────────────────────┴─────────────────────────────┘
Inline diff:
GET /users/{id}
Response: UserResponse
+ email: string (added)
+ avatar?: string (added, optional)
~ name: string → string | null (changed to nullable)
- legacy_id: number (removed)
Progress bar:
Syncing API endpoints...
user ████████████████████ 100% ✅
workspace ████████████░░░░░░░░ 60% ⏳
billing ░░░░░░░░░░░░░░░░░░░░ 0% ⏸️
Overall: ██████████████░░░░░░ 70% (21/30 endpoints)
Status summary:
╔═══════════════════════════════════════════════╗
║ Sync Complete ║
╠═══════════════════════════════════════════════╣
║ ✅ Generated: 24 files ║
║ ⚠️ Warnings: 3 (nullable handling) ║
║ ❌ Errors: 0 ║
║ ⏱️ Duration: 2.3s ║
╚═══════════════════════════════════════════════╝
Simple header:
═══════════════════════════════════════════════════
📊 API Diff Report
═══════════════════════════════════════════════════
Info box:
┌─────────────────────────────────────────────────┐
│ 💡 TIP │
│ │
│ Use --force to regenerate all endpoints, │
│ ignoring cache. │
└─────────────────────────────────────────────────┘
Warning box:
⚠️ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Breaking Changes Detected!
3 endpoints removed:
- DELETE /users/{id}/sessions
- GET /legacy/auth
- POST /v1/login
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Task list:
📋 Sync Checklist
[✓] Fetch OpenAPI spec
[✓] Parse endpoints (42 found)
[✓] Compare with existing code
[ ] Generate user-api.ts
[ ] Generate workspace-api.ts
[ ] Update type definitions
Validation result:
🔍 Validation Results
✅ PASS Type safety All types match spec
✅ PASS Path coverage 42/42 endpoints covered
⚠️ WARN Nullable handling 3 fields need attention
❌ FAIL Response format getUserById() returns wrong type
❌ FAIL Missing endpoint POST /users not implemented
📅 Sync History
Jan 13, 10:30 ●───── Full sync (42 endpoints)
│
Jan 12, 15:22 ●───── Partial sync: +2 workspace endpoints
│
Jan 10, 09:15 ●───── Initial setup
│
Jan 08, 14:00 ○───── Failed: spec unreachable
═══════════════════════════════════════════════════════════════
🔍 Impact Analysis Report
═══════════════════════════════════════════════════════════════
Spec Change: GET /users/{id} response updated
+ email: string
+ preferences: UserPreferences
┌─────────────────────────────────────────────────────────────┐
│ Affected Files │
├───────────────────────────────┬─────────────────────────────┤
│ File │ Required Changes │
├───────────────────────────────┼─────────────────────────────┤
│ src/api/user-api.ts:45 │ Update return type │
│ src/types/user.ts:12 │ Add email, preferences │
│ src/hooks/useUser.ts:23 │ No change (auto-inferred) │
└───────────────────────────────┴─────────────────────────────┘
Code Changes Required:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📁 src/types/user.ts
interface User {
id: string;
name: string;
+ email: string; // ← Add
+ preferences: UserPreferences; // ← Add
}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Next Steps:
1. Run /oas:sync --tag=user to auto-generate
2. Or manually update the files above
Box Drawing:
┌ ┐ └ ┘ ├ ┤ ┬ ┴ ┼ │ ─
╔ ╗ ╚ ╝ ╠ ╣ ╦ ╩ ╬ ║ ═
Arrows:
→ ← ↑ ↓ ↔ ↕
▶ ◀ ▲ ▼
───▶ ◀─── │
▼
Progress:
█ ░ ▓ ▒
Status Icons:
✅ ❌ ⚠️ ⏳ ⏸️ 💡 📦 📋 🔍 📊 📁 🔌 📝 🏷️
Bullets:
• ○ ● ◦ ▪ ▫
Lines:
─ ━ ═ ┄ ┅ ┈ ┉
Check and install OpenAPI Sync MCP server dependency
Best practice templates for API layer scaffolding
Detect and analyze FSD layer structure in a project
Generate FSD-compliant slice boilerplate with pattern matching
Check FSD import boundary rules and detect violations
Manage analysis cache for incremental FSD validation