[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M718W5XQETPQYVGSB0JYJR0F":3,"skill-same:01M718W5XQETPQYVGSB0JYJR0F":105},{"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":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":49,"commitSha":50,"skillDirectory":51,"forksCount":52,"repositoryHtmlUrl":53,"repositoryHomepageUrl":6,"ownerHtmlUrl":54,"ownerBlogUrl":55,"ownerDescription":6,"updatedAt":56,"install":57,"resources":70},"01M718W5XQETPQYVGSB0JYJR0F","oma-scholar",null,"Scholarly research companion using Knows sidecar spec (.knows.yaml). Generates, validates, reviews, queries, and compares structured research-paper sidecars, and fetches them from knows.academy. Use for academic literature search, survey synthesis, paper authoring assistance, and peer review with token-efficient claim\u002Fevidence\u002Frelation access.","vasceannie\u002Fslopgate","vasceannie","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F20271133?v=4","01M718RGA8VV2EF22XJEMXVQ0Q","Travis Vasceannie","01M718RGB0GWSXBBZBN67Q6NHQ",1,"MIT","https:\u002F\u002Fgithub.com\u002Fvasceannie\u002Fslopgate\u002Fblob\u002Fmaster\u002F.agents\u002Fskills\u002Foma-scholar\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"oma scholar","scholar","queries","with","peer","use","for","evidence","authoring","companion","token","literature search","peer review","literature","review","access","claim","survey","search","reviews","2026-11-10 10:12:30",false,"---\nname: oma-scholar\ndescription: Scholarly research companion using Knows sidecar spec\n  (.knows.yaml). Generates, validates, reviews, queries, and compares structured\n  research-paper sidecars, and fetches them from knows.academy. Use for academic\n  literature search, survey synthesis, paper authoring assistance, and peer\n  review with token-efficient claim\u002Fevidence\u002Frelation access.\n---\n\n# Scholar - Research Paper Sidecar Companion\n\n## Scheduling\n\n### Goal\nSearch, fetch, generate, validate, analyze, review, and compare scholarly paper sidecars using the Knows `.knows.yaml` spec for token-efficient research workflows.\n\n### Intent signature\n- User asks for academic literature search, sidecar generation, sidecar validation, paper claims\u002Fevidence summary, structural paper comparison, or peer review as sidecar.\n- User references Knows, `.knows.yaml`, knows.academy, OpenAlex, claims, evidence, relations, or paper sidecars.\n\n### When to use\n\n- Reading research papers token-efficiently via Knows sidecars (~700 tokens for claims-only vs ~10K for full PDF)\n- Generating `.knows.yaml` sidecars from your own paper drafts, LaTeX, or research notes\n- Validating sidecar structure (rule-based) before sharing\n- Producing peer reviews as sidecars\n- Querying or summarizing existing sidecars\n- Structurally comparing two papers (claims, methods, evidence)\n- Searching\u002Ffetching sidecars from `knows.academy` (2026 papers only; current counts via `\u002Fapi\u002Fproxy\u002Fjobs\u002Fstats`)\n\n### When NOT to use\n\n- General web search or non-academic content -> use `oma-search`\n- Translating papers -> use `oma-translation`\n- PDF parsing only (no sidecar) -> use `oma-pdf`\n- Submitting sidecars back to knows.academy -> out of scope (host LLM only consumes\u002Fproduces locally)\n- Full peer-review workflow with editor system -> out of scope\n\n### Expected inputs\n- Paper, abstract, draft, LaTeX, research notes, sidecar file, DOI, OpenAlex ID, Knows record ID, or search query\n- Desired mode: generate, validate, review, analyze, compare, or remote fetch\n- Optional strictness, section filter, or CI behavior\n\n### Expected outputs\n- `.knows.yaml` sidecar, review sidecar, lint report, search\u002Ffetch result, natural-language analysis, or structural comparison\n- Sidecars conforming to v0.9.0 \u002F `paper@1` profile\n- Validation status and warnings before sharing generated sidecars\n\n### Dependencies\n- `oma scholar` CLI subcommands\n- knows.academy public API; OpenAlex and Semantic Scholar fallbacks\n- `resources\u002Fsidecar-spec.md`, API endpoints, OpenAlex setup, upstream cache, checklist, and execution protocol\n\n### Control-flow features\n- Branches by mode, source availability, Knows\u002FOpenAlex coverage, strict vs lenient validation, and fetched section\n- Reads\u002Fwrites YAML sidecars and may call public APIs\n- Avoids fabrication when source evidence is missing\n\n## Structural Flow\n\n### Entry\n1. Identify mode and source artifact\u002Fquery.\n2. Resolve paper identity through Knows or OpenAlex when needed.\n3. Load sidecar spec and mode-specific protocol.\n\n### Scenes\n1. **PREPARE**: Select mode and gather source or remote identifiers.\n2. **ACQUIRE**: Fetch paper metadata, sidecar sections, or local source text.\n3. **REASON**: Extract claims, evidence, relations, provenance, or comparison structure.\n4. **ACT**: Generate, lint, review, analyze, compare, or fetch sidecar data.\n5. **VERIFY**: Validate schema, enums, IDs, relations, and provenance.\n6. **FINALIZE**: Return sidecar, report, summary, or comparison with caveats.\n\n### Transitions\n- If knows.academy lacks the paper, fall back to OpenAlex metadata\u002Fabstract.\n- If generating a sidecar, run lint before sharing.\n- If consuming third-party sidecars with dangling references, use lenient mode when appropriate.\n- If source evidence is absent, omit fields instead of guessing.\n\n### Failure and recovery\n- If remote API times out, retry or use OpenAlex fallback.\n- If YAML fails parsing, fix indentation and scalar types.\n- If relation density or orphan statements warn, add supported-by relations when source evidence supports them.\n\n### Exit\n- Success: requested sidecar operation completes with validation status.\n- Partial success: missing metadata, fallback source, or validation warnings are explicit.\n\n## Logical Operations\n\n### Actions\n| Action | SSL primitive | Evidence |\n|--------|---------------|----------|\n| Select mode | `SELECT` | Generate\u002FValidate\u002FReview\u002FAnalyze\u002FCompare\u002FRemote |\n| Read paper or sidecar | `READ` | Source files or YAML |\n| Request remote data | `REQUEST` | Knows\u002FOpenAlex APIs |\n| Infer claims\u002Fevidence\u002Frelations | `INFER` | Sidecar generation\u002Fanalysis |\n| Write sidecar | `WRITE` | `.knows.yaml` outputs |\n| Validate sidecar | `VALIDATE` | `oma scholar lint` |\n| Report result | `NOTIFY` | Summary or lint report |\n\n### Tools and instruments\n- `oma scholar search|resolve|get|lint`\n- Knows public API, OpenAlex fallback, sidecar spec, checklist\n\n### Canonical command path\n```bash\noma scholar search \"\u003Cquery>\"\noma scholar resolve \"\u003Ctitle-or-doi>\"\noma scholar get \"\u003Crecord-id-or-doi>\"\noma scholar lint \"\u003Cpaper.knows.yaml>\"\n```\n\n### Resource scope\n| Scope | Resource target |\n|-------|-----------------|\n| `LOCAL_FS` | Paper drafts, sidecar YAML, review sidecars |\n| `NETWORK` | knows.academy and OpenAlex APIs |\n| `PROCESS` | `oma scholar` CLI and lint |\n| `USER_DATA` | User-provided paper content and research notes |\n\n### Preconditions\n- Mode and source are identifiable.\n- Spec rules are available for generation or validation.\n\n### Effects and side effects\n- May create local sidecar or review sidecar files.\n- May query public scholarly APIs.\n- Does not submit sidecars back to knows.academy.\n\n### Guardrails\n\n1. **Target spec is v0.9.0 \u002F `paper@1` profile** (review sidecars use `review@1`): verified against production sidecars from knows.academy; see `resources\u002Fsidecar-spec.md`\n2. **Host LLM generates sidecars**: never shell out to `anthropic` SDK or external LLM CLI; this skill runs inside an agent\n3. **Anti-fabrication**: if DOI\u002Fvenue\u002Fyear is not visible in source, **omit the key entirely**; never write `doi: TODO` or guess\n4. **Top-level metadata**: `title`, `authors`, `venue`, `year` live at the top level (no `metadata` wrapper)\n5. **Field names are exact**: `statement_type`, `evidence_type`, `predicate`, `artifact_type` (not `type`\u002F`claim`)\n6. **Provenance has SINGLE actor**: `provenance.actor` is one object, NOT a `provenance.actors` array\n7. **Confidence is an object**: `{claim_strength: ..., extraction_fidelity: ...}`, both from `high|medium|low`\n8. **Coverage is an object**: `coverage.statements` (4-value enum) + `coverage.evidence` (3-value enum)\n9. **Closed enums**: actor `tool|person|org` (never `ai`\u002F`llm`\u002F`model`); artifact role `subject|supporting|cited`; predicates in present tense\n10. **Numbers unquoted**: `value: 22`, never `value: '22'`\n11. **Relation density**: average ≥1.5 relations per statement; every claim needs `supported_by` evidence (checklist rule — lint enforces only the average-ratio warning and a per-id warning for statements with zero relations)\n12. **ID format**: descriptive kebab-case with prefix: `stmt:privacy-budget-tradeoff`, `ev:cifar10-accuracy-table`, `art:paper`\n13. **Validate before sharing**: run `oma scholar lint` after Generate and Review; cross-record refs (`record_id#local_id`) in review sidecars are recognized and not flagged as dangling\n14. **Remote API has no auth**: `https:\u002F\u002Fknows.academy\u002Fapi\u002Fproxy\u002F*` is public; do not invent auth headers\n15. **Partial fetch param is `section` (singular)**: fixed enum `statements|evidence|relations|artifacts|citation`\n16. **Fallback API keys are optional**: `OPENALEX_API_KEY` (metadata enrichment) and `S2_API_KEY` (Semantic Scholar dedicated rate limit) both improve throughput but the cascade degrades gracefully without them\n17. **Sidecar content stays English**: schema fields, IDs, statement text follow upstream convention; user-facing responses follow `oma-config.yaml` `language`\n18. **Spec drift awareness**: our local rules track v0.9.0 production behavior, which differs from the upstream `knows.md` natural-language description; refresh `resources\u002Fupstream-spec-cache.md` periodically\n\n### Modes\n\n| Mode | Trigger | Output |\n|------|---------|--------|\n| **Generate** | \"create sidecar from this paper \u002F abstract \u002F draft\", \"generate `.knows.yaml`\" | `{paper}.knows.yaml` (host LLM emits, then `oma scholar lint` validates) |\n| **Validate** | \"lint this sidecar\", \"validate `.knows.yaml`\" | Pass\u002Ffail report with file:line issues |\n| **Review** | \"peer review this paper as sidecar\" | `{paper}.review.knows.yaml` |\n| **Analyze** | \"summarize this sidecar\", \"what claims does it make?\" | Natural-language answer |\n| **Compare** | \"compare paper A and paper B structurally\" | Diff table (claims\u002Fmethods\u002Fevidence) |\n| **Remote** | \"find papers on X\", \"fetch sidecar :id\", \"get claims only for :id\" | Search results \u002F sidecar payload |\n\n### Provider Fallback (knows.academy → OpenAlex → Semantic Scholar)\n\n`knows.academy` currently indexes **only 2026 papers** (mostly arXiv). For\nolder or non-2026 papers (Transformer 2017, BERT 2018, classics, journals),\nthe skill automatically falls back to **OpenAlex** for metadata and abstract,\nthen to **Semantic Scholar** (AI TL;DR, citation + influential-citation\ncounts) when OpenAlex also has nothing. See `resources\u002Ffallback-providers.md`.\n\nUse the `oma scholar` CLI subcommands:\n\n```bash\n# Hybrid search: knows first, OpenAlex fallback\noma scholar search \"vision language action\"\n\n# Cross-source resolve: figures out which source has the right paper\noma scholar resolve \"Attention Is All You Need\"\n\n# Get by id (knows record_id, OpenAlex W-id, DOI, arXiv:\u003Cid>, CorpusId:\u003Cn>)\noma scholar get \"10.48550\u002FarXiv.1706.03762\"\n```\n\nWhen OpenAlex returns the answer (knows.academy lacks the paper), use the\nreturned abstract as input to **Mode 1 Generate** to produce a local sidecar.\n\n### Quick Reference\n\n#### Search (knows + auto OpenAlex fallback)\n```bash\noma scholar search \"diffusion super resolution\"\noma scholar search --year-min 2024 \"vision language action\"\n```\n\n#### Find one specific paper\n```bash\noma scholar resolve \"Attention Is All You Need\"\n# returns top hit from each source + recommendation\n```\n\n#### Fetch a sidecar or work\n```bash\n# knows.academy full sidecar\noma scholar get \"knows:generated\u002Freconvla\u002F1.0.0\"\n\n# Partial fetch (claims only, ~700 tokens, 93% reduction vs PDF)\noma scholar get --section statements \"knows:generated\u002Freconvla\u002F1.0.0\"\n\n# By DOI or OpenAlex W-id (works regardless of knows.academy availability)\noma scholar get \"10.48550\u002FarXiv.1706.03762\"\n\n# Semantic Scholar: AI TL;DR + citation\u002Finfluential-citation counts\noma scholar get \"arXiv:1706.03762\"\n```\n\nWhen knows.academy is unreachable, `get knows:...` automatically falls back\nto OpenAlex by extracting the slug from the record_id. The result is marked\nwith `fallback: \"openalex\"` and contains metadata + abstract, useful for\nrunning Mode 1 Generate locally.\n\n#### Validate\n```bash\n# Strict mode for own Generate output (default)\noma scholar lint paper.knows.yaml\n\n# Lenient mode for third-party \u002F fetched sidecars\noma scholar lint --lenient remote.knows.yaml\n\n# Treat warnings as failures (CI mode)\noma scholar lint --fail-on-warning paper.knows.yaml\n```\n\nAbout **47% of knows.academy-served sidecars contain at least one dangling\ncross-reference** (typo in `subject_ref`\u002F`object_ref`, measured across 15\nproduction samples). Use `--lenient` when consuming third-party records so\nthese surface as warnings rather than blocking errors.\n\n#### Raw API (when CLI is unavailable)\n```bash\ncurl -s \"https:\u002F\u002Fknows.academy\u002Fapi\u002Fproxy\u002Fsearch?q=...\"\ncurl -s \"https:\u002F\u002Fknows.academy\u002Fapi\u002Fproxy\u002Fsidecars\u002F\u003Cencoded-id>\"\ncurl -s \"https:\u002F\u002Fknows.academy\u002Fapi\u002Fproxy\u002Fpartial?record_id=\u003Cid>&section=statements\"\ncurl -s \"https:\u002F\u002Fknows.academy\u002Fapi\u002Fproxy\u002Fjobs\u002Fstats\"   # platform health\n```\n\n### Configuration\n\nProject-specific settings: `config\u002Fscholar-config.yaml`. One key is user-tunable and lives elsewhere — read `scholar.base_url` from `.agents\u002Foma-config.yaml` first and fall back to `api.base_url` in the skill config. Everything else there (endpoint paths, timeouts, id prefixes, lint rules) is protocol shape, not preference.\n\n### Troubleshooting\n\n| Issue | Solution |\n|-------|----------|\n| `[ERROR] *.value: numeric value '22' is quoted` | Remove quotes: `value: '22'` -> `value: 22` |\n| `[ERROR] provenance.actor.type: 'ai' is not allowed` | Change to `tool`, `person`, or `org` |\n| `[ERROR] *.type: use \\`statement_type\\` instead of \\`type\\`` | Rename `type` -> `statement_type` (or `evidence_type`\u002F`predicate`\u002F`artifact_type`) |\n| `[ERROR] provenance.actors: v0.9 spec uses singular \\`actor\\`` | Replace `actors: [{...}]` array with `actor: {...}` object |\n| `[ERROR] *.object_ref: reference 'X' does not match any defined id` | Fix the `subject_ref`\u002F`object_ref` to point to a real id, OR use `--lenient` if consuming third-party data (cross-record `record_id#local_id` refs are recognized and never flagged) |\n| `[WARN] relations: avg relations\u002Fstatement is N.NN (target ≥ 1.5)` | Add more `supported_by`\u002F`depends_on` relations |\n| `[WARN] statements: only N statements; most papers warrant ≥ 8` | Expected when generating from abstract only; full-paper Generate should hit 15+ |\n| `[WARN] *.predicate: past-tense '...' is suspicious` | Switch to present tense (`evaluated_on` -> `evaluates_on`) |\n| Remote API returns empty results | Try broader query; check `\u002Fapi\u002Fproxy\u002Fjobs\u002Fstats`; CLI auto-falls-back to OpenAlex |\n| `knows.academy search failed: fetch failed` (stderr) | Platform timeout; fallback to OpenAlex is automatic; retry later for sidecars |\n| OpenAlex 403\u002F429 | Set `OPENALEX_API_KEY` (see `resources\u002Fsetup-openalex.md`) |\n| `semanticscholar error: HTTP 429` (stderr) | Anonymous pool throttled; CLI retries once then skips the source. Set `S2_API_KEY` (free form at semanticscholar.org\u002Fproduct\u002Fapi) for a dedicated limit |\n| YAML won't parse | Check indentation; numbers\u002Fbooleans must be unquoted; strings with `:` need quotes |\n\n## References\n\n- Execution steps (follow for the selected task): `resources\u002Fexecution-protocol.md`\n- Sidecar spec rules: `resources\u002Fsidecar-spec.md`\n- API endpoints: `resources\u002Fapi-endpoints.md`\n- OpenAlex setup: `resources\u002Fsetup-openalex.md`\n- Upstream spec snapshot: `resources\u002Fupstream-spec-cache.md`\n- Post-generation checklist: `resources\u002Fchecklist.md`\n- CLI subcommands: `oma scholar search|resolve|get|lint` (implementation under `cli\u002Fcommands\u002Fscholar\u002F`)\n- Context loading: `..\u002F_shared\u002Fcore\u002Fcontext-loading.md`\n- Quality principles: `..\u002F_shared\u002Fcore\u002Fquality-principles.md`\n- i18n rules: `..\u002F..\u002Frules\u002Fi18n-guide.md`","# Scholar - Research Paper Sidecar Companion\n\n## Scheduling\n\n### Goal\nSearch, fetch, generate, validate, analyze, review, and compare scholarly paper sidecars using the Knows `.knows.yaml` spec for token-efficient research workflows.\n\n### Intent signature\n- User asks for academic literature search, sidecar generation, sidecar validation, paper claims\u002Fevidence summary, structural paper comparison, or peer review as sidecar.\n- User references Knows, `.knows.yaml`, knows.academy, OpenAlex, claims, evidence, relations, or paper sidecars.\n\n### When to use\n\n- Reading research papers token-efficiently via Knows sidecars (~700 tokens for claims-only vs ~10K for full PDF)\n- Generating `.knows.yaml` sidecars from your own paper drafts, LaTeX, or research notes\n- Validating sidecar structure (rule-based) before sharing\n- Producing peer reviews as sidecars\n- Querying or summarizing existing sidecars\n- Structurally comparing two papers (claims, methods, evidence)\n- Searching\u002Ffetching sidecars from `knows.academy` (2026 papers only; current counts via `\u002Fapi\u002Fproxy\u002Fjobs\u002Fstats`)\n\n### When NOT to use\n\n- General web search or non-academic content -> use `oma-search`\n- Translating papers -> use `oma-translation`\n- PDF parsing only (no sidecar) -> use `oma-pdf`\n- Submitting sidecars back to knows.academy -> out of scope (host LLM only consumes\u002Fproduces locally)\n- Full peer-review workflow with editor system -> out of scope\n\n### Expected inputs\n- Paper, abstract, draft, LaTeX, research notes, sidecar file, DOI, OpenAlex ID, Knows record ID, or search query\n- Desired mode: generate, validate, review, analyze, compare, or remote fetch\n- Optional strictness, section filter, or CI behavior\n\n### Expected outputs\n- `.knows.yaml` sidecar, review sidecar, lint report, search\u002Ffetch result, natural-language analysis, or structural comparison\n- Sidecars conforming to v0.9.0 \u002F `paper@1` profile\n- Validation status and warnings before sharing generated sidecars\n\n### Dependencies\n- `oma scholar` CLI subcommands\n- knows.academy public API; OpenAlex and Semantic Scholar fallbacks\n- `resources\u002Fsidecar-spec.md`, API endpoints, OpenAlex setup, upstream cache, checklist, and execution protocol\n\n### Control-flow features\n- Branches by mode, source availability, Knows\u002FOpenAlex coverage, strict vs lenient validation, and fetched section\n- Reads\u002Fwrites YAML sidecars and may call public APIs\n- Avoids fabrication when source evidence is missing\n\n## Structural Flow\n\n### Entry\n1. Identify mode and source artifact\u002Fquery.\n2. Resolve paper identity through Knows or OpenAlex when needed.\n3. Load sidecar spec and mode-specific protocol.\n\n### Scenes\n1. **PREPARE**: Select mode and gather source or remote identifiers.\n2. **ACQUIRE**: Fetch paper metadata, sidecar sections, or local source text.\n3. **REASON**: Extract claims, evidence, relations, provenance, or comparison structure.\n4. **ACT**: Generate, lint, review, analyze, compare, or fetch sidecar data.\n5. **VERIFY**: Validate schema, enums, IDs, relations, and provenance.\n6. **FINALIZE**: Return sidecar, report, summary, or comparison with caveats.\n\n### Transitions\n- If knows.academy lacks the paper, fall back to OpenAlex metadata\u002Fabstract.\n- If generating a sidecar, run lint before sharing.\n- If consuming third-party sidecars with dangling references, use lenient mode when appropriate.\n- If source evidence is absent, omit fields instead of guessing.\n\n### Failure and recovery\n- If remote API times out, retry or use OpenAlex fallback.\n- If YAML fails parsing, fix indentation and scalar types.\n- If relation density or orphan statements warn, add supported-by relations when source evidence supports them.\n\n### Exit\n- Success: requested sidecar operation completes with validation status.\n- Partial success: missing metadata, fallback source, or validation warnings are explicit.\n\n## Logical Operations\n\n### Actions\n| Action | SSL primitive | Evidence |\n|--------|---------------|----------|\n| Select mode | `SELECT` | Generate\u002FValidate\u002FReview\u002FAnalyze\u002FCompare\u002FRemote |\n| Read paper or sidecar | `READ` | Source files or YAML |\n| Request remote data | `REQUEST` | Knows\u002FOpenAlex APIs |\n| Infer claims\u002Fevidence\u002Frelations | `INFER` | Sidecar generation\u002Fanalysis |\n| Write sidecar | `WRITE` | `.knows.yaml` outputs |\n| Validate sidecar | `VALIDATE` | `oma scholar lint` |\n| Report result | `NOTIFY` | Summary or lint report |\n\n### Tools and instruments\n- `oma scholar search|resolve|get|lint`\n- Knows public API, OpenAlex fallback, sidecar spec, checklist\n\n### Canonical command path\n```bash\noma scholar search \"\u003Cquery>\"\noma scholar resolve \"\u003Ctitle-or-doi>\"\noma scholar get \"\u003Crecord-id-or-doi>\"\noma scholar lint \"\u003Cpaper.knows.yaml>\"\n```\n\n### Resource scope\n| Scope | Resource target |\n|-------|-----------------|\n| `LOCAL_FS` | Paper drafts, sidecar YAML, review sidecars |\n| `NETWORK` | knows.academy and OpenAlex APIs |\n| `PROCESS` | `oma scholar` CLI and lint |\n| `USER_DATA` | User-provided paper content and research notes |\n\n### Preconditions\n- Mode and source are identifiable.\n- Spec rules are available for generation or validation.\n\n### Effects and side effects\n- May create local sidecar or review sidecar files.\n- May query public scholarly APIs.\n- Does not submit sidecars back to knows.academy.\n\n### Guardrails\n\n1. **Target spec is v0.9.0 \u002F `paper@1` profile** (review sidecars use `review@1`): verified against production sidecars from knows.academy; see `resources\u002Fsidecar-spec.md`\n2. **Host LLM generates sidecars**: never shell out to `anthropic` SDK or external LLM CLI; this skill runs inside an agent\n3. **Anti-fabrication**: if DOI\u002Fvenue\u002Fyear is not visible in source, **omit the key entirely**; never write `doi: TODO` or guess\n4. **Top-level metadata**: `title`, `authors`, `venue`, `year` live at the top level (no `metadata` wrapper)\n5. **Field names are exact**: `statement_type`, `evidence_type`, `predicate`, `artifact_type` (not `type`\u002F`claim`)\n6. **Provenance has SINGLE actor**: `provenance.actor` is one object, NOT a `provenance.actors` array\n7. **Confidence is an object**: `{claim_strength: ..., extraction_fidelity: ...}`, both from `high|medium|low`\n8. **Coverage is an object**: `coverage.statements` (4-value enum) + `coverage.evidence` (3-value enum)\n9. **Closed enums**: actor `tool|person|org` (never `ai`\u002F`llm`\u002F`model`); artifact role `subject|supporting|cited`; predicates in present tense\n10. **Numbers unquoted**: `value: 22`, never `value: '22'`\n11. **Relation density**: average ≥1.5 relations per statement; every claim needs `supported_by` evidence (checklist rule — lint enforces only the average-ratio warning and a per-id warning for statements with zero relations)\n12. **ID format**: descriptive kebab-case with prefix: `stmt:privacy-budget-tradeoff`, `ev:cifar10-accuracy-table`, `art:paper`\n13. **Validate before sharing**: run `oma scholar lint` after Generate and Review; cross-record refs (`record_id#local_id`) in review sidecars are recognized and not flagged as dangling\n14. **Remote API has no auth**: `https:\u002F\u002Fknows.academy\u002Fapi\u002Fproxy\u002F*` is public; do not invent auth headers\n15. **Partial fetch param is `section` (singular)**: fixed enum `statements|evidence|relations|artifacts|citation`\n16. **Fallback API keys are optional**: `OPENALEX_API_KEY` (metadata enrichment) and `S2_API_KEY` (Semantic Scholar dedicated rate limit) both improve throughput but the cascade degrades gracefully without them\n17. **Sidecar content stays English**: schema fields, IDs, statement text follow upstream convention; user-facing responses follow `oma-config.yaml` `language`\n18. **Spec drift awareness**: our local rules track v0.9.0 production behavior, which differs from the upstream `knows.md` natural-language description; refresh `resources\u002Fupstream-spec-cache.md` periodically\n\n### Modes\n\n| Mode | Trigger | Output |\n|------|---------|--------|\n| **Generate** | \"create sidecar from this paper \u002F abstract \u002F draft\", \"generate `.knows.yaml`\" | `{paper}.knows.yaml` (host LLM emits, then `oma scholar lint` validates) |\n| **Validate** | \"lint this sidecar\", \"validate `.knows.yaml`\" | Pass\u002Ffail report with file:line issues |\n| **Review** | \"peer review this paper as sidecar\" | `{paper}.review.knows.yaml` |\n| **Analyze** | \"summarize this sidecar\", \"what claims does it make?\" | Natural-language answer |\n| **Compare** | \"compare paper A and paper B structurally\" | Diff table (claims\u002Fmethods\u002Fevidence) |\n| **Remote** | \"find papers on X\", \"fetch sidecar :id\", \"get claims only for :id\" | Search results \u002F sidecar payload |\n\n### Provider Fallback (knows.academy → OpenAlex → Semantic Scholar)\n\n`knows.academy` currently indexes **only 2026 papers** (mostly arXiv). For\nolder or non-2026 papers (Transformer 2017, BERT 2018, classics, journals),\nthe skill automatically falls back to **OpenAlex** for metadata and abstract,\nthen to **Semantic Scholar** (AI TL;DR, citation + influential-citation\ncounts) when OpenAlex also has nothing. See `resources\u002Ffallback-providers.md`.\n\nUse the `oma scholar` CLI subcommands:\n\n```bash\n# Hybrid search: knows first, OpenAlex fallback\noma scholar search \"vision language action\"\n\n# Cross-source resolve: figures out which source has the right paper\noma scholar resolve \"Attention Is All You Need\"\n\n# Get by id (knows record_id, OpenAlex W-id, DOI, arXiv:\u003Cid>, CorpusId:\u003Cn>)\noma scholar get \"10.48550\u002FarXiv.1706.03762\"\n```\n\nWhen OpenAlex returns the answer (knows.academy lacks the paper), use the\nreturned abstract as input to **Mode 1 Generate** to produce a local sidecar.\n\n### Quick Reference\n\n#### Search (knows + auto OpenAlex fallback)\n```bash\noma scholar search \"diffusion super resolution\"\noma scholar search --year-min 2024 \"vision language action\"\n```\n\n#### Find one specific paper\n```bash\noma scholar resolve \"Attention Is All You Need\"\n# returns top hit from each source + recommendation\n```\n\n#### Fetch a sidecar or work\n```bash\n# knows.academy full sidecar\noma scholar get \"knows:generated\u002Freconvla\u002F1.0.0\"\n\n# Partial fetch (claims only, ~700 tokens, 93% reduction vs PDF)\noma scholar get --section statements \"knows:generated\u002Freconvla\u002F1.0.0\"\n\n# By DOI or OpenAlex W-id (works regardless of knows.academy availability)\noma scholar get \"10.48550\u002FarXiv.1706.03762\"\n\n# Semantic Scholar: AI TL;DR + citation\u002Finfluential-citation counts\noma scholar get \"arXiv:1706.03762\"\n```\n\nWhen knows.academy is unreachable, `get knows:...` automatically falls back\nto OpenAlex by extracting the slug from the record_id. The result is marked\nwith `fallback: \"openalex\"` and contains metadata + abstract, useful for\nrunning Mode 1 Generate locally.\n\n#### Validate\n```bash\n# Strict mode for own Generate output (default)\noma scholar lint paper.knows.yaml\n\n# Lenient mode for third-party \u002F fetched sidecars\noma scholar lint --lenient remote.knows.yaml\n\n# Treat warnings as failures (CI mode)\noma scholar lint --fail-on-warning paper.knows.yaml\n```\n\nAbout **47% of knows.academy-served sidecars contain at least one dangling\ncross-reference** (typo in `subject_ref`\u002F`object_ref`, measured across 15\nproduction samples). Use `--lenient` when consuming third-party records so\nthese surface as warnings rather than blocking errors.\n\n#### Raw API (when CLI is unavailable)\n```bash\ncurl -s \"https:\u002F\u002Fknows.academy\u002Fapi\u002Fproxy\u002Fsearch?q=...\"\ncurl -s \"https:\u002F\u002Fknows.academy\u002Fapi\u002Fproxy\u002Fsidecars\u002F\u003Cencoded-id>\"\ncurl -s \"https:\u002F\u002Fknows.academy\u002Fapi\u002Fproxy\u002Fpartial?record_id=\u003Cid>&section=statements\"\ncurl -s \"https:\u002F\u002Fknows.academy\u002Fapi\u002Fproxy\u002Fjobs\u002Fstats\"   # platform health\n```\n\n### Configuration\n\nProject-specific settings: `config\u002Fscholar-config.yaml`. One key is user-tunable and lives elsewhere — read `scholar.base_url` from `.agents\u002Foma-config.yaml` first and fall back to `api.base_url` in the skill config. Everything else there (endpoint paths, timeouts, id prefixes, lint rules) is protocol shape, not preference.\n\n### Troubleshooting\n\n| Issue | Solution |\n|-------|----------|\n| `[ERROR] *.value: numeric value '22' is quoted` | Remove quotes: `value: '22'` -> `value: 22` |\n| `[ERROR] provenance.actor.type: 'ai' is not allowed` | Change to `tool`, `person`, or `org` |\n| `[ERROR] *.type: use \\`statement_type\\` instead of \\`type\\`` | Rename `type` -> `statement_type` (or `evidence_type`\u002F`predicate`\u002F`artifact_type`) |\n| `[ERROR] provenance.actors: v0.9 spec uses singular \\`actor\\`` | Replace `actors: [{...}]` array with `actor: {...}` object |\n| `[ERROR] *.object_ref: reference 'X' does not match any defined id` | Fix the `subject_ref`\u002F`object_ref` to point to a real id, OR use `--lenient` if consuming third-party data (cross-record `record_id#local_id` refs are recognized and never flagged) |\n| `[WARN] relations: avg relations\u002Fstatement is N.NN (target ≥ 1.5)` | Add more `supported_by`\u002F`depends_on` relations |\n| `[WARN] statements: only N statements; most papers warrant ≥ 8` | Expected when generating from abstract only; full-paper Generate should hit 15+ |\n| `[WARN] *.predicate: past-tense '...' is suspicious` | Switch to present tense (`evaluated_on` -> `evaluates_on`) |\n| Remote API returns empty results | Try broader query; check `\u002Fapi\u002Fproxy\u002Fjobs\u002Fstats`; CLI auto-falls-back to OpenAlex |\n| `knows.academy search failed: fetch failed` (stderr) | Platform timeout; fallback to OpenAlex is automatic; retry later for sidecars |\n| OpenAlex 403\u002F429 | Set `OPENALEX_API_KEY` (see `resources\u002Fsetup-openalex.md`) |\n| `semanticscholar error: HTTP 429` (stderr) | Anonymous pool throttled; CLI retries once then skips the source. Set `S2_API_KEY` (free form at semanticscholar.org\u002Fproduct\u002Fapi) for a dedicated limit |\n| YAML won't parse | Check indentation; numbers\u002Fbooleans must be unquoted; strings with `:` need quotes |\n\n## References\n\n- Execution steps (follow for the selected task): `resources\u002Fexecution-protocol.md`\n- Sidecar spec rules: `resources\u002Fsidecar-spec.md`\n- API endpoints: `resources\u002Fapi-endpoints.md`\n- OpenAlex setup: `resources\u002Fsetup-openalex.md`\n- Upstream spec snapshot: `resources\u002Fupstream-spec-cache.md`\n- Post-generation checklist: `resources\u002Fchecklist.md`\n- CLI subcommands: `oma scholar search|resolve|get|lint` (implementation under `cli\u002Fcommands\u002Fscholar\u002F`)\n- Context loading: `..\u002F_shared\u002Fcore\u002Fcontext-loading.md`\n- Quality principles: `..\u002F_shared\u002Fcore\u002Fquality-principles.md`\n- i18n rules: `..\u002F..\u002Frules\u002Fi18n-guide.md`",{"name":5,"description":7},"master","5fab8004af1390aa17b3447f2780766c8bf2482c",".agents\u002Fskills\u002Foma-scholar",0,"https:\u002F\u002Fgithub.com\u002Fvasceannie\u002Fslopgate","https:\u002F\u002Fgithub.com\u002Fvasceannie","thingswithstuff.io","2026-11-12 20:22:46",{"source":8,"skillName":5,"commands":58,"prompt":68,"zipAvailable":69},[59,62,65],{"tool":60,"command":61},"npx","npx skills add vasceannie\u002Fslopgate --skill oma-scholar",{"tool":63,"command":64},"bunx","bunx skills add vasceannie\u002Fslopgate --skill oma-scholar",{"tool":66,"command":67},"pnpm","pnpm dlx skills add vasceannie\u002Fslopgate --skill oma-scholar","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fvasceannie\u002Fslopgate\u002Fblob\u002Fmaster\u002F.agents\u002Fskills\u002Foma-scholar\u002FSKILL.md",true,[71,77,81,85,89,93,97,101],{"path":72,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":75,"sourceHtmlUrl":76},"config\u002Fscholar-config.yaml","REFERENCE","参考文档",2719,"https:\u002F\u002Fgithub.com\u002Fvasceannie\u002Fslopgate\u002Fblob\u002Fmaster\u002F.agents\u002Fskills\u002Foma-scholar\u002Fconfig\u002Fscholar-config.yaml",{"path":78,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":79,"sourceHtmlUrl":80},"resources\u002Fapi-endpoints.md",4828,"https:\u002F\u002Fgithub.com\u002Fvasceannie\u002Fslopgate\u002Fblob\u002Fmaster\u002F.agents\u002Fskills\u002Foma-scholar\u002Fresources\u002Fapi-endpoints.md",{"path":82,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":83,"sourceHtmlUrl":84},"resources\u002Fchecklist.md",3909,"https:\u002F\u002Fgithub.com\u002Fvasceannie\u002Fslopgate\u002Fblob\u002Fmaster\u002F.agents\u002Fskills\u002Foma-scholar\u002Fresources\u002Fchecklist.md",{"path":86,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":87,"sourceHtmlUrl":88},"resources\u002Fexecution-protocol.md",9248,"https:\u002F\u002Fgithub.com\u002Fvasceannie\u002Fslopgate\u002Fblob\u002Fmaster\u002F.agents\u002Fskills\u002Foma-scholar\u002Fresources\u002Fexecution-protocol.md",{"path":90,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":91,"sourceHtmlUrl":92},"resources\u002Ffallback-providers.md",6124,"https:\u002F\u002Fgithub.com\u002Fvasceannie\u002Fslopgate\u002Fblob\u002Fmaster\u002F.agents\u002Fskills\u002Foma-scholar\u002Fresources\u002Ffallback-providers.md",{"path":94,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":95,"sourceHtmlUrl":96},"resources\u002Fsetup-openalex.md",2564,"https:\u002F\u002Fgithub.com\u002Fvasceannie\u002Fslopgate\u002Fblob\u002Fmaster\u002F.agents\u002Fskills\u002Foma-scholar\u002Fresources\u002Fsetup-openalex.md",{"path":98,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":99,"sourceHtmlUrl":100},"resources\u002Fsidecar-spec.md",11108,"https:\u002F\u002Fgithub.com\u002Fvasceannie\u002Fslopgate\u002Fblob\u002Fmaster\u002F.agents\u002Fskills\u002Foma-scholar\u002Fresources\u002Fsidecar-spec.md",{"path":102,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":103,"sourceHtmlUrl":104},"resources\u002Fupstream-spec-cache.md",44744,"https:\u002F\u002Fgithub.com\u002Fvasceannie\u002Fslopgate\u002Fblob\u002Fmaster\u002F.agents\u002Fskills\u002Foma-scholar\u002Fresources\u002Fupstream-spec-cache.md",[106,135,162,199,224,243],{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":115,"publishedAt":44},"01M71951JDWCYMS8GDC2C7395D","type-strictness","Enforce strict type compliance by eliminating `Any` types and `# type: ignore` comments. Use when:\n(1) Editing code that contains `Any` as a type annotation\n(2) Code has `# type: ignore` or `# pyright: ignore` comments\n(3) User requests type fixes or type strictness enforcement\n(4) Importing from untyped third-party libraries\n(5) User asks to \"fix types\", \"remove Any\", or \"add proper typing\"\n(6) Pyrefly or mypy reports type errors that need resolution\n(7) Code review reveals weak typing patterns\nFollows hierarchical resolution: codebase inference → type stubs → library inspection → type guards → casting (last resort).","https:\u002F\u002Fgithub.com\u002Fvasceannie\u002Fslopgate\u002Fblob\u002Fmaster\u002Fbundle\u002Fshared\u002Fskills\u002Ftype-strictness\u002FSKILL.md",[112],{"categoryNo":113,"categoryName":114,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000007","代码审查",[116,117,118,119,120,121,122,123,124,125,126,38,127,128,129,130,131,132,133,134],"type","type strictness","typing","types","remove","code review","fix","errors","inspection","when","code","reports","libraries","casting","pyrefly","mypy","pyright","library","patterns",{"skillNo":136,"name":137,"nameZh":6,"description":138,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":145,"publishedAt":44},"01M7194XGBQXSE7Y5BZ4K5CSTK","slopgate-test-extender","Extend Python test suites with parametrization, fixture reuse, and quality enforcement. Use when asked to add tests, extend existing tests, improve test coverage, consolidate duplicate tests, fix test quality issues, or when Slopgate reports untested-production-code, missing test references, or coverage gaps. Triggers on requests like \"add tests for X\", \"extend these tests\", \"parametrize tests\", \"consolidate tests\", \"fix test quality\", \"improve test coverage\", \"write tests for this function\", \"test this module\", \"behavior tests\", \"integration tests\", \"missing tests\", \"coverage holes\", \"untested code\", or when a hook denies with test-related findings.","https:\u002F\u002Fgithub.com\u002Fvasceannie\u002Fslopgate\u002Fblob\u002Fmaster\u002Fbundle\u002Fshared\u002Fskills\u002Fslopgate-test-extender\u002FSKILL.md",[141,142],{"categoryNo":113,"categoryName":114,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":143,"categoryName":144,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",[146,147,148,149,150,122,151,152,153,154,155,156,125,126,157,158,127,159,160,161],"slopgate test extender","test","coverage","fixture","testing","issues","write tests","improve","only","cleanup","loop","candidate","consolidate","references","opencode","orchestrator",{"skillNo":163,"name":164,"nameZh":6,"description":165,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":166,"categories":167,"keywords":183,"publishedAt":44},"01M7194RMVQS5YJJ4ZEFXX20VS","slopgate-intelligent-coding-patterns","Pattern-selection playbook for agents editing code with complex branching, stateful parsers\u002Fworkflows, duplicated skeletons, policy checks, or ordered transforms. Load before refactoring if\u002Felif dispatch chains, boolean-flag state machines, repeated validation predicates, parallel provider\u002Flanguage implementations, or regex\u002Fcontent transformation pipelines. Also load when asked to \"apply a design pattern\", \"which pattern should I use here\", \"refactor this switch statement\", \"replace if-elif chain\", \"state machine pattern\", \"strategy pattern\", \"template method\", \"pipeline pattern\", \"specification pattern\", \"dispatch table\", \"guard clause refactor\", \"reduce cyclomatic complexity\", or when Slopgate fires PY-CODE-014, PY-CODE-017, PY-CODE-018, QUALITY-LINT-001, or PY-QUALITY-010. Use with behavior-locking tests and avoid pattern theater for simple one-off code.","https:\u002F\u002Fgithub.com\u002Fvasceannie\u002Fslopgate\u002Fblob\u002Fmaster\u002Fbundle\u002Fshared\u002Fskills\u002Fslopgate-intelligent-coding-patterns\u002FSKILL.md",[168,169,172,175,180],{"categoryNo":113,"categoryName":114,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":170,"categoryName":171,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":173,"categoryName":174,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":176,"categoryName":177,"taxonomyType":178,"taxonomyTypeDesc":179},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",{"categoryNo":181,"categoryName":182,"taxonomyType":178,"taxonomyTypeDesc":179},"01JBSEEDCAT000000000000032","设计师",[184,185,134,186,187,188,189,190,191,192,193,194,195,154,155,196,197,125,198,126],"coding patterns","slopgate intelligent coding patterns","coding","stateful","complexity","branch","which","chain","parsers","pipeline","selection","design","utility","workflows","reduce",{"skillNo":200,"name":201,"nameZh":6,"description":202,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":203,"categories":204,"keywords":207,"publishedAt":44},"01M7194KTXBM85GB0W7JKFQD55","slopgate-hygiene-orchestrator","Orchestrate systematic elimination of linter warnings and errors across Python, TypeScript, and Rust codebases. Use when asked to \"clean up lints\", \"fix all warnings\", \"run hygiene\", \"eliminate type errors\", \"orchestrate code quality fixes\", \"fix lint errors\", \"resolve quality gate failures\", \"pass CI checks\", \"reduce tech debt\", \"refactor to pass hooks\", or when a Slopgate hook denies with QUALITY-LINT-001, PY-CODE-017, PY-CODE-018, or any collector finding. This skill coordinates multiple code-hygiene-enforcer agents working in parallel on non-conflicting file groupings, tracks progress persistently via JSON exports, and loops until all issues are resolved. CRITICAL: Never run linters directly—always use `slopgate lint check` as the primary gate, discover project-specific tools from config files, and export findings to JSON for tracking.","https:\u002F\u002Fgithub.com\u002Fvasceannie\u002Fslopgate\u002Fblob\u002Fmaster\u002Fbundle\u002Fshared\u002Fskills\u002Fslopgate-hygiene-orchestrator\u002FSKILL.md",[205,206],{"categoryNo":113,"categoryName":114,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":173,"categoryName":174,"taxonomyType":21,"taxonomyTypeDesc":22},[208,209,161,210,122,211,212,213,214,215,155,198,216,217,218,219,220,221,222,223],"slopgate hygiene orchestrator","hygiene","project","ci","local","clean","never run","files","run","lint check","systematic","config","typescript","debt","quality-gates","hook",{"skillNo":225,"name":226,"nameZh":6,"description":227,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":228,"categories":229,"keywords":232,"publishedAt":44},"01M7194G50FZYXXT8VNK360RPA","slopgate-code-smell-utility-locator","Autoactivate when code-smell hooks or reviews mention feature envy, thin wrappers, duplicate helpers, duplicate code,\nscattered helpers, builders\u002Ffactories\u002Fconfig\u002Fconstants\u002Fdataclass reuse, PY-CODE-012, PY-CODE-013, QUALITY-LINT-001,\nor repeated slopgate code-quality denials. Also load when asked to \"find existing helpers\", \"consolidate utilities\",\n\"search for duplicate code\", \"where is this already implemented\", \"reuse existing logic\", \"don't duplicate this\",\n\"find similar functions\", \"utility inventory\", \"code smell radar\", or before adding new helpers\u002Fwrappers so agents can\nfind existing shared utilities and consolidate instead of duplicating.","https:\u002F\u002Fgithub.com\u002Fvasceannie\u002Fslopgate\u002Fblob\u002Fmaster\u002Fbundle\u002Fshared\u002Fskills\u002Fslopgate-code-smell-utility-locator\u002FSKILL.md",[230,231],{"categoryNo":113,"categoryName":114,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":176,"categoryName":177,"taxonomyType":178,"taxonomyTypeDesc":179},[196,233,126,234,148,43,235,42,236,154,237,125,238,158,160,239,240,219,241,242],"slopgate code smell utility locator","shared","inventory","hooks","new","coordination","radar","code-quality","Utilities","dataclass",{"skillNo":244,"name":245,"nameZh":6,"description":246,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":247,"categories":248,"keywords":251,"publishedAt":44},"01M7194AWG1Q37F9756H4SFDH9","slopgate-code-hygiene-refactor","Recovery playbook for Slopgate and project quality failures. Load after hook\u002Flint denials such as PY-CODE-017 flat sibling modules, PY-CODE-018 oversized modules, QUALITY-LINT-001 post-edit quality backstops, PY-QUALITY-010 magic numbers \u002F repeated literals, PY-CODE-012\u002FPY-CODE-013 smell findings, type-suppression bans, duplicate helpers, or repeated hygiene retry loops. Also load when asked to \"refactor this module\", \"split this file\", \"extract a class\", \"reduce complexity\", \"fix god class\", \"flatten module hierarchy\", \"move code to a package\", \"extract helpers\", \"consolidate duplicates\", \"replace magic numbers with constants\", or when a hook blocks an edit with structural complaints. Focuses on preserving public APIs while refactoring toward packages, cohesive modules, typed seams, and focused tests.","https:\u002F\u002Fgithub.com\u002Fvasceannie\u002Fslopgate\u002Fblob\u002Fmaster\u002Fbundle\u002Fshared\u002Fskills\u002Fslopgate-code-hygiene-refactor\u002FSKILL.md",[249,250],{"categoryNo":113,"categoryName":114,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":176,"categoryName":177,"taxonomyType":178,"taxonomyTypeDesc":179},[252,253,126,254,209,255,188,256,257,210,258,235,259,122,154,196,125,198,238,158],"code hygiene","slopgate code hygiene refactor","refactor","modules","duplicates","retry","move","structural"]