[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71NCY0CW552R7WD7DZMCG5N":3,"skill-same:01M71NCY0CW552R7WD7DZMCG5N":159},{"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":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":49,"commitSha":50,"skillDirectory":51,"forksCount":52,"repositoryHtmlUrl":53,"repositoryHomepageUrl":6,"ownerHtmlUrl":54,"ownerBlogUrl":6,"ownerDescription":55,"updatedAt":56,"install":57,"resources":70},"01M71NCY0CW552R7WD7DZMCG5N","ln-514-test-log-analyzer",null,"Analyzes application logs: classifies errors, checks log quality, maps stack traces to source. Use when logs need review after test runs or during development.","vitalikpestov\u002FSkills-Catalog","vitalikpestov","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F13882997?v=4","01M71N4QG0CWRXX4R24JQZXDDQ","Vitalik Pestov","01M71N4QGMSYRW607DDSE0CQMM",2,"MIT","https:\u002F\u002Fgithub.com\u002Fvitalikpestov\u002FSkills-Catalog\u002Fblob\u002Fmain\u002F_AI-Automation\u002Fclaude-code-skills-levnikolaevich\u002Fplugins\u002Fagile-workflow\u002Fskills\u002Fln-514-test-log-analyzer\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"log","log analyzer","ln","test","analyzer","ln 514 test log analyzer","application","traces","quality","use","development","sonnet","source","stack","review","maps","logs","when","errors","2026-11-10 10:56:23",false,"---\nname: ln-514-test-log-analyzer\ndescription: \"Analyzes application logs: classifies errors, checks log quality, maps stack traces to source. Use when logs need review after test runs or during development.\"\nlicense: MIT\nmodel: claude-sonnet-4-6\n---\n\n> **Paths:** File paths (`references\u002F`, `..\u002Fln-*`) are relative to this skill directory.\n\n# Test Log Analyzer\n\n**Type:** L3 Worker\n**Category:** 5XX Quality\n\nTwo-layer analysis of application logs. Node.js script handles collection and quantitative analysis; AI handles classification, quality assessment, and fix recommendations.\n\n## Inputs\n\nNo required inputs. Runs in current project directory, auto-detects log sources.\n\nOptional `args` — caller instructions (natural language): time window, expected errors, test context. Example: `\"review logs for last 30min, auth 401 errors expected from negative tests\"`.\n\n## Purpose & Scope\n- Analyze application logs (after test runs, during development, or on demand)\n- Classify errors into 4 categories: Real Bug, Test Artifact, Expected Behavior, Operational Warning\n- Assess log quality: noisiness, completeness, level correctness, format, structured logging\n- Map stack traces to source files; provide fix recommendations\n- Report findings for quality verdict (only Real Bugs block)\n- **No status changes or task creation** — report only\n\n## When to Use\n- Analyze application logs in any project (default: last 1h)\n- After test runs to classify errors and assess log quality\n- Can be invoked with context instructions: `Skill(skill: \"ln-514-test-log-analyzer\", args: \"review last 30min, 401 errors expected\")`\n\n## Workflow\n\n### Phase 0: Parse Instructions\n\nIf `args` provided — extract: time window (default: 1h), expected errors list, test context.\nIf no `args` — use defaults (last 1h, no expected errors).\n\n### Phase 1: Log Source Detection and Script Execution\n\nRead target project files if they exist: `docs\u002Fproject\u002Finfrastructure.md`, `docs\u002Fproject\u002Frunbook.md`\n\n1) Check if `scripts\u002Fanalyze_test_logs.mjs` exists in target project. If missing, copy from `references\u002Fscripts\u002Fanalyze_test_logs.mjs`.\n2) Detect log source mode (auto-detection priority: docker → file → loki):\n\n| Mode | Detection | Source |\n|------|-----------|--------|\n| `docker` | `docker compose ps` returns running containers | `docker compose logs --since {window}` |\n| `file` | `.log` files exist, or `tests\u002Fmanual\u002Fresults\u002F` has output | File paths from infrastructure.md or `*.log` glob |\n| `loki` | `LOKI_URL` env var or `environment_state.json` observability section | Loki HTTP query_range API |\n\n3) Run script: `node scripts\u002Fanalyze_test_logs.mjs --mode {detected} [options]`\n4) If no log sources found → return `NO_LOG_SOURCES` status, skip to Phase 5.\n\n**Level-based error detection (CRITICAL):**\nWhen constructing Loki queries or grep commands to scan for errors, ALWAYS filter by the **parsed level field**, NOT by text matching the word \"error\" in the full log line. Logger names like `uvicorn.error` contain \"error\" as part of the name but log at INFO level — text matching produces false positives.\n\n| Log format | Correct error filter | Wrong filter |\n|------------|---------------------|--------------|\n| Pipe-delimited (`ts \\| LEVEL \\| ...`) | `\\| ERROR` or `\\| CRITICAL` (match level field position) | `grep -i error` (matches logger names) |\n| Loki structured | `{service_name=\"X\"} \\| level=\"ERROR\"` or `\\| pattern` extraction | `{service_name=\"X\"} \\|= \"error\"` |\n| Key=value (`level=ERROR msg=...`) | `level=ERROR` or `level=FATAL` | `\\|~ \"(?i)error\"` |\n| Docker logs (local) | `grep -E '\\| ERROR \\| \\| CRITICAL '` | `grep -iE 'error\\|exception'` |\n\nThe `analyze_test_logs.mjs` script handles this correctly via structured regex parsers. These rules apply to **ad-hoc Loki\u002Fgrep queries** constructed during analysis.\n\n### Phase 2: 4-Category Error Classification\n\nClassify each error group from script JSON output:\n\n| Category | Action | Criteria |\n|----------|--------|----------|\n| **Real Bug** | Fix | Unexpected crash, data loss, broken pipeline |\n| **Test Artifact** | Skip | From test scripts, deliberate error-path validation |\n| **Expected Behavior** | Skip | Rate limiting, input validation, auth failures from invalid tokens |\n| **Operational Warning** | Monitor | Clock drift, resource pressure, temporary unavailability |\n\n**Test artifact detection heuristics:**\n- Test name contains: `invalid`, `error`, `fail`, `reject`, `unauthorized`, `forbidden`, `not_found`, `bad_request`, `timeout`\n- Test asserts non-2xx status codes (4xx, 5xx)\n- Test uses `pytest.raises`, `expect(...).rejects`, `assertThrows`, `should.throw`\n- Errors correlate with test execution timestamps from regression test output\n- Patterns matching `tests\u002Fmanual\u002F` scripts\n\n**Error taxonomy per** `references\u002Ferror_taxonomy.md` **(9 categories: CRASH, TIMEOUT, AUTH, DB, NETWORK, VALIDATION, CONFIG, RESOURCE, UNSUPPORTED_API).**\n\n### Phase 3: Log Quality Assessment\n\n**MANDATORY READ:** Load `references\u002Ferror_taxonomy.md` (per-level criteria table + level correctness reference)\n\n**Step 1: Detect configured log level.** Check in order:\n1. `LOG_LEVEL` \u002F `LOGLEVEL` env var (`.env`, `docker-compose.yml`, `infrastructure.md`)\n2. Framework config: Python `logging.conf` \u002F Django `LOGGING` \u002F Node `LOG_LEVEL`\n3. Default: assume `INFO` if not detected\n\nConfigured level determines WHICH levels appear in logs, but each level has its own noise threshold regardless.\n\n**Step 2: Assess 6 quality dimensions:**\n\n| Dimension | What to Check | Signal |\n|-----------|---------------|--------|\n| **Noisiness** | Per-level noise thresholds from `error_taxonomy.md` section 4: TRACE (zero in prod), DEBUG (>50% monopoly), INFO (>30%), WARNING (>1% of total), ERROR (>0.1% of total) | `NOISY: {level} template \"{msg}\" at {ratio}%` |\n| **Completeness & Traceability** | Critical operations missing log entries + traceability gaps (see table below) | `MISSING: No log for {operation}` \u002F `TRACEABILITY_GAP: {type} in {file}:{line}` |\n| **Level correctness** | Per-level criteria from `error_taxonomy.md` section 4: content, anti-patterns, library rule | `WRONG_LEVEL: should be {level}` |\n| **Structured logging** | Missing trace_id\u002Frequest_id\u002Fuser context; unstructured plaintext | `UNSTRUCTURED: lacks {field}` |\n| **Sensitivity** | PII\u002Fsecrets\u002Ftokens\u002Fpasswords in log messages | `SENSITIVE: {type} exposure` |\n| **Context richness** | Errors without actionable context (order_id, user_id, operation) | `LOW_CONTEXT: lacks context` |\n\n**Traceability gap detection** — scan source code for operations without INFO-level logging:\n\n| Operation Type | Expected Log | Where to Add |\n|---------------|-------------|--------------|\n| Incoming request handling | Request received + response status | Entry\u002Fexit of route handler |\n| External API call | Request sent + response status + duration | Before\u002Fafter HTTP client call |\n| DB write (INSERT\u002FUPDATE\u002FDELETE) | Operation + affected entity + count | Before\u002Fafter ORM\u002Fquery call |\n| Auth decision | Result (allow\u002Fdeny) + reason | After auth check |\n| State transition | Old state → new state + trigger | At transition point |\n| Background job | Start + complete\u002Ffail + duration | Entry\u002Fexit of job handler |\n| File\u002Fresource operation | Open\u002Fclose + path + size | At I\u002FO operation |\n\n**Log Format Quality** (10-criterion checklist per `references\u002Flog_analysis_output_format.md`):\n\n| # | Criterion | Check |\n|---|-----------|-------|\n| 1 | Dual format | JSON in prod, readable in dev |\n| 2 | Timestamp | Consistent, timezone-aware |\n| 3 | Level field | Present, uppercase |\n| 4 | Trace\u002FCorrelation ID | Present in every entry, async-safe |\n| 5 | Service name | Identifies source service |\n| 6 | Source location | module:line + function |\n| 7 | Extra context | Structured fields, not string interpolation |\n| 8 | PII redaction | Passwords, API keys, emails handled |\n| 9 | Noise suppression | Duplicate filters, third-party suppressed |\n| 10 | Parseability | Dev: pipe-delimited; prod: valid JSON per line |\n\nScore: passed criteria \u002F 10.\n\n### Phase 4: Stack Trace Mapping + Fix Recommendations\n\nFor each Real Bug:\n1) Extract stack trace frames; identify origin frame (first frame in project code, not in node_modules\u002Fsite-packages)\n2) Map to source file:line\n3) Generate fix recommendation: what to change, where, effort estimate (S\u002FM\u002FL)\n\n**Prioritize using Sentry-inspired dimensions:**\n- High-volume (occurrence count), Post-test regression (new errors), High-impact path (auth\u002Fpayment\u002FDB), Correlated traces (trace_id across services)\n\n### Phase 5: Generate Report\n\n**MANDATORY READ:** Load `references\u002Flog_analysis_output_format.md`\n\nOutput report to chat with header `## Test Log Analysis`. Include:\n- Signals table (Real Bugs count, Test Artifacts filtered, Log Noise status, Log Format score, Log Quality score)\n- Real Bugs table (priority, category, error, source, fix recommendation)\n- Filtered table (category, count, examples)\n- Log Quality Issues table (dimension, service, issue, recommendation)\n- Noise Report table (count, ratio, service, level, template, action)\n- Machine-readable block `\u003C!-- LOG-ANALYSIS-DATA ... -->` for programmatic consumption\n\n### Phase 6: Meta-Analysis\n\nOptional reference: load `references\u002Fmeta_analysis_protocol.md` only when the user asks for post-run meta-analysis or protocol-formatted run reflection.\n\nSkill type: `execution-worker`. When requested, run after all phases complete.\n\n## Verdict Contribution\n\nQuality coordinator normalization matrix component:\n\n| Status | Maps To | Penalty |\n|--------|---------|---------|\n| CLEAN | -- | 0 |\n| WARNINGS_ONLY | -- | 0 |\n| REAL_BUGS_FOUND | FAIL | -20 |\n| SKIPPED \u002F NO_LOG_SOURCES | ignored | 0 |\n\nLog quality\u002Fformat issues are INFORMATIONAL — do not affect quality verdict. Only Real Bugs block.\n\n## Critical Rules\n- No status changes or task creation; report only.\n- Test Artifacts and Expected Behavior are ALWAYS filtered — never count as bugs.\n- Log quality issues are advisory — inform, don't block.\n- Script must handle gracefully: no Docker, no log files, no Loki → `NO_LOG_SOURCES`.\n- Language preservation in comments (EN\u002FRU).\n\n## Runtime Summary Artifact\n\n**MANDATORY READ:** Load `references\u002Fquality_summary_contract.md`, `references\u002Fquality_worker_runtime_contract.md`\n\nRuntime profile:\n- family: `quality-worker`\n- worker: `ln-514`\n- summary kind: `quality-worker`\n- payload fields used by coordinators: `worker`, `status`, `verdict`, `issues`, `warnings`, `artifact_path`\n\nInvocation rules:\n- standalone: omit `runId` and `summaryArtifactPath`\n- managed: pass both `runId` and exact `summaryArtifactPath`\n- always write the validated summary before terminal outcome\n\n## Definition of Done\n\n- [ ] Script deployed to target project `scripts\u002F` (or already exists)\n- [ ] Log source detected and script executed (or NO_LOG_SOURCES returned)\n- [ ] Errors classified into 4 categories; Real Bugs identified\n- [ ] Log quality assessed (6 dimensions + 10-criterion format checklist)\n- [ ] Stack traces mapped to source files for Real Bugs\n- [ ] Report output to chat with signals table + machine-readable block\n\n## Reference Files\n- **Error taxonomy:** `references\u002Ferror_taxonomy.md`\n- **Output format:** `references\u002Flog_analysis_output_format.md`\n- **Analysis script:** `references\u002Fscripts\u002Fanalyze_test_logs.mjs`\n\n---\n**Version:** 1.0.0\n**Last Updated:** 2026-03-13\n","> **Paths:** File paths (`references\u002F`, `..\u002Fln-*`) are relative to this skill directory.\n\n# Test Log Analyzer\n\n**Type:** L3 Worker\n**Category:** 5XX Quality\n\nTwo-layer analysis of application logs. Node.js script handles collection and quantitative analysis; AI handles classification, quality assessment, and fix recommendations.\n\n## Inputs\n\nNo required inputs. Runs in current project directory, auto-detects log sources.\n\nOptional `args` — caller instructions (natural language): time window, expected errors, test context. Example: `\"review logs for last 30min, auth 401 errors expected from negative tests\"`.\n\n## Purpose & Scope\n- Analyze application logs (after test runs, during development, or on demand)\n- Classify errors into 4 categories: Real Bug, Test Artifact, Expected Behavior, Operational Warning\n- Assess log quality: noisiness, completeness, level correctness, format, structured logging\n- Map stack traces to source files; provide fix recommendations\n- Report findings for quality verdict (only Real Bugs block)\n- **No status changes or task creation** — report only\n\n## When to Use\n- Analyze application logs in any project (default: last 1h)\n- After test runs to classify errors and assess log quality\n- Can be invoked with context instructions: `Skill(skill: \"ln-514-test-log-analyzer\", args: \"review last 30min, 401 errors expected\")`\n\n## Workflow\n\n### Phase 0: Parse Instructions\n\nIf `args` provided — extract: time window (default: 1h), expected errors list, test context.\nIf no `args` — use defaults (last 1h, no expected errors).\n\n### Phase 1: Log Source Detection and Script Execution\n\nRead target project files if they exist: `docs\u002Fproject\u002Finfrastructure.md`, `docs\u002Fproject\u002Frunbook.md`\n\n1) Check if `scripts\u002Fanalyze_test_logs.mjs` exists in target project. If missing, copy from `references\u002Fscripts\u002Fanalyze_test_logs.mjs`.\n2) Detect log source mode (auto-detection priority: docker → file → loki):\n\n| Mode | Detection | Source |\n|------|-----------|--------|\n| `docker` | `docker compose ps` returns running containers | `docker compose logs --since {window}` |\n| `file` | `.log` files exist, or `tests\u002Fmanual\u002Fresults\u002F` has output | File paths from infrastructure.md or `*.log` glob |\n| `loki` | `LOKI_URL` env var or `environment_state.json` observability section | Loki HTTP query_range API |\n\n3) Run script: `node scripts\u002Fanalyze_test_logs.mjs --mode {detected} [options]`\n4) If no log sources found → return `NO_LOG_SOURCES` status, skip to Phase 5.\n\n**Level-based error detection (CRITICAL):**\nWhen constructing Loki queries or grep commands to scan for errors, ALWAYS filter by the **parsed level field**, NOT by text matching the word \"error\" in the full log line. Logger names like `uvicorn.error` contain \"error\" as part of the name but log at INFO level — text matching produces false positives.\n\n| Log format | Correct error filter | Wrong filter |\n|------------|---------------------|--------------|\n| Pipe-delimited (`ts \\| LEVEL \\| ...`) | `\\| ERROR` or `\\| CRITICAL` (match level field position) | `grep -i error` (matches logger names) |\n| Loki structured | `{service_name=\"X\"} \\| level=\"ERROR\"` or `\\| pattern` extraction | `{service_name=\"X\"} \\|= \"error\"` |\n| Key=value (`level=ERROR msg=...`) | `level=ERROR` or `level=FATAL` | `\\|~ \"(?i)error\"` |\n| Docker logs (local) | `grep -E '\\| ERROR \\| \\| CRITICAL '` | `grep -iE 'error\\|exception'` |\n\nThe `analyze_test_logs.mjs` script handles this correctly via structured regex parsers. These rules apply to **ad-hoc Loki\u002Fgrep queries** constructed during analysis.\n\n### Phase 2: 4-Category Error Classification\n\nClassify each error group from script JSON output:\n\n| Category | Action | Criteria |\n|----------|--------|----------|\n| **Real Bug** | Fix | Unexpected crash, data loss, broken pipeline |\n| **Test Artifact** | Skip | From test scripts, deliberate error-path validation |\n| **Expected Behavior** | Skip | Rate limiting, input validation, auth failures from invalid tokens |\n| **Operational Warning** | Monitor | Clock drift, resource pressure, temporary unavailability |\n\n**Test artifact detection heuristics:**\n- Test name contains: `invalid`, `error`, `fail`, `reject`, `unauthorized`, `forbidden`, `not_found`, `bad_request`, `timeout`\n- Test asserts non-2xx status codes (4xx, 5xx)\n- Test uses `pytest.raises`, `expect(...).rejects`, `assertThrows`, `should.throw`\n- Errors correlate with test execution timestamps from regression test output\n- Patterns matching `tests\u002Fmanual\u002F` scripts\n\n**Error taxonomy per** `references\u002Ferror_taxonomy.md` **(9 categories: CRASH, TIMEOUT, AUTH, DB, NETWORK, VALIDATION, CONFIG, RESOURCE, UNSUPPORTED_API).**\n\n### Phase 3: Log Quality Assessment\n\n**MANDATORY READ:** Load `references\u002Ferror_taxonomy.md` (per-level criteria table + level correctness reference)\n\n**Step 1: Detect configured log level.** Check in order:\n1. `LOG_LEVEL` \u002F `LOGLEVEL` env var (`.env`, `docker-compose.yml`, `infrastructure.md`)\n2. Framework config: Python `logging.conf` \u002F Django `LOGGING` \u002F Node `LOG_LEVEL`\n3. Default: assume `INFO` if not detected\n\nConfigured level determines WHICH levels appear in logs, but each level has its own noise threshold regardless.\n\n**Step 2: Assess 6 quality dimensions:**\n\n| Dimension | What to Check | Signal |\n|-----------|---------------|--------|\n| **Noisiness** | Per-level noise thresholds from `error_taxonomy.md` section 4: TRACE (zero in prod), DEBUG (>50% monopoly), INFO (>30%), WARNING (>1% of total), ERROR (>0.1% of total) | `NOISY: {level} template \"{msg}\" at {ratio}%` |\n| **Completeness & Traceability** | Critical operations missing log entries + traceability gaps (see table below) | `MISSING: No log for {operation}` \u002F `TRACEABILITY_GAP: {type} in {file}:{line}` |\n| **Level correctness** | Per-level criteria from `error_taxonomy.md` section 4: content, anti-patterns, library rule | `WRONG_LEVEL: should be {level}` |\n| **Structured logging** | Missing trace_id\u002Frequest_id\u002Fuser context; unstructured plaintext | `UNSTRUCTURED: lacks {field}` |\n| **Sensitivity** | PII\u002Fsecrets\u002Ftokens\u002Fpasswords in log messages | `SENSITIVE: {type} exposure` |\n| **Context richness** | Errors without actionable context (order_id, user_id, operation) | `LOW_CONTEXT: lacks context` |\n\n**Traceability gap detection** — scan source code for operations without INFO-level logging:\n\n| Operation Type | Expected Log | Where to Add |\n|---------------|-------------|--------------|\n| Incoming request handling | Request received + response status | Entry\u002Fexit of route handler |\n| External API call | Request sent + response status + duration | Before\u002Fafter HTTP client call |\n| DB write (INSERT\u002FUPDATE\u002FDELETE) | Operation + affected entity + count | Before\u002Fafter ORM\u002Fquery call |\n| Auth decision | Result (allow\u002Fdeny) + reason | After auth check |\n| State transition | Old state → new state + trigger | At transition point |\n| Background job | Start + complete\u002Ffail + duration | Entry\u002Fexit of job handler |\n| File\u002Fresource operation | Open\u002Fclose + path + size | At I\u002FO operation |\n\n**Log Format Quality** (10-criterion checklist per `references\u002Flog_analysis_output_format.md`):\n\n| # | Criterion | Check |\n|---|-----------|-------|\n| 1 | Dual format | JSON in prod, readable in dev |\n| 2 | Timestamp | Consistent, timezone-aware |\n| 3 | Level field | Present, uppercase |\n| 4 | Trace\u002FCorrelation ID | Present in every entry, async-safe |\n| 5 | Service name | Identifies source service |\n| 6 | Source location | module:line + function |\n| 7 | Extra context | Structured fields, not string interpolation |\n| 8 | PII redaction | Passwords, API keys, emails handled |\n| 9 | Noise suppression | Duplicate filters, third-party suppressed |\n| 10 | Parseability | Dev: pipe-delimited; prod: valid JSON per line |\n\nScore: passed criteria \u002F 10.\n\n### Phase 4: Stack Trace Mapping + Fix Recommendations\n\nFor each Real Bug:\n1) Extract stack trace frames; identify origin frame (first frame in project code, not in node_modules\u002Fsite-packages)\n2) Map to source file:line\n3) Generate fix recommendation: what to change, where, effort estimate (S\u002FM\u002FL)\n\n**Prioritize using Sentry-inspired dimensions:**\n- High-volume (occurrence count), Post-test regression (new errors), High-impact path (auth\u002Fpayment\u002FDB), Correlated traces (trace_id across services)\n\n### Phase 5: Generate Report\n\n**MANDATORY READ:** Load `references\u002Flog_analysis_output_format.md`\n\nOutput report to chat with header `## Test Log Analysis`. Include:\n- Signals table (Real Bugs count, Test Artifacts filtered, Log Noise status, Log Format score, Log Quality score)\n- Real Bugs table (priority, category, error, source, fix recommendation)\n- Filtered table (category, count, examples)\n- Log Quality Issues table (dimension, service, issue, recommendation)\n- Noise Report table (count, ratio, service, level, template, action)\n- Machine-readable block `\u003C!-- LOG-ANALYSIS-DATA ... -->` for programmatic consumption\n\n### Phase 6: Meta-Analysis\n\nOptional reference: load `references\u002Fmeta_analysis_protocol.md` only when the user asks for post-run meta-analysis or protocol-formatted run reflection.\n\nSkill type: `execution-worker`. When requested, run after all phases complete.\n\n## Verdict Contribution\n\nQuality coordinator normalization matrix component:\n\n| Status | Maps To | Penalty |\n|--------|---------|---------|\n| CLEAN | -- | 0 |\n| WARNINGS_ONLY | -- | 0 |\n| REAL_BUGS_FOUND | FAIL | -20 |\n| SKIPPED \u002F NO_LOG_SOURCES | ignored | 0 |\n\nLog quality\u002Fformat issues are INFORMATIONAL — do not affect quality verdict. Only Real Bugs block.\n\n## Critical Rules\n- No status changes or task creation; report only.\n- Test Artifacts and Expected Behavior are ALWAYS filtered — never count as bugs.\n- Log quality issues are advisory — inform, don't block.\n- Script must handle gracefully: no Docker, no log files, no Loki → `NO_LOG_SOURCES`.\n- Language preservation in comments (EN\u002FRU).\n\n## Runtime Summary Artifact\n\n**MANDATORY READ:** Load `references\u002Fquality_summary_contract.md`, `references\u002Fquality_worker_runtime_contract.md`\n\nRuntime profile:\n- family: `quality-worker`\n- worker: `ln-514`\n- summary kind: `quality-worker`\n- payload fields used by coordinators: `worker`, `status`, `verdict`, `issues`, `warnings`, `artifact_path`\n\nInvocation rules:\n- standalone: omit `runId` and `summaryArtifactPath`\n- managed: pass both `runId` and exact `summaryArtifactPath`\n- always write the validated summary before terminal outcome\n\n## Definition of Done\n\n- [ ] Script deployed to target project `scripts\u002F` (or already exists)\n- [ ] Log source detected and script executed (or NO_LOG_SOURCES returned)\n- [ ] Errors classified into 4 categories; Real Bugs identified\n- [ ] Log quality assessed (6 dimensions + 10-criterion format checklist)\n- [ ] Stack traces mapped to source files for Real Bugs\n- [ ] Report output to chat with signals table + machine-readable block\n\n## Reference Files\n- **Error taxonomy:** `references\u002Ferror_taxonomy.md`\n- **Output format:** `references\u002Flog_analysis_output_format.md`\n- **Analysis script:** `references\u002Fscripts\u002Fanalyze_test_logs.mjs`\n\n---\n**Version:** 1.0.0\n**Last Updated:** 2026-03-13\n",{"name":5,"model":48,"license":15,"description":7},"claude-sonnet-4-6","main","fbfb242f793fdf040f3a1a6b100896c188c228c8","_AI-Automation\u002Fclaude-code-skills-levnikolaevich\u002Fplugins\u002Fagile-workflow\u002Fskills\u002Fln-514-test-log-analyzer",1,"https:\u002F\u002Fgithub.com\u002Fvitalikpestov\u002FSkills-Catalog","https:\u002F\u002Fgithub.com\u002Fvitalikpestov","Listing on crypto exchanges","2026-06-15 22:12:56",{"source":8,"skillName":5,"commands":58,"prompt":68,"zipAvailable":69},[59,62,65],{"tool":60,"command":61},"npx","npx skills add vitalikpestov\u002FSkills-Catalog --skill ln-514-test-log-analyzer",{"tool":63,"command":64},"bunx","bunx skills add vitalikpestov\u002FSkills-Catalog --skill ln-514-test-log-analyzer",{"tool":66,"command":67},"pnpm","pnpm dlx skills add vitalikpestov\u002FSkills-Catalog --skill ln-514-test-log-analyzer","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fvitalikpestov\u002FSkills-Catalog\u002Fblob\u002Fmain\u002F_AI-Automation\u002Fclaude-code-skills-levnikolaevich\u002Fplugins\u002Fagile-workflow\u002Fskills\u002Fln-514-test-log-analyzer\u002FSKILL.md",true,[71,77,81,85,89,93,97,101,107,111,115,119,123,127,131,135,139,143,147,151,155],{"path":72,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":75,"sourceHtmlUrl":76},"references\u002Fcoordinator_summary_contract.md","REFERENCE","参考文档",1009,"https:\u002F\u002Fgithub.com\u002Fvitalikpestov\u002FSkills-Catalog\u002Fblob\u002Fmain\u002F_AI-Automation\u002Fclaude-code-skills-levnikolaevich\u002Fplugins\u002Fagile-workflow\u002Fskills\u002Fln-514-test-log-analyzer\u002Freferences\u002Fcoordinator_summary_contract.md",{"path":78,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":79,"sourceHtmlUrl":80},"references\u002Ferror_taxonomy.md",7072,"https:\u002F\u002Fgithub.com\u002Fvitalikpestov\u002FSkills-Catalog\u002Fblob\u002Fmain\u002F_AI-Automation\u002Fclaude-code-skills-levnikolaevich\u002Fplugins\u002Fagile-workflow\u002Fskills\u002Fln-514-test-log-analyzer\u002Freferences\u002Ferror_taxonomy.md",{"path":82,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":83,"sourceHtmlUrl":84},"references\u002Flog_analysis_output_format.md",5777,"https:\u002F\u002Fgithub.com\u002Fvitalikpestov\u002FSkills-Catalog\u002Fblob\u002Fmain\u002F_AI-Automation\u002Fclaude-code-skills-levnikolaevich\u002Fplugins\u002Fagile-workflow\u002Fskills\u002Fln-514-test-log-analyzer\u002Freferences\u002Flog_analysis_output_format.md",{"path":86,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":87,"sourceHtmlUrl":88},"references\u002Fmeta_analysis_protocol.md",1509,"https:\u002F\u002Fgithub.com\u002Fvitalikpestov\u002FSkills-Catalog\u002Fblob\u002Fmain\u002F_AI-Automation\u002Fclaude-code-skills-levnikolaevich\u002Fplugins\u002Fagile-workflow\u002Fskills\u002Fln-514-test-log-analyzer\u002Freferences\u002Fmeta_analysis_protocol.md",{"path":90,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":91,"sourceHtmlUrl":92},"references\u002Foutput_normalization.md",3721,"https:\u002F\u002Fgithub.com\u002Fvitalikpestov\u002FSkills-Catalog\u002Fblob\u002Fmain\u002F_AI-Automation\u002Fclaude-code-skills-levnikolaevich\u002Fplugins\u002Fagile-workflow\u002Fskills\u002Fln-514-test-log-analyzer\u002Freferences\u002Foutput_normalization.md",{"path":94,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":95,"sourceHtmlUrl":96},"references\u002Fquality_summary_contract.md",674,"https:\u002F\u002Fgithub.com\u002Fvitalikpestov\u002FSkills-Catalog\u002Fblob\u002Fmain\u002F_AI-Automation\u002Fclaude-code-skills-levnikolaevich\u002Fplugins\u002Fagile-workflow\u002Fskills\u002Fln-514-test-log-analyzer\u002Freferences\u002Fquality_summary_contract.md",{"path":98,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":99,"sourceHtmlUrl":100},"references\u002Fquality_worker_runtime_contract.md",2959,"https:\u002F\u002Fgithub.com\u002Fvitalikpestov\u002FSkills-Catalog\u002Fblob\u002Fmain\u002F_AI-Automation\u002Fclaude-code-skills-levnikolaevich\u002Fplugins\u002Fagile-workflow\u002Fskills\u002Fln-514-test-log-analyzer\u002Freferences\u002Fquality_worker_runtime_contract.md",{"path":102,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":105,"sourceHtmlUrl":106},"references\u002Fscripts\u002Fanalyze_test_logs.mjs","SCRIPT","脚本",19833,"https:\u002F\u002Fgithub.com\u002Fvitalikpestov\u002FSkills-Catalog\u002Fblob\u002Fmain\u002F_AI-Automation\u002Fclaude-code-skills-levnikolaevich\u002Fplugins\u002Fagile-workflow\u002Fskills\u002Fln-514-test-log-analyzer\u002Freferences\u002Fscripts\u002Fanalyze_test_logs.mjs",{"path":108,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":109,"sourceHtmlUrl":110},"references\u002Fscripts\u002Fcoordinator-runtime\u002Flib\u002Fartifacts.mjs",2463,"https:\u002F\u002Fgithub.com\u002Fvitalikpestov\u002FSkills-Catalog\u002Fblob\u002Fmain\u002F_AI-Automation\u002Fclaude-code-skills-levnikolaevich\u002Fplugins\u002Fagile-workflow\u002Fskills\u002Fln-514-test-log-analyzer\u002Freferences\u002Fscripts\u002Fcoordinator-runtime\u002Flib\u002Fartifacts.mjs",{"path":112,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":113,"sourceHtmlUrl":114},"references\u002Fscripts\u002Fcoordinator-runtime\u002Flib\u002Fcli-helpers.mjs",3569,"https:\u002F\u002Fgithub.com\u002Fvitalikpestov\u002FSkills-Catalog\u002Fblob\u002Fmain\u002F_AI-Automation\u002Fclaude-code-skills-levnikolaevich\u002Fplugins\u002Fagile-workflow\u002Fskills\u002Fln-514-test-log-analyzer\u002Freferences\u002Fscripts\u002Fcoordinator-runtime\u002Flib\u002Fcli-helpers.mjs",{"path":116,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":117,"sourceHtmlUrl":118},"references\u002Fscripts\u002Fcoordinator-runtime\u002Flib\u002Fcore.mjs",19048,"https:\u002F\u002Fgithub.com\u002Fvitalikpestov\u002FSkills-Catalog\u002Fblob\u002Fmain\u002F_AI-Automation\u002Fclaude-code-skills-levnikolaevich\u002Fplugins\u002Fagile-workflow\u002Fskills\u002Fln-514-test-log-analyzer\u002Freferences\u002Fscripts\u002Fcoordinator-runtime\u002Flib\u002Fcore.mjs",{"path":120,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":121,"sourceHtmlUrl":122},"references\u002Fscripts\u002Fcoordinator-runtime\u002Flib\u002Floop-health.mjs",7667,"https:\u002F\u002Fgithub.com\u002Fvitalikpestov\u002FSkills-Catalog\u002Fblob\u002Fmain\u002F_AI-Automation\u002Fclaude-code-skills-levnikolaevich\u002Fplugins\u002Fagile-workflow\u002Fskills\u002Fln-514-test-log-analyzer\u002Freferences\u002Fscripts\u002Fcoordinator-runtime\u002Flib\u002Floop-health.mjs",{"path":124,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":125,"sourceHtmlUrl":126},"references\u002Fscripts\u002Fcoordinator-runtime\u002Flib\u002Fruntime-constants.mjs",3880,"https:\u002F\u002Fgithub.com\u002Fvitalikpestov\u002FSkills-Catalog\u002Fblob\u002Fmain\u002F_AI-Automation\u002Fclaude-code-skills-levnikolaevich\u002Fplugins\u002Fagile-workflow\u002Fskills\u002Fln-514-test-log-analyzer\u002Freferences\u002Fscripts\u002Fcoordinator-runtime\u002Flib\u002Fruntime-constants.mjs",{"path":128,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":129,"sourceHtmlUrl":130},"references\u002Fscripts\u002Fcoordinator-runtime\u002Flib\u002Fschemas.mjs",38117,"https:\u002F\u002Fgithub.com\u002Fvitalikpestov\u002FSkills-Catalog\u002Fblob\u002Fmain\u002F_AI-Automation\u002Fclaude-code-skills-levnikolaevich\u002Fplugins\u002Fagile-workflow\u002Fskills\u002Fln-514-test-log-analyzer\u002Freferences\u002Fscripts\u002Fcoordinator-runtime\u002Flib\u002Fschemas.mjs",{"path":132,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":133,"sourceHtmlUrl":134},"references\u002Fscripts\u002Fcoordinator-runtime\u002Flib\u002Fvalidate.mjs",4943,"https:\u002F\u002Fgithub.com\u002Fvitalikpestov\u002FSkills-Catalog\u002Fblob\u002Fmain\u002F_AI-Automation\u002Fclaude-code-skills-levnikolaevich\u002Fplugins\u002Fagile-workflow\u002Fskills\u002Fln-514-test-log-analyzer\u002Freferences\u002Fscripts\u002Fcoordinator-runtime\u002Flib\u002Fvalidate.mjs",{"path":136,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":137,"sourceHtmlUrl":138},"references\u002Fscripts\u002Fcoordinator-runtime\u002Flib\u002Fworker-guards.mjs",3139,"https:\u002F\u002Fgithub.com\u002Fvitalikpestov\u002FSkills-Catalog\u002Fblob\u002Fmain\u002F_AI-Automation\u002Fclaude-code-skills-levnikolaevich\u002Fplugins\u002Fagile-workflow\u002Fskills\u002Fln-514-test-log-analyzer\u002Freferences\u002Fscripts\u002Fcoordinator-runtime\u002Flib\u002Fworker-guards.mjs",{"path":140,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":141,"sourceHtmlUrl":142},"references\u002Fscripts\u002Fcoordinator-runtime\u002Flib\u002Fworker-runtime.mjs",6192,"https:\u002F\u002Fgithub.com\u002Fvitalikpestov\u002FSkills-Catalog\u002Fblob\u002Fmain\u002F_AI-Automation\u002Fclaude-code-skills-levnikolaevich\u002Fplugins\u002Fagile-workflow\u002Fskills\u002Fln-514-test-log-analyzer\u002Freferences\u002Fscripts\u002Fcoordinator-runtime\u002Flib\u002Fworker-runtime.mjs",{"path":144,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":145,"sourceHtmlUrl":146},"references\u002Fscripts\u002Fquality-worker-runtime\u002Fcli.mjs",7352,"https:\u002F\u002Fgithub.com\u002Fvitalikpestov\u002FSkills-Catalog\u002Fblob\u002Fmain\u002F_AI-Automation\u002Fclaude-code-skills-levnikolaevich\u002Fplugins\u002Fagile-workflow\u002Fskills\u002Fln-514-test-log-analyzer\u002Freferences\u002Fscripts\u002Fquality-worker-runtime\u002Fcli.mjs",{"path":148,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":149,"sourceHtmlUrl":150},"references\u002Fscripts\u002Fquality-worker-runtime\u002Flib\u002Fguards.mjs",914,"https:\u002F\u002Fgithub.com\u002Fvitalikpestov\u002FSkills-Catalog\u002Fblob\u002Fmain\u002F_AI-Automation\u002Fclaude-code-skills-levnikolaevich\u002Fplugins\u002Fagile-workflow\u002Fskills\u002Fln-514-test-log-analyzer\u002Freferences\u002Fscripts\u002Fquality-worker-runtime\u002Flib\u002Fguards.mjs",{"path":152,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":153,"sourceHtmlUrl":154},"references\u002Fscripts\u002Fquality-worker-runtime\u002Flib\u002Fphases.mjs",1604,"https:\u002F\u002Fgithub.com\u002Fvitalikpestov\u002FSkills-Catalog\u002Fblob\u002Fmain\u002F_AI-Automation\u002Fclaude-code-skills-levnikolaevich\u002Fplugins\u002Fagile-workflow\u002Fskills\u002Fln-514-test-log-analyzer\u002Freferences\u002Fscripts\u002Fquality-worker-runtime\u002Flib\u002Fphases.mjs",{"path":156,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":157,"sourceHtmlUrl":158},"references\u002Fscripts\u002Fquality-worker-runtime\u002Flib\u002Fstore.mjs",2011,"https:\u002F\u002Fgithub.com\u002Fvitalikpestov\u002FSkills-Catalog\u002Fblob\u002Fmain\u002F_AI-Automation\u002Fclaude-code-skills-levnikolaevich\u002Fplugins\u002Fagile-workflow\u002Fskills\u002Fln-514-test-log-analyzer\u002Freferences\u002Fscripts\u002Fquality-worker-runtime\u002Flib\u002Fstore.mjs",[160,200,225,242,265,297],{"skillNo":161,"name":162,"nameZh":6,"description":163,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":164,"categories":165,"keywords":178,"publishedAt":199},"01M71V1MC994P553631JZSWVYD","solana-dev","Use when user asks to \"build a Solana dapp\", \"write an Anchor program\", \"create a token\", \"debug Solana errors\", \"set up wallet connection\", \"test my Solana program\", \"deploy to devnet\", or \"explain Solana concepts\" (rent, accounts, PDAs, CPIs, etc.). End-to-end Solana development playbook covering wallet connection, Anchor\u002FPinocchio programs, Codama client generation, LiteSVM\u002FMollusk\u002FSurfpool testing, and security checklists. Integrates with the Solana MCP server for live documentation search. Prefers framework-kit (@solana\u002Fclient + @solana\u002Freact-hooks) for UI, wallet-standard-first connection (incl. ConnectorKit), @solana\u002Fkit for client\u002FRPC code, and @solana\u002Fweb3-compat for legacy boundaries.","https:\u002F\u002Fgithub.com\u002Fvitalikpestov\u002FSkills-Catalog\u002Fblob\u002Fmain\u002F_Web3\u002Fsolana-dev\u002Fskill\u002FSKILL.md",[166,167,170,173],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":168,"categoryName":169,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发",{"categoryNo":171,"categoryName":172,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":174,"categoryName":175,"taxonomyType":176,"taxonomyTypeDesc":177},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198],"dev","solana dev","solana","Wallet","search","testing","solana cli","kit","MCP","web3","react","create","server","write","playbook","live","security","ui","concepts","toolchain","2026-11-10 13:02:02",{"skillNo":201,"name":202,"nameZh":6,"description":203,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":204,"categories":205,"keywords":206,"publishedAt":199},"01M71TYQPHE2YGKTT7DG9QCW3K","generating-trading-signals","Generate trading signals using technical indicators (RSI, MACD, Bollinger Bands, etc.).\nCombines multiple indicators into composite signals with confidence scores.\nUse when analyzing assets for trading opportunities or checking technical indicators.\nTrigger with phrases like \"get trading signals\", \"check indicators\", \"analyze for entry\",\n\"scan for opportunities\", \"generate buy\u002Fsell signals\", or \"technical analysis\".","https:\u002F\u002Fgithub.com\u002Fvitalikpestov\u002FSkills-Catalog\u002Fblob\u002Fmain\u002F_Trading-Finance\u002Fgenerating-trading-signals\u002FSKILL.md",[],[207,208,209,210,211,212,213,214,215,216,217,218,33,41,219,220,221,222,223,224],"generating trading signals","signals","trading signals","trading","get","technical indicators","for","scan","rsi","trigger","python","technical","Bash","analysis","code","io","check","analyze",{"skillNo":226,"name":227,"nameZh":6,"description":228,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":229,"categories":230,"keywords":231,"publishedAt":199},"01M71TY4CR3GKGQ3M12X9WN95Y","prediction-monitor","Prediction Monitor - Auto-activating skill for ML Deployment.\nTriggers on: prediction monitor, prediction monitor\nPart of the ML Deployment skill category.","https:\u002F\u002Fgithub.com\u002Fvitalikpestov\u002FSkills-Catalog\u002Fblob\u002Fmain\u002F_Trading-Finance\u002FAI Predictions\u002Fprediction-monitor\u002FSKILL.md",[],[232,233,234,213,235,236,192,237,238,239,240,241,219],"prediction","monitor","prediction monitor","deployment","read","edit","triggers","grep","auto","ml",{"skillNo":243,"name":244,"nameZh":6,"description":245,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":246,"categories":247,"keywords":248,"publishedAt":199},"01M71TXD9MYXZC39HCPP909HTZ","strategy-advisor","High-level strategic thinking and business decision guidance for planning and direction-setting.\nUse when: making strategic decisions, evaluating business options, setting direction, analyzing\ntrade-offs, or when user mentions strategy, business planning, competitive analysis, or long-term planning.","https:\u002F\u002Fgithub.com\u002Fvitalikpestov\u002FSkills-Catalog\u002Fblob\u002Fmain\u002F_Product-Apps\u002Fstrategy-advisor\u002FSKILL.md",[],[249,250,251,252,253,254,255,256,257,213,258,259,260,33,261,262,41,263,220,264],"strategy advisor","strategy","advisor","competitive","setting","thinking","planning","direction","trade-offs","long","decision","strategic","business","apps","decisions","trade",{"skillNo":266,"name":267,"nameZh":6,"description":268,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":269,"sourceHtmlUrl":270,"categories":271,"keywords":278,"publishedAt":199},"01M71TWHBT2R1P1FNWTW67ZREP","app-paywall-pilot","Design, audit, debug, and implement App Store-compliant mobile paywalls, subscription flows, pricing screens, trials, offers, feature gates, and subscription lifecycle UX. Use when the user asks to audit my paywall, fix App Store 3.1.2 rejection, improve trial-to-paid, choose plans\u002Fprices\u002Ftrials, review RevenueCat\u002FAdapty\u002FApphud\u002FSuperwall setup, calculate LTV\u002FROAS, or build paywall implementation.","https:\u002F\u002Fgithub.com\u002Fvitalikpestov\u002FSkills-Catalog\u002Fblob\u002Fmain\u002F_Product-Apps\u002Ffrom-dosesync\u002Fapp-paywall-pilot\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fvitalikpestov\u002FSkills-Catalog\u002Fblob\u002Fmain\u002F_Product-Apps\u002Ffrom-dosesync\u002Fapp-paywall-pilot\u002FSKILL.md",[272,275],{"categoryNo":273,"categoryName":274,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":276,"categoryName":277,"taxonomyType":176,"taxonomyTypeDesc":177},"01JBSEEDCAT000000000000032","设计师",[279,280,281,282,283,284,285,286,287,288,289,290,41,38,291,292,293,294,295,296],"app","paywall","app paywall pilot","paid","paywalls","prices","choose","flows","fix","improve","design","app store","audit","ux","subscription","mobile","my","calculate",{"skillNo":298,"name":299,"nameZh":6,"description":300,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":301,"licenseFileUrl":302,"sourceHtmlUrl":303,"categories":304,"keywords":307,"publishedAt":199},"01M71TWET8GFKEB7ZHJPMQX29V","figma","Use the Figma MCP server to fetch design context, screenshots, variables, and assets from Figma, and to translate Figma nodes into production code. Trigger when a task involves Figma URLs, node IDs, design-to-code implementation, or Figma MCP setup and troubleshooting.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fvitalikpestov\u002FSkills-Catalog\u002Fblob\u002Fmain\u002F_Product-Apps\u002Ffigma\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fvitalikpestov\u002FSkills-Catalog\u002Fblob\u002Fmain\u002F_Product-Apps\u002Ffigma\u002FSKILL.md",[305,306],{"categoryNo":171,"categoryName":172,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":276,"categoryName":277,"taxonomyType":176,"taxonomyTypeDesc":177},[299,308,309,310,311,216,289,187,33,41,312,313,221,314,191,315,316,317,318,319],"fetch","ids","mcp setup","translate","mcp server","Variables","task","Nodes","figma mcp","code implementation","node","assets"]