[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6EQCDQWWWM4HERJT44RWQRE":3,"skill-same:01M6EQCDQWWWM4HERJT44RWQRE":74},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":40,"linkOnly":41,"markdownContent":42,"markdownBody":43,"frontMatter":44,"refName":45,"commitSha":46,"skillDirectory":47,"forksCount":48,"repositoryHtmlUrl":49,"repositoryHomepageUrl":50,"ownerHtmlUrl":51,"ownerBlogUrl":6,"ownerDescription":52,"updatedAt":53,"install":54,"resources":67},"01M6EQCDQWWWM4HERJT44RWQRE","architectural-analysis",null,"Deep architectural audit focused on finding dead code, duplicated functionality, architectural anti-patterns, type confusion, and code smells. Use when user asks for architectural analysis, find dead code, identify duplication, or assess codebase health.","ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",67,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fcygnusfear\u002Farchitectural-analysis\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39],"analysis","architectural analysis","code","audit","health","dead code","find","user","use","anti-patterns","codebase health","patterns","duplication","deep","type","assess","2026-11-10 10:12:30",false,"---\nname: architectural-analysis\ndescription: Deep architectural audit focused on finding dead code, duplicated functionality, architectural anti-patterns, type confusion, and code smells. Use when user asks for architectural analysis, find dead code, identify duplication, or assess codebase health.\n---\n\n# Architectural Analysis\n\n## Instructions\n\nPerform comprehensive architectural audit focused on structural issues, dead code, duplication, and systemic problems.\n\n### Phase 1: Discovery & Planning\n\n#### Step 1: Map Codebase Structure\n```bash\n# Get directory structure\nfind . -type d -not -path \"*\u002Fnode_modules\u002F*\" -not -path \"*\u002F.git\u002F*\"\n\n# Count files by type\nfind . -name \"*.ts\" -o -name \"*.tsx\" -o -name \"*.js\" -o -name \"*.jsx\" | wc -l\n```\n\n#### Step 2: Identify Entry Points\n- Main application entry (`index.ts`, `main.ts`, `app.ts`)\n- API routes\u002Fcontrollers\n- Public exports (`index.ts` files)\n- CLI entry points\n- Test files\n\n#### Step 3: Create Comprehensive File List\nUse Glob to find all source files.\nCreate todo list with one item per file to analyze.\n\n### Phase 2: Dead Code Detection\n\nFor EACH file in the todo list:\n\n#### Step 1: Identify Exports\n- What does this file export?\n- Are exports functions, classes, types, constants?\n- Is anything exported at all?\n\n#### Step 2: Search for Usage\n\nFor each export, search if it's imported\u002Fused anywhere:\n```bash\n# Search for imports of this export\ngrep -r \"import.*ExportName\" . --include=\"*.ts\" --include=\"*.tsx\"\ngrep -r \"from.*filename\" . --include=\"*.ts\" --include=\"*.tsx\"\n\n# Search for direct usage\ngrep -r \"ExportName\" . --include=\"*.ts\" --include=\"*.tsx\"\n```\n\n#### Step 3: Categorize Code\n\n**Dead Code** (mark for removal):\n- Exported but never imported\n- Functions defined but never called\n- Classes instantiated nowhere\n- Types defined but never used\n- Constants defined but never referenced\n- Entire files with no imports from other files\n\n**Possibly Dead** (needs verification):\n- Only used in commented-out code\n- Only used in dead code\n- Only used in other unused exports\n- Used only in tests for deprecated features\n\n**Internal Dead Code**:\n- Functions defined in file but never called (not exported)\n- Variables assigned but never read\n- Parameters accepted but never used\n\n#### Step 4: Check for False Positives\n\nNot dead if:\n- Used in tests (may be public API)\n- Dynamically imported\u002Frequired\n- Used via reflection\u002Fstring references\n- Part of public API (even if not used internally)\n- Framework hooks (lifecycle methods, callbacks)\n- Accessed via `window` or global scope\n\n#### Step 5: Record Findings\n```\nFile: path\u002Fto\u002Ffile.ts\nStatus: [DEAD|POSSIBLY_DEAD|USED]\nExports: [list]\nDead Exports:\n  - ExportName - No imports found\n  - AnotherExport - Only used in test for deprecated feature\nConfidence: [HIGH|MEDIUM|LOW]\n```\n\n#### Step 6: Mark Complete\nUpdate todo list.\n\n### Phase 3: Duplication Detection\n\n#### Step 1: Identify Duplicated Logic Patterns\n\nSearch for common patterns that suggest duplication:\n- Similar function names across files\n- Repeated code blocks\n- Multiple implementations of same concept\n\n**Manual Pattern Recognition**:\n- Read files in same directory\n- Look for suspiciously similar code\n- Compare utilities\u002Fhelpers across modules\n- Check for copy-pasted blocks\n\n**Grep-Based Detection**:\n```bash\n# Find similar function signatures\ngrep -r \"function validateEmail\" . --include=\"*.ts\"\ngrep -r \"async.*fetch.*api\" . --include=\"*.ts\"\ngrep -r \"export.*UserForm\" . --include=\"*.tsx\"\n```\n\n#### Step 2: Analyze Duplicated Functionality\n\nFor each potential duplication:\n- Read both\u002Fall implementations\n- Are they actually the same logic?\n- Do they handle same cases?\n- Could one replace the other?\n- Are differences intentional or accidental?\n\n#### Step 3: Categorize Duplication\n\n**Exact Duplication** (CRITICAL):\n- Identical or near-identical code in multiple places\n- Copy-pasted functions\n- Duplicated utility functions\n- **Impact**: Bug fixes need multiple updates, maintenance burden\n\n**Similar Logic** (HIGH):\n- Same algorithm, different implementation\n- Slightly different parameter handling\n- Different names, same purpose\n- **Impact**: Inconsistency risk, harder to maintain\n\n**Conceptual Duplication** (MEDIUM):\n- Multiple ways to do the same thing\n- Competing implementations\n- Overlapping utilities\n- **Impact**: Confusion, decision paralysis\n\n**Type Duplication** (HIGH):\n- Same interface\u002Ftype defined multiple times\n- Similar types that should be unified\n- Duplicate constants\u002Fenums\n- **Impact**: Type inconsistency, refactoring difficulty\n\n#### Step 4: Record Duplication\n```\nDuplication Group: Email Validation\nType: Exact Duplication\nInstances:\n  - src\u002Futils\u002Fvalidators.ts:42 - validateEmail()\n  - src\u002Flib\u002Femail.ts:15 - isValidEmail()\n  - src\u002Fcomponents\u002Fforms\u002Fvalidation.ts:67 - checkEmailFormat()\nAnalysis: All three implement same regex check\nRecommendation: Keep utils\u002Fvalidators.ts version, remove others\nImpact: 3 places to update when logic changes\n```\n\n### Phase 4: Architectural Anti-Patterns\n\n#### Step 1: Identify God Objects\u002FClasses\n\nSearch for files that do too much:\n- Files over 500 lines\n- Classes with 10+ methods\n- Files with many responsibilities\n- Modules that import from everywhere\n\n```bash\n# Find large files\nfind . -name \"*.ts\" -exec wc -l {} + | sort -rn | head -20\n```\n\nAnalyze large files:\n- What does this file do?\n- Does it have single responsibility?\n- Should it be split?\n\n#### Step 2: Detect Circular Dependencies\n\nLook for:\n- File A imports from B, B imports from A\n- Circular chains: A → B → C → A\n- Module coupling cycles\n\nUse grep to trace import chains:\n```bash\n# Check what file imports\ngrep \"^import.*from\" src\u002Fservices\u002Fauth.ts\n\n# Check what imports this file\ngrep -r \"from.*auth\" src\u002F --include=\"*.ts\"\n```\n\n#### Step 3: Find Tight Coupling\n\nIdentify:\n- High-level modules depending on low-level modules\n- Business logic depending on infrastructure\n- Core logic depending on framework specifics\n- Modules that import from many other modules\n\n#### Step 4: Spot Layer Violations\n\nCheck architecture layers:\n- Do components import directly from database layer?\n- Do models import from views?\n- Do utilities import from business logic?\n- Is there proper separation of concerns?\n\n#### Step 5: Identify Other Anti-Patterns\n\n**Singleton Abuse**:\n- Global state everywhere\n- Module-level mutable state\n- Static class methods accessing shared state\n\n**Anemic Domain Models**:\n- Data classes with no behavior\n- All logic in services, models just have getters\u002Fsetters\n\n**Shotgun Surgery**:\n- Single feature change requires touching many files\n- Indicates poor cohesion\n\n**Feature Envy**:\n- Methods that use more data from other classes than their own\n\n### Phase 5: Type Issues Analysis\n\n#### Step 1: Find Type Abuse\n\nSearch for problematic type usage:\n```bash\n# Find 'any' usage\ngrep -r \": any\" . --include=\"*.ts\" --include=\"*.tsx\" -n\n\n# Find 'unknown' usage\ngrep -r \": unknown\" . --include=\"*.ts\" -n\n\n# Find type assertions\ngrep -r \"as any\" . --include=\"*.ts\" -n\ngrep -r \"as unknown\" . --include=\"*.ts\" -n\n\n# Find @ts-ignore\ngrep -r \"@ts-ignore\" . --include=\"*.ts\" -n\ngrep -r \"@ts-expect-error\" . --include=\"*.ts\" -n\n```\n\n#### Step 2: Analyze Type Confusion\n\nFor each file with type issues:\n- Why is `any` used?\n- Could proper type be defined?\n- Is type assertion hiding a real type error?\n- Are @ts-ignore comments masking actual problems?\n\n#### Step 3: Find Type Duplication\n\nLook for:\n- Same interface defined in multiple files\n- Similar types that could be unified\n- Types that could extend from common base\n- Constants\u002Fenums duplicated across files\n\n#### Step 4: Identify Missing Types\n\nCheck for:\n- Implicit `any` from missing type annotations\n- Functions without return type\n- Callbacks without proper typing\n- Generic types that should be specific\n\n### Phase 6: Code Smells Detection\n\n#### Step 1: Long Methods\u002FFunctions\n```bash\n# Find functions with many lines\n# (manual inspection of large files)\n```\n\nFlag functions over 50 lines - likely doing too much.\n\n#### Step 2: Long Parameter Lists\n\nSearch for functions with 4+ parameters:\n- Could use object parameter instead?\n- Are parameters related (should be grouped)?\n\n#### Step 3: Complex Conditionals\n\nLook for:\n- Deeply nested if statements (3+ levels)\n- Long boolean expressions\n- Switch statements with 10+ cases\n- Complex ternary operators\n\n#### Step 4: Magic Numbers\u002FStrings\n\nSearch for:\n- Hardcoded numbers with unclear meaning\n- String literals used repeatedly\n- Unexplained constants\n\nShould be named constants.\n\n#### Step 5: Commented-Out Code\n\n```bash\n# Find commented code blocks\ngrep -r \"^[[:space:]]*\u002F\u002F.*function\\|class\\|const\" . --include=\"*.ts\"\n```\n\nCommented code should be deleted (use git history).\n\n#### Step 6: Poor Naming\n\nLook for:\n- Single letter variables (outside loops)\n- Abbreviations without context (`usr`, `msg`, `tmp`)\n- Misleading names\n- Names that don't reflect purpose\n\n### Phase 7: Generate Report\n\nCreate report at `.audits\u002Farchitectural-analysis-[timestamp].md`:\n\n```markdown\n# Architectural Analysis Report\n**Date**: [timestamp]\n**Files Analyzed**: X\n**Dead Code Files**: Y\n**Duplication Groups**: Z\n\n---\n\n## Executive Summary\n- **Dead Code**: X files, Y exports completely unused\n- **Duplicated Functionality**: Z duplication groups\n- **Architectural Anti-Patterns**: W issues\n- **Type Issues**: V problematic usages\n- **Code Smells**: U instances\n\n**Estimated Cleanup**: Remove ~X lines of dead code, consolidate Y duplications\n\n---\n\n## Dead Code\n\n### Completely Dead Files (DELETE)\n| File | Reason | Confidence |\n|------|--------|------------|\n| `src\u002Fold\u002Flegacy-processor.ts` | No imports found | HIGH |\n| `src\u002Futils\u002Funused-helper.ts` | Exported but never used | HIGH |\n| `src\u002Ftemp\u002Ftemp-service.ts` | Temporary file left behind | HIGH |\n\n**Total Lines**: X,XXX lines can be deleted\n\n### Dead Exports (REMOVE)\n| File | Export | Reason |\n|------|--------|--------|\n| `src\u002Futils\u002Fformat.ts` | `formatOldDate()` | Replaced by `formatDate()`, no usage |\n| `src\u002Fservices\u002Fauth.ts` | `oldLogin()` | Deprecated, no usage found |\n\n### Possibly Dead (VERIFY)\n| File | Export | Reason | Verification Needed |\n|------|--------|--------|---------------------|\n| `src\u002Flib\u002Fapi.ts` | `fetchOldApi()` | Only used in commented code | Check if truly deprecated |\n\n### Internal Dead Code\n- `src\u002Fservices\u002Fuser.ts:125` - Private method `_validateLegacy()` never called\n- `src\u002Fcomponents\u002Fform.tsx:89` - Variable `tempData` assigned but never read\n\n---\n\n## Duplicated Functionality\n\n### CRITICAL: Exact Duplicates\n\n#### Duplication Group 1: Email Validation\n**Instances**: 3\n**Files**:\n- `src\u002Futils\u002Fvalidators.ts:42` - `validateEmail(email: string)`\n- `src\u002Flib\u002Femail.ts:15` - `isValidEmail(email: string)`\n- `src\u002Fcomponents\u002Fforms\u002Fvalidation.ts:67` - `checkEmailFormat(email: string)`\n\n**Analysis**: All three use identical regex pattern `\u002F^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\u002F`\n**Lines Duplicated**: ~15 lines × 3 = 45 lines\n**Recommendation**:\n- Keep: `src\u002Futils\u002Fvalidators.ts:validateEmail()`\n- Remove: Other two implementations\n- Update: All imports to use validators version\n\n#### Duplication Group 2: API Error Handling\n**Instances**: 4\n**Files**: [list]\n**Analysis**: [similar]\n\n### HIGH: Similar Logic\n\n#### Duplication Group: Date Formatting\n**Instances**: 2\n**Files**:\n- `src\u002Futils\u002Fdate.ts:30` - `formatDate()` - Uses date-fns\n- `src\u002Flib\u002Fformat.ts:45` - `formatDateTime()` - Uses native Date\n\n**Analysis**: Both format dates but use different libraries\n**Recommendation**: Standardize on date-fns, remove native version\n\n### Type Duplication\n\n#### Type Group: User Interface\n**Instances**: 3\n**Files**:\n- `src\u002Ftypes\u002Fuser.ts` - `User` interface\n- `src\u002Fmodels\u002Fuser.ts` - `UserModel` interface (identical fields)\n- `src\u002Fapi\u002Ftypes.ts` - `UserData` interface (identical fields)\n\n**Recommendation**: Use single `User` type from `src\u002Ftypes\u002Fuser.ts`\n\n---\n\n## Architectural Anti-Patterns\n\n### God Objects\n\n#### `src\u002Fservices\u002Fapplication-manager.ts` (850 lines)\n**Responsibilities**: Database, auth, config, logging, caching, validation\n**Issue**: Violates SRP, does everything\n**Recommendation**: Split into:\n- `database.service.ts`\n- `auth.service.ts`\n- `config.service.ts`\n- `logging.service.ts`\n\n### Circular Dependencies\n\n#### Cycle 1: `auth.ts` ↔ `user.ts`\n- `auth.ts` imports `getUserById` from `user.ts`\n- `user.ts` imports `validateToken` from `auth.ts`\n**Issue**: Creates tight coupling, makes testing hard\n**Recommendation**: Extract shared types to separate file\n\n### Tight Coupling\n\n#### `components\u002FUserForm.tsx` → `services\u002Fdatabase.ts`\n**Issue**: UI component directly importing database layer\n**Recommendation**: Use service layer abstraction\n\n### Layer Violations\n\n#### `models\u002FUser.ts` imports from `components\u002F`\n**Issue**: Model layer should not know about view layer\n**Recommendation**: Remove dependency, pass data via props\n\n---\n\n## Type Issues\n\n### `any` Usage (X instances)\n\n| File | Line | Context | Severity |\n|------|------|---------|----------|\n| `src\u002Fapi\u002Fclient.ts` | 45 | `response: any` | HIGH |\n| `src\u002Futils\u002Fparse.ts` | 23 | `data: any` | HIGH |\n\n**Total `any` usages**: X\n**Recommendation**: Define proper types for all cases\n\n### Type Assertions (Y instances)\n\n| File | Line | Assertion | Issue |\n|------|------|-----------|-------|\n| `src\u002Flib\u002Fapi.ts` | 67 | `as User` | Unsafe cast, no validation |\n| `src\u002Futils\u002Fparse.ts` | 89 | `as unknown as T` | Double cast to bypass types |\n\n**Issue**: Type safety bypassed, runtime errors possible\n\n### @ts-ignore Comments (Z instances)\n\n| File | Line | Reason | Should Fix |\n|------|------|--------|------------|\n| `src\u002Flegacy\u002Fold.ts` | 34 | \"Type error in legacy code\" | Refactor or remove file |\n\n---\n\n## Code Smells\n\n### Long Functions (>50 lines)\n\n| File | Function | Lines | Issue |\n|------|----------|-------|-------|\n| `src\u002Fservices\u002Fprocessor.ts` | `processData()` | 127 | Does too much, hard to test |\n\n**Recommendation**: Extract smaller functions\n\n### Complex Conditionals\n\n| File | Line | Issue |\n|------|------|-------|\n| `src\u002Futils\u002Fvalidator.ts` | 45 | Nested 4 levels deep |\n| `src\u002Flib\u002Fparser.ts` | 89 | Boolean expression spans 3 lines |\n\n### Magic Numbers\n\n| File | Line | Magic Value | Should Be |\n|------|------|-------------|-----------|\n| `src\u002Fconfig\u002Flimits.ts` | 12 | `86400` | `SECONDS_PER_DAY` |\n| `src\u002Futils\u002Fformat.ts` | 34 | `1000` | `MS_PER_SECOND` |\n\n### Commented-Out Code\n\n**Files with commented code**: X\n- `src\u002Fold\u002Flegacy.ts` - 45 lines of commented code\n- `src\u002Fservices\u002Fauth.ts` - Old implementation commented out\n\n**Recommendation**: Delete all commented code (use git history)\n\n---\n\n## Statistics\n\n**Dead Code**:\n- Files: X\n- Exports: Y\n- Lines: Z (estimated)\n\n**Duplication**:\n- Groups: X\n- Files affected: Y\n- Duplicated lines: ~Z\n\n**Architectural Issues**:\n- God objects: X\n- Circular dependencies: Y\n- Layer violations: Z\n\n**Type Issues**:\n- `any` usage: X\n- Type assertions: Y\n- @ts-ignore: Z\n\n**Code Smells**:\n- Long functions: X\n- Complex conditionals: Y\n- Magic numbers: Z\n\n---\n\n## Impact Assessment\n\n### Code Cleanup Potential\n- **Dead code removal**: ~X,XXX lines\n- **Duplication consolidation**: ~Y,YYY lines\n- **Total reduction**: ~Z,ZZZ lines (AA% of codebase)\n\n### Maintainability Improvement\n- Fewer places to update when fixing bugs\n- Clearer code responsibilities\n- Better type safety\n- Reduced cognitive load\n\n### Risk Areas\n- High coupling in `services\u002F` directory\n- Type safety compromised in `api\u002F` layer\n- Architectural violations in `components\u002F`\n```\n\n### Phase 8: Summary for User\n\nProvide concise summary:\n\n```markdown\n# Architectural Analysis Complete\n\n## Dead Code Found\n- **X completely dead files** - Can be deleted immediately\n- **Y unused exports** - Can be removed\n- **~Z,ZZZ lines** of dead code identified\n\n## Top Dead Files\n1. `src\u002Fold\u002Flegacy-processor.ts` - No imports\n2. `src\u002Ftemp\u002Ftemp-service.ts` - Temporary file\n3. `src\u002Futils\u002Funused-helper.ts` - Exported but never used\n\n## Duplication Found\n- **X duplication groups** identified\n- **Most duplicated**: Email validation (3 copies)\n- **~Y,YYY lines** of duplicated code\n\n## Architectural Issues\n- **Z god objects** doing too much\n- **W circular dependencies** found\n- **V layer violations** detected\n\n## Type Issues\n- **X `any` usages** - Should have proper types\n- **Y type assertions** - Bypassing type safety\n- **Z @ts-ignore comments** - Masking errors\n\n## Code Smells\n- **X long functions** (>50 lines)\n- **Y complex conditionals** (3+ nesting)\n- **Z magic numbers** - Should be constants\n\n## Cleanup Potential\nRemoving dead code and consolidating duplication could eliminate **~X,XXX lines** (Y% of codebase)\n\n**Full Report**: `.audits\u002Farchitectural-analysis-[timestamp].md`\n```\n\n## Critical Principles\n\n- **NEVER EDIT FILES** - This is analysis only, not cleanup\n- **NEVER SKIP FILES** - Analyze entire codebase systematically\n- **BE THOROUGH** - Dead code detection requires checking all imports\n- **VERIFY DUPLICATES** - Don't just match names, check if logic is same\n- **UNDERSTAND ARCHITECTURE** - See the big picture, not just individual files\n- **QUANTIFY IMPACT** - Count lines, estimate cleanup potential\n- **BE CONFIDENT** - Mark confidence level (HIGH\u002FMEDIUM\u002FLOW) for findings\n- **TRACK PROGRESS** - Use todo list for file-by-file analysis\n\n## Success Criteria\n\nA complete architectural analysis includes:\n- All files analyzed for dead code\n- All exports checked for usage\n- Duplication groups identified and cataloged\n- Architectural anti-patterns found and explained\n- Type issues located and categorized\n- Code smells flagged\n- Impact assessment quantified\n- Structured report generated\n","# Architectural Analysis\n\n## Instructions\n\nPerform comprehensive architectural audit focused on structural issues, dead code, duplication, and systemic problems.\n\n### Phase 1: Discovery & Planning\n\n#### Step 1: Map Codebase Structure\n```bash\n# Get directory structure\nfind . -type d -not -path \"*\u002Fnode_modules\u002F*\" -not -path \"*\u002F.git\u002F*\"\n\n# Count files by type\nfind . -name \"*.ts\" -o -name \"*.tsx\" -o -name \"*.js\" -o -name \"*.jsx\" | wc -l\n```\n\n#### Step 2: Identify Entry Points\n- Main application entry (`index.ts`, `main.ts`, `app.ts`)\n- API routes\u002Fcontrollers\n- Public exports (`index.ts` files)\n- CLI entry points\n- Test files\n\n#### Step 3: Create Comprehensive File List\nUse Glob to find all source files.\nCreate todo list with one item per file to analyze.\n\n### Phase 2: Dead Code Detection\n\nFor EACH file in the todo list:\n\n#### Step 1: Identify Exports\n- What does this file export?\n- Are exports functions, classes, types, constants?\n- Is anything exported at all?\n\n#### Step 2: Search for Usage\n\nFor each export, search if it's imported\u002Fused anywhere:\n```bash\n# Search for imports of this export\ngrep -r \"import.*ExportName\" . --include=\"*.ts\" --include=\"*.tsx\"\ngrep -r \"from.*filename\" . --include=\"*.ts\" --include=\"*.tsx\"\n\n# Search for direct usage\ngrep -r \"ExportName\" . --include=\"*.ts\" --include=\"*.tsx\"\n```\n\n#### Step 3: Categorize Code\n\n**Dead Code** (mark for removal):\n- Exported but never imported\n- Functions defined but never called\n- Classes instantiated nowhere\n- Types defined but never used\n- Constants defined but never referenced\n- Entire files with no imports from other files\n\n**Possibly Dead** (needs verification):\n- Only used in commented-out code\n- Only used in dead code\n- Only used in other unused exports\n- Used only in tests for deprecated features\n\n**Internal Dead Code**:\n- Functions defined in file but never called (not exported)\n- Variables assigned but never read\n- Parameters accepted but never used\n\n#### Step 4: Check for False Positives\n\nNot dead if:\n- Used in tests (may be public API)\n- Dynamically imported\u002Frequired\n- Used via reflection\u002Fstring references\n- Part of public API (even if not used internally)\n- Framework hooks (lifecycle methods, callbacks)\n- Accessed via `window` or global scope\n\n#### Step 5: Record Findings\n```\nFile: path\u002Fto\u002Ffile.ts\nStatus: [DEAD|POSSIBLY_DEAD|USED]\nExports: [list]\nDead Exports:\n  - ExportName - No imports found\n  - AnotherExport - Only used in test for deprecated feature\nConfidence: [HIGH|MEDIUM|LOW]\n```\n\n#### Step 6: Mark Complete\nUpdate todo list.\n\n### Phase 3: Duplication Detection\n\n#### Step 1: Identify Duplicated Logic Patterns\n\nSearch for common patterns that suggest duplication:\n- Similar function names across files\n- Repeated code blocks\n- Multiple implementations of same concept\n\n**Manual Pattern Recognition**:\n- Read files in same directory\n- Look for suspiciously similar code\n- Compare utilities\u002Fhelpers across modules\n- Check for copy-pasted blocks\n\n**Grep-Based Detection**:\n```bash\n# Find similar function signatures\ngrep -r \"function validateEmail\" . --include=\"*.ts\"\ngrep -r \"async.*fetch.*api\" . --include=\"*.ts\"\ngrep -r \"export.*UserForm\" . --include=\"*.tsx\"\n```\n\n#### Step 2: Analyze Duplicated Functionality\n\nFor each potential duplication:\n- Read both\u002Fall implementations\n- Are they actually the same logic?\n- Do they handle same cases?\n- Could one replace the other?\n- Are differences intentional or accidental?\n\n#### Step 3: Categorize Duplication\n\n**Exact Duplication** (CRITICAL):\n- Identical or near-identical code in multiple places\n- Copy-pasted functions\n- Duplicated utility functions\n- **Impact**: Bug fixes need multiple updates, maintenance burden\n\n**Similar Logic** (HIGH):\n- Same algorithm, different implementation\n- Slightly different parameter handling\n- Different names, same purpose\n- **Impact**: Inconsistency risk, harder to maintain\n\n**Conceptual Duplication** (MEDIUM):\n- Multiple ways to do the same thing\n- Competing implementations\n- Overlapping utilities\n- **Impact**: Confusion, decision paralysis\n\n**Type Duplication** (HIGH):\n- Same interface\u002Ftype defined multiple times\n- Similar types that should be unified\n- Duplicate constants\u002Fenums\n- **Impact**: Type inconsistency, refactoring difficulty\n\n#### Step 4: Record Duplication\n```\nDuplication Group: Email Validation\nType: Exact Duplication\nInstances:\n  - src\u002Futils\u002Fvalidators.ts:42 - validateEmail()\n  - src\u002Flib\u002Femail.ts:15 - isValidEmail()\n  - src\u002Fcomponents\u002Fforms\u002Fvalidation.ts:67 - checkEmailFormat()\nAnalysis: All three implement same regex check\nRecommendation: Keep utils\u002Fvalidators.ts version, remove others\nImpact: 3 places to update when logic changes\n```\n\n### Phase 4: Architectural Anti-Patterns\n\n#### Step 1: Identify God Objects\u002FClasses\n\nSearch for files that do too much:\n- Files over 500 lines\n- Classes with 10+ methods\n- Files with many responsibilities\n- Modules that import from everywhere\n\n```bash\n# Find large files\nfind . -name \"*.ts\" -exec wc -l {} + | sort -rn | head -20\n```\n\nAnalyze large files:\n- What does this file do?\n- Does it have single responsibility?\n- Should it be split?\n\n#### Step 2: Detect Circular Dependencies\n\nLook for:\n- File A imports from B, B imports from A\n- Circular chains: A → B → C → A\n- Module coupling cycles\n\nUse grep to trace import chains:\n```bash\n# Check what file imports\ngrep \"^import.*from\" src\u002Fservices\u002Fauth.ts\n\n# Check what imports this file\ngrep -r \"from.*auth\" src\u002F --include=\"*.ts\"\n```\n\n#### Step 3: Find Tight Coupling\n\nIdentify:\n- High-level modules depending on low-level modules\n- Business logic depending on infrastructure\n- Core logic depending on framework specifics\n- Modules that import from many other modules\n\n#### Step 4: Spot Layer Violations\n\nCheck architecture layers:\n- Do components import directly from database layer?\n- Do models import from views?\n- Do utilities import from business logic?\n- Is there proper separation of concerns?\n\n#### Step 5: Identify Other Anti-Patterns\n\n**Singleton Abuse**:\n- Global state everywhere\n- Module-level mutable state\n- Static class methods accessing shared state\n\n**Anemic Domain Models**:\n- Data classes with no behavior\n- All logic in services, models just have getters\u002Fsetters\n\n**Shotgun Surgery**:\n- Single feature change requires touching many files\n- Indicates poor cohesion\n\n**Feature Envy**:\n- Methods that use more data from other classes than their own\n\n### Phase 5: Type Issues Analysis\n\n#### Step 1: Find Type Abuse\n\nSearch for problematic type usage:\n```bash\n# Find 'any' usage\ngrep -r \": any\" . --include=\"*.ts\" --include=\"*.tsx\" -n\n\n# Find 'unknown' usage\ngrep -r \": unknown\" . --include=\"*.ts\" -n\n\n# Find type assertions\ngrep -r \"as any\" . --include=\"*.ts\" -n\ngrep -r \"as unknown\" . --include=\"*.ts\" -n\n\n# Find @ts-ignore\ngrep -r \"@ts-ignore\" . --include=\"*.ts\" -n\ngrep -r \"@ts-expect-error\" . --include=\"*.ts\" -n\n```\n\n#### Step 2: Analyze Type Confusion\n\nFor each file with type issues:\n- Why is `any` used?\n- Could proper type be defined?\n- Is type assertion hiding a real type error?\n- Are @ts-ignore comments masking actual problems?\n\n#### Step 3: Find Type Duplication\n\nLook for:\n- Same interface defined in multiple files\n- Similar types that could be unified\n- Types that could extend from common base\n- Constants\u002Fenums duplicated across files\n\n#### Step 4: Identify Missing Types\n\nCheck for:\n- Implicit `any` from missing type annotations\n- Functions without return type\n- Callbacks without proper typing\n- Generic types that should be specific\n\n### Phase 6: Code Smells Detection\n\n#### Step 1: Long Methods\u002FFunctions\n```bash\n# Find functions with many lines\n# (manual inspection of large files)\n```\n\nFlag functions over 50 lines - likely doing too much.\n\n#### Step 2: Long Parameter Lists\n\nSearch for functions with 4+ parameters:\n- Could use object parameter instead?\n- Are parameters related (should be grouped)?\n\n#### Step 3: Complex Conditionals\n\nLook for:\n- Deeply nested if statements (3+ levels)\n- Long boolean expressions\n- Switch statements with 10+ cases\n- Complex ternary operators\n\n#### Step 4: Magic Numbers\u002FStrings\n\nSearch for:\n- Hardcoded numbers with unclear meaning\n- String literals used repeatedly\n- Unexplained constants\n\nShould be named constants.\n\n#### Step 5: Commented-Out Code\n\n```bash\n# Find commented code blocks\ngrep -r \"^[[:space:]]*\u002F\u002F.*function\\|class\\|const\" . --include=\"*.ts\"\n```\n\nCommented code should be deleted (use git history).\n\n#### Step 6: Poor Naming\n\nLook for:\n- Single letter variables (outside loops)\n- Abbreviations without context (`usr`, `msg`, `tmp`)\n- Misleading names\n- Names that don't reflect purpose\n\n### Phase 7: Generate Report\n\nCreate report at `.audits\u002Farchitectural-analysis-[timestamp].md`:\n\n```markdown\n# Architectural Analysis Report\n**Date**: [timestamp]\n**Files Analyzed**: X\n**Dead Code Files**: Y\n**Duplication Groups**: Z\n\n---\n\n## Executive Summary\n- **Dead Code**: X files, Y exports completely unused\n- **Duplicated Functionality**: Z duplication groups\n- **Architectural Anti-Patterns**: W issues\n- **Type Issues**: V problematic usages\n- **Code Smells**: U instances\n\n**Estimated Cleanup**: Remove ~X lines of dead code, consolidate Y duplications\n\n---\n\n## Dead Code\n\n### Completely Dead Files (DELETE)\n| File | Reason | Confidence |\n|------|--------|------------|\n| `src\u002Fold\u002Flegacy-processor.ts` | No imports found | HIGH |\n| `src\u002Futils\u002Funused-helper.ts` | Exported but never used | HIGH |\n| `src\u002Ftemp\u002Ftemp-service.ts` | Temporary file left behind | HIGH |\n\n**Total Lines**: X,XXX lines can be deleted\n\n### Dead Exports (REMOVE)\n| File | Export | Reason |\n|------|--------|--------|\n| `src\u002Futils\u002Fformat.ts` | `formatOldDate()` | Replaced by `formatDate()`, no usage |\n| `src\u002Fservices\u002Fauth.ts` | `oldLogin()` | Deprecated, no usage found |\n\n### Possibly Dead (VERIFY)\n| File | Export | Reason | Verification Needed |\n|------|--------|--------|---------------------|\n| `src\u002Flib\u002Fapi.ts` | `fetchOldApi()` | Only used in commented code | Check if truly deprecated |\n\n### Internal Dead Code\n- `src\u002Fservices\u002Fuser.ts:125` - Private method `_validateLegacy()` never called\n- `src\u002Fcomponents\u002Fform.tsx:89` - Variable `tempData` assigned but never read\n\n---\n\n## Duplicated Functionality\n\n### CRITICAL: Exact Duplicates\n\n#### Duplication Group 1: Email Validation\n**Instances**: 3\n**Files**:\n- `src\u002Futils\u002Fvalidators.ts:42` - `validateEmail(email: string)`\n- `src\u002Flib\u002Femail.ts:15` - `isValidEmail(email: string)`\n- `src\u002Fcomponents\u002Fforms\u002Fvalidation.ts:67` - `checkEmailFormat(email: string)`\n\n**Analysis**: All three use identical regex pattern `\u002F^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\u002F`\n**Lines Duplicated**: ~15 lines × 3 = 45 lines\n**Recommendation**:\n- Keep: `src\u002Futils\u002Fvalidators.ts:validateEmail()`\n- Remove: Other two implementations\n- Update: All imports to use validators version\n\n#### Duplication Group 2: API Error Handling\n**Instances**: 4\n**Files**: [list]\n**Analysis**: [similar]\n\n### HIGH: Similar Logic\n\n#### Duplication Group: Date Formatting\n**Instances**: 2\n**Files**:\n- `src\u002Futils\u002Fdate.ts:30` - `formatDate()` - Uses date-fns\n- `src\u002Flib\u002Fformat.ts:45` - `formatDateTime()` - Uses native Date\n\n**Analysis**: Both format dates but use different libraries\n**Recommendation**: Standardize on date-fns, remove native version\n\n### Type Duplication\n\n#### Type Group: User Interface\n**Instances**: 3\n**Files**:\n- `src\u002Ftypes\u002Fuser.ts` - `User` interface\n- `src\u002Fmodels\u002Fuser.ts` - `UserModel` interface (identical fields)\n- `src\u002Fapi\u002Ftypes.ts` - `UserData` interface (identical fields)\n\n**Recommendation**: Use single `User` type from `src\u002Ftypes\u002Fuser.ts`\n\n---\n\n## Architectural Anti-Patterns\n\n### God Objects\n\n#### `src\u002Fservices\u002Fapplication-manager.ts` (850 lines)\n**Responsibilities**: Database, auth, config, logging, caching, validation\n**Issue**: Violates SRP, does everything\n**Recommendation**: Split into:\n- `database.service.ts`\n- `auth.service.ts`\n- `config.service.ts`\n- `logging.service.ts`\n\n### Circular Dependencies\n\n#### Cycle 1: `auth.ts` ↔ `user.ts`\n- `auth.ts` imports `getUserById` from `user.ts`\n- `user.ts` imports `validateToken` from `auth.ts`\n**Issue**: Creates tight coupling, makes testing hard\n**Recommendation**: Extract shared types to separate file\n\n### Tight Coupling\n\n#### `components\u002FUserForm.tsx` → `services\u002Fdatabase.ts`\n**Issue**: UI component directly importing database layer\n**Recommendation**: Use service layer abstraction\n\n### Layer Violations\n\n#### `models\u002FUser.ts` imports from `components\u002F`\n**Issue**: Model layer should not know about view layer\n**Recommendation**: Remove dependency, pass data via props\n\n---\n\n## Type Issues\n\n### `any` Usage (X instances)\n\n| File | Line | Context | Severity |\n|------|------|---------|----------|\n| `src\u002Fapi\u002Fclient.ts` | 45 | `response: any` | HIGH |\n| `src\u002Futils\u002Fparse.ts` | 23 | `data: any` | HIGH |\n\n**Total `any` usages**: X\n**Recommendation**: Define proper types for all cases\n\n### Type Assertions (Y instances)\n\n| File | Line | Assertion | Issue |\n|------|------|-----------|-------|\n| `src\u002Flib\u002Fapi.ts` | 67 | `as User` | Unsafe cast, no validation |\n| `src\u002Futils\u002Fparse.ts` | 89 | `as unknown as T` | Double cast to bypass types |\n\n**Issue**: Type safety bypassed, runtime errors possible\n\n### @ts-ignore Comments (Z instances)\n\n| File | Line | Reason | Should Fix |\n|------|------|--------|------------|\n| `src\u002Flegacy\u002Fold.ts` | 34 | \"Type error in legacy code\" | Refactor or remove file |\n\n---\n\n## Code Smells\n\n### Long Functions (>50 lines)\n\n| File | Function | Lines | Issue |\n|------|----------|-------|-------|\n| `src\u002Fservices\u002Fprocessor.ts` | `processData()` | 127 | Does too much, hard to test |\n\n**Recommendation**: Extract smaller functions\n\n### Complex Conditionals\n\n| File | Line | Issue |\n|------|------|-------|\n| `src\u002Futils\u002Fvalidator.ts` | 45 | Nested 4 levels deep |\n| `src\u002Flib\u002Fparser.ts` | 89 | Boolean expression spans 3 lines |\n\n### Magic Numbers\n\n| File | Line | Magic Value | Should Be |\n|------|------|-------------|-----------|\n| `src\u002Fconfig\u002Flimits.ts` | 12 | `86400` | `SECONDS_PER_DAY` |\n| `src\u002Futils\u002Fformat.ts` | 34 | `1000` | `MS_PER_SECOND` |\n\n### Commented-Out Code\n\n**Files with commented code**: X\n- `src\u002Fold\u002Flegacy.ts` - 45 lines of commented code\n- `src\u002Fservices\u002Fauth.ts` - Old implementation commented out\n\n**Recommendation**: Delete all commented code (use git history)\n\n---\n\n## Statistics\n\n**Dead Code**:\n- Files: X\n- Exports: Y\n- Lines: Z (estimated)\n\n**Duplication**:\n- Groups: X\n- Files affected: Y\n- Duplicated lines: ~Z\n\n**Architectural Issues**:\n- God objects: X\n- Circular dependencies: Y\n- Layer violations: Z\n\n**Type Issues**:\n- `any` usage: X\n- Type assertions: Y\n- @ts-ignore: Z\n\n**Code Smells**:\n- Long functions: X\n- Complex conditionals: Y\n- Magic numbers: Z\n\n---\n\n## Impact Assessment\n\n### Code Cleanup Potential\n- **Dead code removal**: ~X,XXX lines\n- **Duplication consolidation**: ~Y,YYY lines\n- **Total reduction**: ~Z,ZZZ lines (AA% of codebase)\n\n### Maintainability Improvement\n- Fewer places to update when fixing bugs\n- Clearer code responsibilities\n- Better type safety\n- Reduced cognitive load\n\n### Risk Areas\n- High coupling in `services\u002F` directory\n- Type safety compromised in `api\u002F` layer\n- Architectural violations in `components\u002F`\n```\n\n### Phase 8: Summary for User\n\nProvide concise summary:\n\n```markdown\n# Architectural Analysis Complete\n\n## Dead Code Found\n- **X completely dead files** - Can be deleted immediately\n- **Y unused exports** - Can be removed\n- **~Z,ZZZ lines** of dead code identified\n\n## Top Dead Files\n1. `src\u002Fold\u002Flegacy-processor.ts` - No imports\n2. `src\u002Ftemp\u002Ftemp-service.ts` - Temporary file\n3. `src\u002Futils\u002Funused-helper.ts` - Exported but never used\n\n## Duplication Found\n- **X duplication groups** identified\n- **Most duplicated**: Email validation (3 copies)\n- **~Y,YYY lines** of duplicated code\n\n## Architectural Issues\n- **Z god objects** doing too much\n- **W circular dependencies** found\n- **V layer violations** detected\n\n## Type Issues\n- **X `any` usages** - Should have proper types\n- **Y type assertions** - Bypassing type safety\n- **Z @ts-ignore comments** - Masking errors\n\n## Code Smells\n- **X long functions** (>50 lines)\n- **Y complex conditionals** (3+ nesting)\n- **Z magic numbers** - Should be constants\n\n## Cleanup Potential\nRemoving dead code and consolidating duplication could eliminate **~X,XXX lines** (Y% of codebase)\n\n**Full Report**: `.audits\u002Farchitectural-analysis-[timestamp].md`\n```\n\n## Critical Principles\n\n- **NEVER EDIT FILES** - This is analysis only, not cleanup\n- **NEVER SKIP FILES** - Analyze entire codebase systematically\n- **BE THOROUGH** - Dead code detection requires checking all imports\n- **VERIFY DUPLICATES** - Don't just match names, check if logic is same\n- **UNDERSTAND ARCHITECTURE** - See the big picture, not just individual files\n- **QUANTIFY IMPACT** - Count lines, estimate cleanup potential\n- **BE CONFIDENT** - Mark confidence level (HIGH\u002FMEDIUM\u002FLOW) for findings\n- **TRACK PROGRESS** - Use todo list for file-by-file analysis\n\n## Success Criteria\n\nA complete architectural analysis includes:\n- All files analyzed for dead code\n- All exports checked for usage\n- Duplication groups identified and cataloged\n- Architectural anti-patterns found and explained\n- Type issues located and categorized\n- Code smells flagged\n- Impact assessment quantified\n- Structured report generated\n",{"name":5,"description":7},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Faiskillstore\u002Fmarketplace\u002Fcygnusfear\u002Farchitectural-analysis",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":8,"skillName":5,"commands":55,"prompt":65,"zipAvailable":66},[56,59,62],{"tool":57,"command":58},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill architectural-analysis",{"tool":60,"command":61},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill architectural-analysis",{"tool":63,"command":64},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill architectural-analysis","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fcygnusfear\u002Farchitectural-analysis\u002FSKILL.md",true,[68],{"path":69,"resourceType":70,"resourceTypeDesc":71,"sizeBytes":72,"sourceHtmlUrl":73},"skill-report.json","REFERENCE","参考文档",21693,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fcygnusfear\u002Farchitectural-analysis\u002Fskill-report.json",[75,89,99,108,114,121],{"skillNo":76,"name":77,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":85,"publishedAt":40},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[80],{"categoryNo":81,"categoryName":82,"taxonomyType":83,"taxonomyTypeDesc":84},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[86,87,88],"model","model hierarchy","model hierarchy skill",{"skillNo":90,"name":91,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":95,"publishedAt":40},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[94],{"categoryNo":81,"categoryName":82,"taxonomyType":83,"taxonomyTypeDesc":84},[96,97,98],"MCP","zoom","zoom mcp",{"skillNo":100,"name":101,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":104,"publishedAt":40},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[105,106,107,97],"sdk","zoom apps sdk","apps",{"skillNo":109,"name":110,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":111,"categories":112,"keywords":113,"publishedAt":40},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[110],{"skillNo":115,"name":116,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":120,"publishedAt":40},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[119],{"categoryNo":81,"categoryName":82,"taxonomyType":83,"taxonomyTypeDesc":84},[116],{"skillNo":122,"name":123,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":124,"categories":125,"keywords":126,"publishedAt":40},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[123]]