[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DWMX3HCAX4DH7CSCHVB54Z":3,"skill-same:01M6DWMX3HCAX4DH7CSCHVB54Z":94},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":30,"publishedAt":51,"linkOnly":52,"markdownContent":53,"markdownBody":54,"frontMatter":55,"refName":64,"commitSha":65,"skillDirectory":66,"forksCount":67,"repositoryHtmlUrl":68,"repositoryHomepageUrl":69,"ownerHtmlUrl":70,"ownerBlogUrl":71,"ownerDescription":72,"updatedAt":73,"install":74,"resources":87},"01M6DWMX3HCAX4DH7CSCHVB54Z","programming-python",null,"Python practices: architecture, type-driven design, boundary validation, library choices beyond scripts. Use when writing or reviewing Python projects.","Muvon\u002Foctomind-tap","Muvon","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F25336907?v=4","01M6DWA4KTRX4J73CW5CECKAD0","01M6DWA4QSWFGYE6WDMAMFF1WE",6,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Fprogramming-python\u002FSKILL.md",[17,22,27],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000015","视觉设计","SCENARIO","使用场景",{"categoryNo":23,"categoryName":24,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",{"categoryNo":28,"categoryName":29,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000036","内容创作者",[31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50],"programming","programming python","python","pyproject.toml","setup.py","when","writing","toml","environment","python development","development","developer","library","scripts","architecture","CFG","design","project","projects","interpreter","2026-11-10 10:12:30",false,"---\nname: programming-python\ntitle: \"Python Development Best Practices\"\ndescription: \"Python practices: architecture, type-driven design, boundary validation, library choices beyond scripts. Use when writing or reviewing Python projects.\"\nlicense: Apache-2.0\ncompatibility: \"Requires the Python interpreter and environment selected by the project.\"\ncapabilities: programming-python\ndomains: developer\nrules:\n  - file(pyproject.toml)\n  - file(setup.py)\n  - file(setup.cfg)\n  - file(requirements.txt)\n  - content(python)\n---\n\n## Overview\n\nWrite Python with clear data contracts, deliberate effects, and predictable failure behavior. As of 2026-10: Python 3.15 is the newest stable release (2026-10-09), 3.14 is in bugfix, and 3.10 reached end of life on 2026-10-01. Read `requires-python`, environment pins, dependency lockfiles, type-checker settings, and CI first. Use features supported by every required interpreter; don't raise the minimum version or replace the project's tooling during unrelated work. Recheck official releases when updating this guidance.\n\n## Mental model\n\nAnnotations describe a contract; validation enforces it. Keep boundary parsing explicit, represent trusted data with small types, and make ownership of mutable state and resources visible. A function or module is enough until a class or abstraction solves a concrete lifecycle or substitution problem.\n\n## Recent features and migration traps\n\n| Version | Useful change and boundary |\n|---------|----------------------------|\n| 3.11 | `TaskGroup`, exception groups\u002F`except*`, and `asyncio.timeout` support structured concurrent failure handling. |\n| 3.12 | `type Alias = ...` and type-parameter syntax (`def first[T](...)`) simplify typed APIs; older interpreters cannot parse them. |\n| 3.13 | `TypeIs` supports narrowing both branches; use it only when its condition exactly identifies the claimed type. |\n| 3.14 | Annotations are deferred by default; `annotationlib` supports introspection. T-strings produce `Template` objects, and free-threaded builds are officially supported. |\n| 3.15 | `lazy import` \u002F `lazy from ... import` at module scope (PEP 810), built-in `frozendict` (PEP 814) and `sentinel` (PEP 661), unpacking in comprehensions (`[*xs for xs in groups]`), `TaskGroup.cancel()`, TypedDict `extra_items` (PEP 728), and the `profiling.sampling` profiler that attaches to a running PID. I\u002FO defaults to UTF-8 regardless of locale (PEP 686). |\n\nDon't assume annotation values are eagerly evaluated or all strings. Use `typing.get_type_hints` when evaluated types are needed, or appropriate `annotationlib` formats for introspection; evaluating annotations can execute code. T-strings preserve literal and interpolated parts for a processor: they do not automatically escape HTML or parameterize SQL, and they are not interchangeable with `str`.\n\nLazy imports defer import errors and import-time side effects to first use; don't make a module lazy when its import registers plugins or must fail fast at startup. `frozendict` is not a `dict` subclass, so `isinstance(x, dict)` checks miss it; check `collections.abc.Mapping` where both are valid. The UTF-8 default changes behavior on Windows and non-UTF-8 locales; keep passing `encoding=` explicitly in code that supports older interpreters.\n\n## Types and data\n\n- Annotate public boundaries and non-obvious internal contracts; use `list[T]`, `dict[K, V]`, and `T | None` on supported versions. Use `object` for unknown data that must be narrowed; isolate necessary `Any` at untyped integration points.\n- `TypedDict` describes dictionary shape without runtime validation. `Protocol` describes structural behavior; a runtime-checkable protocol does not verify method signatures or semantic correctness.\n- Use dataclasses for records; choose `frozen=True` when reassignment is unwanted and `slots=True` when its restrictions fit. Frozen fields do not freeze nested lists or dictionaries. Use `default_factory` for mutable defaults.\n- Validate untrusted values once at entry and pass trusted values inward. Choose strict validation or explicit coercion deliberately; don't let a serializer or modeling library quietly change the input contract.\n- Use an explicit `is None` check when zero, `False`, or an empty collection is valid. Truthiness-based defaults can erase meaningful input.\n\n## Errors, resources, and module design\n\n- Catch specific failures close to the operation that can recover. A top-level handler may catch broadly to report failure, but should not pretend success. Add a domain exception when callers need that distinction; preserve causes with `raise ... from ...`.\n- Don't replace missing required configuration, failed I\u002FO, or invalid input with defaults. Suppress only a named, expected failure whose absence is part of the contract. Keep sensitive input out of exception messages and logs.\n- Use `with`\u002F`async with` for resources and `ExitStack` for dynamic groups. Make cleanup observable where failure matters; finalizers and garbage collection do not guarantee timely cleanup.\n- Keep imports free of heavyweight work and mutable global configuration. Public submodules are valid APIs; re-exporting everything from `__init__.py` is unnecessary and can introduce cycles.\n- Use `pyproject.toml` for modern package metadata and `[dependency-groups]` (PEP 735) for dev\u002Ftest dependencies. A `src\u002F` layout helps test installed-package behavior; flat layouts and requirements files still have valid uses. Preserve the established package\u002Fenvironment tools unless changing them is part of the task. For a new project with no established tooling, uv (`uv.lock`, `uv run`) plus Ruff for lint and format is the common default; commit the lockfile for applications.\n\n## Concurrency\n\n- Use async I\u002FO for concurrent awaitable operations and threads for blocking I\u002FO. In a GIL-enabled interpreter, pure-Python CPU work generally needs processes, isolated interpreters, or native code that releases the GIL for parallelism.\n- Free-threaded builds can execute Python threads in parallel, but extensions may re-enable the GIL. Verify runtime and dependency support; protect compound shared mutations with locks rather than relying on container internals.\n- `TaskGroup` cancels siblings after an ordinary task failure and waits for cleanup. Propagate `CancelledError` after necessary cleanup; swallowing it can break task groups and timeouts. `gather` has different failure semantics and remains useful when those semantics are intended.\n- Keep blocking work off the event loop with appropriate executors or `to_thread`. Bound queued work; cancelling an awaiting coroutine does not necessarily stop a running thread.\n- Python 3.14 no longer defaults to `fork` on any platform. Make process-pool entry points importable, guard startup with `if __name__ == \"__main__\":`, and explicitly choose a multiprocessing context only when required. `InterpreterPoolExecutor` provides isolated interpreters, not shared mutable globals.\n\n## Example\n\nA missing optional value may use a default; an invalid supplied value must fail:\n\n```python\ndef parse_workers(raw: str | None) -> int:\n    if raw is None:\n        return 4\n    try:\n        workers = int(raw)\n    except ValueError as exc:\n        raise ValueError(\"worker count must be an integer\") from exc\n    if workers \u003C 1:\n        raise ValueError(\"worker count must be positive\")\n    return workers\n```\n\n## Checklist\n\n- [ ] Syntax and libraries match the supported Python versions and interpreter build.\n- [ ] Types are validated at boundaries; mutable defaults and truthiness don't change meaning.\n- [ ] Errors, cleanup, cancellation, and worker shutdown preserve the contract.\n- [ ] When authorized, use the project's formatter, linter, type checker, and focused tests. Cover invalid input and concurrent cleanup; report skipped checks without installing missing tools implicitly.\n\n## References\n\n- [Release status](https:\u002F\u002Fwww.python.org\u002Fdownloads\u002F), [Python 3.15 changes](https:\u002F\u002Fdocs.python.org\u002F3.15\u002Fwhatsnew\u002F3.15.html), and [Python 3.14 changes](https:\u002F\u002Fdocs.python.org\u002F3.14\u002Fwhatsnew\u002F3.14.html).\n- [Typing](https:\u002F\u002Fdocs.python.org\u002F3.14\u002Flibrary\u002Ftyping.html), [dataclasses](https:\u002F\u002Fdocs.python.org\u002F3.14\u002Flibrary\u002Fdataclasses.html), [annotation introspection](https:\u002F\u002Fdocs.python.org\u002F3.14\u002Flibrary\u002Fannotationlib.html), and [t-strings](https:\u002F\u002Fdocs.python.org\u002F3.14\u002Flibrary\u002Fstring.templatelib.html).\n- [Async task contracts](https:\u002F\u002Fdocs.python.org\u002F3.14\u002Flibrary\u002Fasyncio-task.html), [free threading](https:\u002F\u002Fdocs.python.org\u002F3.14\u002Fhowto\u002Ffree-threading-python.html), [multiprocessing](https:\u002F\u002Fdocs.python.org\u002F3.14\u002Flibrary\u002Fmultiprocessing.html), and [executors](https:\u002F\u002Fdocs.python.org\u002F3.14\u002Flibrary\u002Fconcurrent.futures.html).\n- [uv project workflow](https:\u002F\u002Fdocs.astral.sh\u002Fuv\u002F) and [PyPA layout tradeoffs](https:\u002F\u002Fpackaging.python.org\u002Fen\u002Flatest\u002Fdiscussions\u002Fsrc-layout-vs-flat-layout\u002F).\n","## Overview\n\nWrite Python with clear data contracts, deliberate effects, and predictable failure behavior. As of 2026-10: Python 3.15 is the newest stable release (2026-10-09), 3.14 is in bugfix, and 3.10 reached end of life on 2026-10-01. Read `requires-python`, environment pins, dependency lockfiles, type-checker settings, and CI first. Use features supported by every required interpreter; don't raise the minimum version or replace the project's tooling during unrelated work. Recheck official releases when updating this guidance.\n\n## Mental model\n\nAnnotations describe a contract; validation enforces it. Keep boundary parsing explicit, represent trusted data with small types, and make ownership of mutable state and resources visible. A function or module is enough until a class or abstraction solves a concrete lifecycle or substitution problem.\n\n## Recent features and migration traps\n\n| Version | Useful change and boundary |\n|---------|----------------------------|\n| 3.11 | `TaskGroup`, exception groups\u002F`except*`, and `asyncio.timeout` support structured concurrent failure handling. |\n| 3.12 | `type Alias = ...` and type-parameter syntax (`def first[T](...)`) simplify typed APIs; older interpreters cannot parse them. |\n| 3.13 | `TypeIs` supports narrowing both branches; use it only when its condition exactly identifies the claimed type. |\n| 3.14 | Annotations are deferred by default; `annotationlib` supports introspection. T-strings produce `Template` objects, and free-threaded builds are officially supported. |\n| 3.15 | `lazy import` \u002F `lazy from ... import` at module scope (PEP 810), built-in `frozendict` (PEP 814) and `sentinel` (PEP 661), unpacking in comprehensions (`[*xs for xs in groups]`), `TaskGroup.cancel()`, TypedDict `extra_items` (PEP 728), and the `profiling.sampling` profiler that attaches to a running PID. I\u002FO defaults to UTF-8 regardless of locale (PEP 686). |\n\nDon't assume annotation values are eagerly evaluated or all strings. Use `typing.get_type_hints` when evaluated types are needed, or appropriate `annotationlib` formats for introspection; evaluating annotations can execute code. T-strings preserve literal and interpolated parts for a processor: they do not automatically escape HTML or parameterize SQL, and they are not interchangeable with `str`.\n\nLazy imports defer import errors and import-time side effects to first use; don't make a module lazy when its import registers plugins or must fail fast at startup. `frozendict` is not a `dict` subclass, so `isinstance(x, dict)` checks miss it; check `collections.abc.Mapping` where both are valid. The UTF-8 default changes behavior on Windows and non-UTF-8 locales; keep passing `encoding=` explicitly in code that supports older interpreters.\n\n## Types and data\n\n- Annotate public boundaries and non-obvious internal contracts; use `list[T]`, `dict[K, V]`, and `T | None` on supported versions. Use `object` for unknown data that must be narrowed; isolate necessary `Any` at untyped integration points.\n- `TypedDict` describes dictionary shape without runtime validation. `Protocol` describes structural behavior; a runtime-checkable protocol does not verify method signatures or semantic correctness.\n- Use dataclasses for records; choose `frozen=True` when reassignment is unwanted and `slots=True` when its restrictions fit. Frozen fields do not freeze nested lists or dictionaries. Use `default_factory` for mutable defaults.\n- Validate untrusted values once at entry and pass trusted values inward. Choose strict validation or explicit coercion deliberately; don't let a serializer or modeling library quietly change the input contract.\n- Use an explicit `is None` check when zero, `False`, or an empty collection is valid. Truthiness-based defaults can erase meaningful input.\n\n## Errors, resources, and module design\n\n- Catch specific failures close to the operation that can recover. A top-level handler may catch broadly to report failure, but should not pretend success. Add a domain exception when callers need that distinction; preserve causes with `raise ... from ...`.\n- Don't replace missing required configuration, failed I\u002FO, or invalid input with defaults. Suppress only a named, expected failure whose absence is part of the contract. Keep sensitive input out of exception messages and logs.\n- Use `with`\u002F`async with` for resources and `ExitStack` for dynamic groups. Make cleanup observable where failure matters; finalizers and garbage collection do not guarantee timely cleanup.\n- Keep imports free of heavyweight work and mutable global configuration. Public submodules are valid APIs; re-exporting everything from `__init__.py` is unnecessary and can introduce cycles.\n- Use `pyproject.toml` for modern package metadata and `[dependency-groups]` (PEP 735) for dev\u002Ftest dependencies. A `src\u002F` layout helps test installed-package behavior; flat layouts and requirements files still have valid uses. Preserve the established package\u002Fenvironment tools unless changing them is part of the task. For a new project with no established tooling, uv (`uv.lock`, `uv run`) plus Ruff for lint and format is the common default; commit the lockfile for applications.\n\n## Concurrency\n\n- Use async I\u002FO for concurrent awaitable operations and threads for blocking I\u002FO. In a GIL-enabled interpreter, pure-Python CPU work generally needs processes, isolated interpreters, or native code that releases the GIL for parallelism.\n- Free-threaded builds can execute Python threads in parallel, but extensions may re-enable the GIL. Verify runtime and dependency support; protect compound shared mutations with locks rather than relying on container internals.\n- `TaskGroup` cancels siblings after an ordinary task failure and waits for cleanup. Propagate `CancelledError` after necessary cleanup; swallowing it can break task groups and timeouts. `gather` has different failure semantics and remains useful when those semantics are intended.\n- Keep blocking work off the event loop with appropriate executors or `to_thread`. Bound queued work; cancelling an awaiting coroutine does not necessarily stop a running thread.\n- Python 3.14 no longer defaults to `fork` on any platform. Make process-pool entry points importable, guard startup with `if __name__ == \"__main__\":`, and explicitly choose a multiprocessing context only when required. `InterpreterPoolExecutor` provides isolated interpreters, not shared mutable globals.\n\n## Example\n\nA missing optional value may use a default; an invalid supplied value must fail:\n\n```python\ndef parse_workers(raw: str | None) -> int:\n    if raw is None:\n        return 4\n    try:\n        workers = int(raw)\n    except ValueError as exc:\n        raise ValueError(\"worker count must be an integer\") from exc\n    if workers \u003C 1:\n        raise ValueError(\"worker count must be positive\")\n    return workers\n```\n\n## Checklist\n\n- [ ] Syntax and libraries match the supported Python versions and interpreter build.\n- [ ] Types are validated at boundaries; mutable defaults and truthiness don't change meaning.\n- [ ] Errors, cleanup, cancellation, and worker shutdown preserve the contract.\n- [ ] When authorized, use the project's formatter, linter, type checker, and focused tests. Cover invalid input and concurrent cleanup; report skipped checks without installing missing tools implicitly.\n\n## References\n\n- [Release status](https:\u002F\u002Fwww.python.org\u002Fdownloads\u002F), [Python 3.15 changes](https:\u002F\u002Fdocs.python.org\u002F3.15\u002Fwhatsnew\u002F3.15.html), and [Python 3.14 changes](https:\u002F\u002Fdocs.python.org\u002F3.14\u002Fwhatsnew\u002F3.14.html).\n- [Typing](https:\u002F\u002Fdocs.python.org\u002F3.14\u002Flibrary\u002Ftyping.html), [dataclasses](https:\u002F\u002Fdocs.python.org\u002F3.14\u002Flibrary\u002Fdataclasses.html), [annotation introspection](https:\u002F\u002Fdocs.python.org\u002F3.14\u002Flibrary\u002Fannotationlib.html), and [t-strings](https:\u002F\u002Fdocs.python.org\u002F3.14\u002Flibrary\u002Fstring.templatelib.html).\n- [Async task contracts](https:\u002F\u002Fdocs.python.org\u002F3.14\u002Flibrary\u002Fasyncio-task.html), [free threading](https:\u002F\u002Fdocs.python.org\u002F3.14\u002Fhowto\u002Ffree-threading-python.html), [multiprocessing](https:\u002F\u002Fdocs.python.org\u002F3.14\u002Flibrary\u002Fmultiprocessing.html), and [executors](https:\u002F\u002Fdocs.python.org\u002F3.14\u002Flibrary\u002Fconcurrent.futures.html).\n- [uv project workflow](https:\u002F\u002Fdocs.astral.sh\u002Fuv\u002F) and [PyPA layout tradeoffs](https:\u002F\u002Fpackaging.python.org\u002Fen\u002Flatest\u002Fdiscussions\u002Fsrc-layout-vs-flat-layout\u002F).\n",{"name":5,"rules":56,"title":62,"domains":42,"license":14,"description":7,"capabilities":5,"compatibility":63},[57,58,59,60,61],"file(pyproject.toml)","file(setup.py)","file(setup.cfg)","file(requirements.txt)","content(python)","Python Development Best Practices","Requires the Python interpreter and environment selected by the project.","master","e9e4a19559669b1627b1ac5ed3f77b8e36cfad95","skills\u002Fprogramming-python",0,"https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap","https:\u002F\u002Foctomind.run\u002Ftap\u002F","https:\u002F\u002Fgithub.com\u002FMuvon","https:\u002F\u002Fmuvon.io","We bring ideas to life","2026-11-10 20:30:54",{"source":8,"skillName":5,"commands":75,"prompt":85,"zipAvailable":86},[76,79,82],{"tool":77,"command":78},"npx","npx skills add Muvon\u002Foctomind-tap --skill programming-python",{"tool":80,"command":81},"bunx","bunx skills add Muvon\u002Foctomind-tap --skill programming-python",{"tool":83,"command":84},"pnpm","pnpm dlx skills add Muvon\u002Foctomind-tap --skill programming-python","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Fprogramming-python\u002FSKILL.md",true,[88],{"path":89,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":92,"sourceHtmlUrl":93},"validate","OTHER","其他",270,"https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Fprogramming-python\u002Fvalidate",[95,129,156,176,200,226],{"skillNo":96,"name":97,"nameZh":6,"description":98,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":99,"categories":100,"keywords":108,"publishedAt":51},"01M70SFC5CTHRKA9B97N1ARVZ2","seo-content-refresh","Finds decaying pages, picks update, merge, redirect or remove, and briefs each refresh. Use to prioritize existing content and judge whether it helped.","https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Fseo-content-refresh\u002FSKILL.md",[101,104,107],{"categoryNo":102,"categoryName":103,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000019","营销推广",{"categoryNo":105,"categoryName":106,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000035","市场营销",{"categoryNo":28,"categoryName":29,"taxonomyType":25,"taxonomyTypeDesc":26},[109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128],"seo content refresh","seo","seo content","content refresh","refresh","content","posts","remove","web search","performance","search","traffic","access","drop","websearch","revamp","merge","diagnosis","update","decay",{"skillNo":130,"name":131,"nameZh":6,"description":132,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":133,"categories":134,"keywords":137,"publishedAt":51},"01M70SBWQCHGH7HGS51Y0GTKKW","marketing-review-program","Plans how to ask real customers for honest public reviews: site choice, invitation copy, incentive and disclosure rules. Use to start a review program.","https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Fmarketing-review-program\u002FSKILL.md",[135,136],{"categoryNo":102,"categoryName":103,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":105,"categoryName":106,"taxonomyType":25,"taxonomyTypeDesc":26},[138,139,140,141,142,143,117,119,144,145,146,147,148,149,150,151,152,153,154,155],"program","review","marketing review program","marketing","reviews","get","campaign","choice","how to","only","generated","ask","plan","product","generate","customer","how","request",{"skillNo":157,"name":158,"nameZh":6,"description":159,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":160,"categories":161,"keywords":162,"publishedAt":51},"01M70SBB65Z2FC71Q7DEAXGJBG","geo-source-actions","Turns AI citation findings into ranked per-source actions for Reddit threads, listicles, review sites and videos. Records only. Use after a GEO audit.","https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Fgeo-source-actions\u002FSKILL.md",[],[163,164,165,166,167,143,117,119,168,169,147,123,139,170,171,172,151,173,174,175],"actions","geo source actions","source","geo","sources","copilot","domains","llms","threads","youtube","audit","action","data",{"skillNo":177,"name":178,"nameZh":6,"description":179,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":180,"categories":181,"keywords":185,"publishedAt":51},"01M70S99D3Y6GF097GTXWBXHPW","commerce-ai-readiness","Audits product feeds, markup and live pages for AI shopping assistants, then lists exact fixes. Use to make a store catalog readable to AI shoppers.","https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Fcommerce-ai-readiness\u002FSKILL.md",[182],{"categoryNo":183,"categoryName":184,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000031","产品经理",[186,187,188,189,190,191,192,193,194,195,119,196,168,147,121,197,198,151,173,199],"ai readiness","commerce ai readiness","commerce","readiness","feeds","ready","show","shopping","discover","checkout","up","ecommerce","documentation","recommend",{"skillNo":201,"name":202,"nameZh":6,"description":203,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":204,"categories":205,"keywords":209,"publishedAt":51},"01M6DWSX45J42KTK6XASKJRGPA","tap-model-training","Train, evaluate and publish the octomind-embed model behind capability auto-activation. Use when capability triggers or skill semantic() phrases change.","https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Ftap-model-training\u002FSKILL.md",[206],{"categoryNo":207,"categoryName":208,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",[210,211,212,213,214,196,215,216,217,218,219,220,221,222,223,154,224,225,36,127],"model","training","tap","tap model training","scope","eval","uv","auto","dataset","activate","api","capabilities","publish","change","embedding","re",{"skillNo":227,"name":228,"nameZh":6,"description":229,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":230,"categories":231,"keywords":233,"publishedAt":51},"01M6DWSQB7NSW53Z86XM81R1W1","tap-deps-authoring","Write dep scripts for the octomind-tap registry: header comments, platform.sh, mcp vs dep types, npx\u002Fuvx pattern. Use when editing deps\u002F\u003Corg>\u002F\u003Ctool>.sh.","https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Ftap-deps-authoring\u002FSKILL.md",[232],{"categoryNo":207,"categoryName":208,"taxonomyType":20,"taxonomyTypeDesc":21},[234,212,235,236,237,238,239,44,240,241,242,243,244,245,246,247,36,248,249,250],"deps","tap deps authoring","authoring","DEP","MCP","run","pattern","install","registry","platform","repo","editing","tool","types","write","org","for"]