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 المهني
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
| 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:
─ ━ ═ ┄ ┅ ┈ ┉