[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6EJBADMAW3452MBREMJK31T":3,"skill-same:01M6EJBADMAW3452MBREMJK31T":253},{"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":26,"publishedAt":46,"linkOnly":47,"markdownContent":48,"markdownBody":49,"frontMatter":50,"refName":56,"commitSha":57,"skillDirectory":58,"forksCount":59,"repositoryHtmlUrl":60,"repositoryHomepageUrl":61,"ownerHtmlUrl":62,"ownerBlogUrl":6,"ownerDescription":63,"updatedAt":64,"install":65,"resources":78},"01M6EJBADMAW3452MBREMJK31T","tdd-pytest",null,"Python\u002Fpytest TDD specialist for test-driven development workflows. Use when writing tests, auditing test quality, running pytest, or generating test reports. Integrates with uv and pyproject.toml configuration.","ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",67,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002F89jobrien\u002Ftdd-pytest\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],"tdd pytest","tdd","pytest","reports","driven","tests","toml","development workflows","configuration","Generating Test Reports","uv","writing","use","quality","writing tests","development","workflows","test","python","2026-11-10 10:12:30",false,"---\nname: tdd-pytest\ndescription: Python\u002Fpytest TDD specialist for test-driven development workflows. Use\n  when writing tests, auditing test quality, running pytest, or generating test reports.\n  Integrates with uv and pyproject.toml configuration.\nauthor: Joseph OBrien\nstatus: unpublished\nupdated: '2025-12-23'\nversion: 1.0.1\ntag: skill\ntype: skill\n---\n\n# TDD-Pytest Skill\n\nActivate this skill when the user needs help with:\n\n- Writing tests using TDD methodology (Red-Green-Refactor)\n- Auditing existing pytest test files for quality\n- Running tests with coverage\n- Generating test reports to `TESTING_REPORT.local.md`\n- Setting up pytest configuration in `pyproject.toml`\n\n## TDD Workflow\n\n### Red-Green-Refactor Cycle\n\n1. **RED** - Write a failing test first\n   - Test should fail for the right reason (not import errors)\n   - Test should be minimal and focused\n   - Show the failing test output\n\n2. **GREEN** - Write minimal code to pass\n   - Only implement what's needed to pass the test\n   - No premature optimization\n   - Show the passing test output\n\n3. **REFACTOR** - Improve code while keeping tests green\n   - Clean up duplication\n   - Improve naming\n   - Extract functions\u002Fclasses if needed\n   - Run tests after each change\n\n## Test Organization\n\n### File Structure\n\n```text\nproject\u002F\n  src\u002F\n    module.py\n  tests\u002F\n    conftest.py          # Shared fixtures\n    test_module.py       # Tests for module.py\n  pyproject.toml         # Pytest configuration\n```\n\n### Naming Conventions\n\n- Test files: `test_*.py` or `*_test.py`\n- Test functions: `test_*`\n- Test classes: `Test*`\n- Fixtures: Descriptive names (`mock_database`, `sample_user`)\n\n## Pytest Best Practices\n\n### Fixtures\n\n```python\nimport pytest\n\n@pytest.fixture\ndef sample_config():\n    return {\"key\": \"value\"}\n\n@pytest.fixture\ndef mock_client(mocker):\n    return mocker.MagicMock()\n```\n\n### Parametrization\n\n```python\n@pytest.mark.parametrize(\"input,expected\", [\n    (\"hello\", \"HELLO\"),\n    (\"world\", \"WORLD\"),\n    (\"\", \"\"),\n])\ndef test_uppercase(input, expected):\n    assert input.upper() == expected\n```\n\n### Async Tests\n\n```python\nimport pytest\n\n@pytest.mark.asyncio\nasync def test_async_function():\n    result = await async_operation()\n    assert result == expected\n```\n\n### Exception Testing\n\n```python\ndef test_raises_value_error():\n    with pytest.raises(ValueError, match=\"invalid input\"):\n        process_input(None)\n```\n\n## Running Tests\n\n### With uv\n\n```bash\nuv run pytest                              # Run all tests\nuv run pytest tests\u002Ftest_module.py         # Run specific file\nuv run pytest -k \"test_name\"               # Run by name pattern\nuv run pytest -v --tb=short                # Verbose with short traceback\nuv run pytest --cov=src --cov-report=term  # With coverage\n```\n\n### Common Flags\n\n- `-v` \u002F `--verbose` - Detailed output\n- `-x` \u002F `--exitfirst` - Stop on first failure\n- `--tb=short` - Short tracebacks\n- `--tb=no` - No tracebacks\n- `-k EXPR` - Run tests matching expression\n- `-m MARKER` - Run tests with marker\n- `--cov=PATH` - Coverage for path\n- `--cov-report=term-missing` - Show missing lines\n\n## pyproject.toml Configuration\n\n### Minimal Setup\n\n```toml\n[tool.pytest.ini_options]\nasyncio_mode = \"auto\"\ntestpaths = [\"tests\"]\n```\n\n### Full Configuration\n\n```toml\n[tool.pytest.ini_options]\nasyncio_mode = \"auto\"\nasyncio_default_fixture_loop_scope = \"function\"\ntestpaths = [\"tests\"]\npython_files = [\"test_*.py\", \"*_test.py\"]\npython_functions = [\"test_*\"]\npython_classes = [\"Test*\"]\naddopts = \"-v --tb=short\"\nmarkers = [\n    \"slow: marks tests as slow\",\n    \"integration: marks integration tests\",\n]\nfilterwarnings = [\n    \"ignore::DeprecationWarning\",\n]\n\n[tool.coverage.run]\nsource = [\"src\"]\nbranch = true\nomit = [\"tests\u002F*\", \"*\u002F__init__.py\"]\n\n[tool.coverage.report]\nexclude_lines = [\n    \"pragma: no cover\",\n    \"if TYPE_CHECKING:\",\n    \"raise NotImplementedError\",\n]\nfail_under = 80\nshow_missing = true\n```\n\n## Report Generation\n\nThe `TESTING_REPORT.local.md` file should contain:\n\n1. Test execution summary (passed\u002Ffailed\u002Fskipped)\n2. Coverage metrics by module\n3. Audit findings by severity\n4. Recommendations with file:line references\n5. Evidence (command outputs)\n\n## Integration with Conversation\n\nWhen the user asks to write tests:\n\n1. Check conversation history for context about what to test\n2. Identify the code\u002Ffeature being discussed\n3. If unclear, ask clarifying questions:\n   - \"What specific behavior should I test?\"\n   - \"Should I include edge cases for X?\"\n   - \"Do you want unit tests, integration tests, or both?\"\n4. Follow TDD: Write failing test first, then implement\n\n## Commands Available\n\n- `\u002Ftdd-pytest:init` - Initialize pytest configuration\n- `\u002Ftdd-pytest:test [path]` - Write tests using TDD (context-aware)\n- `\u002Ftdd-pytest:test-all` - Run all tests\n- `\u002Ftdd-pytest:report` - Generate\u002Fupdate TESTING_REPORT.local.md\n","# TDD-Pytest Skill\n\nActivate this skill when the user needs help with:\n\n- Writing tests using TDD methodology (Red-Green-Refactor)\n- Auditing existing pytest test files for quality\n- Running tests with coverage\n- Generating test reports to `TESTING_REPORT.local.md`\n- Setting up pytest configuration in `pyproject.toml`\n\n## TDD Workflow\n\n### Red-Green-Refactor Cycle\n\n1. **RED** - Write a failing test first\n   - Test should fail for the right reason (not import errors)\n   - Test should be minimal and focused\n   - Show the failing test output\n\n2. **GREEN** - Write minimal code to pass\n   - Only implement what's needed to pass the test\n   - No premature optimization\n   - Show the passing test output\n\n3. **REFACTOR** - Improve code while keeping tests green\n   - Clean up duplication\n   - Improve naming\n   - Extract functions\u002Fclasses if needed\n   - Run tests after each change\n\n## Test Organization\n\n### File Structure\n\n```text\nproject\u002F\n  src\u002F\n    module.py\n  tests\u002F\n    conftest.py          # Shared fixtures\n    test_module.py       # Tests for module.py\n  pyproject.toml         # Pytest configuration\n```\n\n### Naming Conventions\n\n- Test files: `test_*.py` or `*_test.py`\n- Test functions: `test_*`\n- Test classes: `Test*`\n- Fixtures: Descriptive names (`mock_database`, `sample_user`)\n\n## Pytest Best Practices\n\n### Fixtures\n\n```python\nimport pytest\n\n@pytest.fixture\ndef sample_config():\n    return {\"key\": \"value\"}\n\n@pytest.fixture\ndef mock_client(mocker):\n    return mocker.MagicMock()\n```\n\n### Parametrization\n\n```python\n@pytest.mark.parametrize(\"input,expected\", [\n    (\"hello\", \"HELLO\"),\n    (\"world\", \"WORLD\"),\n    (\"\", \"\"),\n])\ndef test_uppercase(input, expected):\n    assert input.upper() == expected\n```\n\n### Async Tests\n\n```python\nimport pytest\n\n@pytest.mark.asyncio\nasync def test_async_function():\n    result = await async_operation()\n    assert result == expected\n```\n\n### Exception Testing\n\n```python\ndef test_raises_value_error():\n    with pytest.raises(ValueError, match=\"invalid input\"):\n        process_input(None)\n```\n\n## Running Tests\n\n### With uv\n\n```bash\nuv run pytest                              # Run all tests\nuv run pytest tests\u002Ftest_module.py         # Run specific file\nuv run pytest -k \"test_name\"               # Run by name pattern\nuv run pytest -v --tb=short                # Verbose with short traceback\nuv run pytest --cov=src --cov-report=term  # With coverage\n```\n\n### Common Flags\n\n- `-v` \u002F `--verbose` - Detailed output\n- `-x` \u002F `--exitfirst` - Stop on first failure\n- `--tb=short` - Short tracebacks\n- `--tb=no` - No tracebacks\n- `-k EXPR` - Run tests matching expression\n- `-m MARKER` - Run tests with marker\n- `--cov=PATH` - Coverage for path\n- `--cov-report=term-missing` - Show missing lines\n\n## pyproject.toml Configuration\n\n### Minimal Setup\n\n```toml\n[tool.pytest.ini_options]\nasyncio_mode = \"auto\"\ntestpaths = [\"tests\"]\n```\n\n### Full Configuration\n\n```toml\n[tool.pytest.ini_options]\nasyncio_mode = \"auto\"\nasyncio_default_fixture_loop_scope = \"function\"\ntestpaths = [\"tests\"]\npython_files = [\"test_*.py\", \"*_test.py\"]\npython_functions = [\"test_*\"]\npython_classes = [\"Test*\"]\naddopts = \"-v --tb=short\"\nmarkers = [\n    \"slow: marks tests as slow\",\n    \"integration: marks integration tests\",\n]\nfilterwarnings = [\n    \"ignore::DeprecationWarning\",\n]\n\n[tool.coverage.run]\nsource = [\"src\"]\nbranch = true\nomit = [\"tests\u002F*\", \"*\u002F__init__.py\"]\n\n[tool.coverage.report]\nexclude_lines = [\n    \"pragma: no cover\",\n    \"if TYPE_CHECKING:\",\n    \"raise NotImplementedError\",\n]\nfail_under = 80\nshow_missing = true\n```\n\n## Report Generation\n\nThe `TESTING_REPORT.local.md` file should contain:\n\n1. Test execution summary (passed\u002Ffailed\u002Fskipped)\n2. Coverage metrics by module\n3. Audit findings by severity\n4. Recommendations with file:line references\n5. Evidence (command outputs)\n\n## Integration with Conversation\n\nWhen the user asks to write tests:\n\n1. Check conversation history for context about what to test\n2. Identify the code\u002Ffeature being discussed\n3. If unclear, ask clarifying questions:\n   - \"What specific behavior should I test?\"\n   - \"Should I include edge cases for X?\"\n   - \"Do you want unit tests, integration tests, or both?\"\n4. Follow TDD: Write failing test first, then implement\n\n## Commands Available\n\n- `\u002Ftdd-pytest:init` - Initialize pytest configuration\n- `\u002Ftdd-pytest:test [path]` - Write tests using TDD (context-aware)\n- `\u002Ftdd-pytest:test-all` - Run all tests\n- `\u002Ftdd-pytest:report` - Generate\u002Fupdate TESTING_REPORT.local.md\n",{"tag":51,"name":5,"type":51,"author":52,"status":53,"updated":54,"version":55,"description":7},"skill","Joseph OBrien","unpublished","2025-12-23","1.0.1","main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Faiskillstore\u002Fmarketplace\u002F89jobrien\u002Ftdd-pytest",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":8,"skillName":5,"commands":66,"prompt":76,"zipAvailable":77},[67,70,73],{"tool":68,"command":69},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill tdd-pytest",{"tool":71,"command":72},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill tdd-pytest",{"tool":74,"command":75},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill tdd-pytest","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002F89jobrien\u002Ftdd-pytest\u002FSKILL.md",true,[79,85,89,93,97,101,105,109,113,117,121,125,129,133,137,141,145,149,153,157,161,165,169,173,177,181,185,189,193,197,201,205,209,213,217,221,225,229,233,237,241,245,249],{"path":80,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":83,"sourceHtmlUrl":84},"data\u002F01-start-understand-routing.md","REFERENCE","参考文档",1063,"https:\u002F\u002Fgithub.com\u002FRahul-Shinde-NearForm\u002FBMAD_IMPLEMENTATION\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwds-0-alignment-signoff\u002Fdata\u002F01-start-understand-routing.md",{"path":86,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":87,"sourceHtmlUrl":88},"data\u002F02-explore-sections-routing.md",8713,"https:\u002F\u002Fgithub.com\u002FRahul-Shinde-NearForm\u002FBMAD_IMPLEMENTATION\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwds-0-alignment-signoff\u002Fdata\u002F02-explore-sections-routing.md",{"path":90,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":91,"sourceHtmlUrl":92},"data\u002F03-synthesize-present-routing.md",1030,"https:\u002F\u002Fgithub.com\u002FRahul-Shinde-NearForm\u002FBMAD_IMPLEMENTATION\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwds-0-alignment-signoff\u002Fdata\u002F03-synthesize-present-routing.md",{"path":94,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":95,"sourceHtmlUrl":96},"data\u002F04-generate-signoff-routing.md",935,"https:\u002F\u002Fgithub.com\u002FRahul-Shinde-NearForm\u002FBMAD_IMPLEMENTATION\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwds-0-alignment-signoff\u002Fdata\u002F04-generate-signoff-routing.md",{"path":98,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":99,"sourceHtmlUrl":100},"data\u002F05-build-contract-routing.md",1800,"https:\u002F\u002Fgithub.com\u002FRahul-Shinde-NearForm\u002FBMAD_IMPLEMENTATION\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwds-0-alignment-signoff\u002Fdata\u002F05-build-contract-routing.md",{"path":102,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":103,"sourceHtmlUrl":104},"data\u002F06-build-signoff-internal-routing.md",785,"https:\u002F\u002Fgithub.com\u002FRahul-Shinde-NearForm\u002FBMAD_IMPLEMENTATION\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwds-0-alignment-signoff\u002Fdata\u002F06-build-signoff-internal-routing.md",{"path":106,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":107,"sourceHtmlUrl":108},"skill-report.json",13161,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002F89jobrien\u002Ftdd-pytest\u002Fskill-report.json",{"path":110,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":111,"sourceHtmlUrl":112},"steps-c\u002Fstep-01a-understand-situation.md",3874,"https:\u002F\u002Fgithub.com\u002FRahul-Shinde-NearForm\u002FBMAD_IMPLEMENTATION\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwds-0-alignment-signoff\u002Fsteps-c\u002Fstep-01a-understand-situation.md",{"path":114,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":115,"sourceHtmlUrl":116},"steps-c\u002Fstep-01b-determine-if-needed.md",4736,"https:\u002F\u002Fgithub.com\u002FRahul-Shinde-NearForm\u002FBMAD_IMPLEMENTATION\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwds-0-alignment-signoff\u002Fsteps-c\u002Fstep-01b-determine-if-needed.md",{"path":118,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":119,"sourceHtmlUrl":120},"steps-c\u002Fstep-01c-offer-extract.md",4486,"https:\u002F\u002Fgithub.com\u002FRahul-Shinde-NearForm\u002FBMAD_IMPLEMENTATION\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwds-0-alignment-signoff\u002Fsteps-c\u002Fstep-01c-offer-extract.md",{"path":122,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":123,"sourceHtmlUrl":124},"steps-c\u002Fstep-01d-extract-info.md",4863,"https:\u002F\u002Fgithub.com\u002FRahul-Shinde-NearForm\u002FBMAD_IMPLEMENTATION\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwds-0-alignment-signoff\u002Fsteps-c\u002Fstep-01d-extract-info.md",{"path":126,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":127,"sourceHtmlUrl":128},"steps-c\u002Fstep-01e-detect-starting-point.md",4369,"https:\u002F\u002Fgithub.com\u002FRahul-Shinde-NearForm\u002FBMAD_IMPLEMENTATION\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwds-0-alignment-signoff\u002Fsteps-c\u002Fstep-01e-detect-starting-point.md",{"path":130,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":131,"sourceHtmlUrl":132},"steps-c\u002Fstep-02a-explore-realization.md",4518,"https:\u002F\u002Fgithub.com\u002FRahul-Shinde-NearForm\u002FBMAD_IMPLEMENTATION\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwds-0-alignment-signoff\u002Fsteps-c\u002Fstep-02a-explore-realization.md",{"path":134,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":135,"sourceHtmlUrl":136},"steps-c\u002Fstep-02b-explore-solution.md",4121,"https:\u002F\u002Fgithub.com\u002FRahul-Shinde-NearForm\u002FBMAD_IMPLEMENTATION\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwds-0-alignment-signoff\u002Fsteps-c\u002Fstep-02b-explore-solution.md",{"path":138,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":139,"sourceHtmlUrl":140},"steps-c\u002Fstep-02c-explore-why-it-matters.md",4037,"https:\u002F\u002Fgithub.com\u002FRahul-Shinde-NearForm\u002FBMAD_IMPLEMENTATION\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwds-0-alignment-signoff\u002Fsteps-c\u002Fstep-02c-explore-why-it-matters.md",{"path":142,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":143,"sourceHtmlUrl":144},"steps-c\u002Fstep-02d-explore-how-we-see-it-working.md",3989,"https:\u002F\u002Fgithub.com\u002FRahul-Shinde-NearForm\u002FBMAD_IMPLEMENTATION\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwds-0-alignment-signoff\u002Fsteps-c\u002Fstep-02d-explore-how-we-see-it-working.md",{"path":146,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":147,"sourceHtmlUrl":148},"steps-c\u002Fstep-02e-explore-paths-we-explored.md",3943,"https:\u002F\u002Fgithub.com\u002FRahul-Shinde-NearForm\u002FBMAD_IMPLEMENTATION\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwds-0-alignment-signoff\u002Fsteps-c\u002Fstep-02e-explore-paths-we-explored.md",{"path":150,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":151,"sourceHtmlUrl":152},"steps-c\u002Fstep-02f-explore-recommended-solution.md",3789,"https:\u002F\u002Fgithub.com\u002FRahul-Shinde-NearForm\u002FBMAD_IMPLEMENTATION\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwds-0-alignment-signoff\u002Fsteps-c\u002Fstep-02f-explore-recommended-solution.md",{"path":154,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":155,"sourceHtmlUrl":156},"steps-c\u002Fstep-02g-explore-path-forward.md",4434,"https:\u002F\u002Fgithub.com\u002FRahul-Shinde-NearForm\u002FBMAD_IMPLEMENTATION\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwds-0-alignment-signoff\u002Fsteps-c\u002Fstep-02g-explore-path-forward.md",{"path":158,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":159,"sourceHtmlUrl":160},"steps-c\u002Fstep-02h-explore-value-we-create.md",4575,"https:\u002F\u002Fgithub.com\u002FRahul-Shinde-NearForm\u002FBMAD_IMPLEMENTATION\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwds-0-alignment-signoff\u002Fsteps-c\u002Fstep-02h-explore-value-we-create.md",{"path":162,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":163,"sourceHtmlUrl":164},"steps-c\u002Fstep-02i-explore-cost-of-inaction.md",4209,"https:\u002F\u002Fgithub.com\u002FRahul-Shinde-NearForm\u002FBMAD_IMPLEMENTATION\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwds-0-alignment-signoff\u002Fsteps-c\u002Fstep-02i-explore-cost-of-inaction.md",{"path":166,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":167,"sourceHtmlUrl":168},"steps-c\u002Fstep-02j-explore-our-commitment.md",4191,"https:\u002F\u002Fgithub.com\u002FRahul-Shinde-NearForm\u002FBMAD_IMPLEMENTATION\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwds-0-alignment-signoff\u002Fsteps-c\u002Fstep-02j-explore-our-commitment.md",{"path":170,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":171,"sourceHtmlUrl":172},"steps-c\u002Fstep-02k-explore-summary.md",3723,"https:\u002F\u002Fgithub.com\u002FRahul-Shinde-NearForm\u002FBMAD_IMPLEMENTATION\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwds-0-alignment-signoff\u002Fsteps-c\u002Fstep-02k-explore-summary.md",{"path":174,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":175,"sourceHtmlUrl":176},"steps-c\u002Fstep-03a-reflect-back.md",4466,"https:\u002F\u002Fgithub.com\u002FRahul-Shinde-NearForm\u002FBMAD_IMPLEMENTATION\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwds-0-alignment-signoff\u002Fsteps-c\u002Fstep-03a-reflect-back.md",{"path":178,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":179,"sourceHtmlUrl":180},"steps-c\u002Fstep-03b-synthesize-document.md",4594,"https:\u002F\u002Fgithub.com\u002FRahul-Shinde-NearForm\u002FBMAD_IMPLEMENTATION\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwds-0-alignment-signoff\u002Fsteps-c\u002Fstep-03b-synthesize-document.md",{"path":182,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":183,"sourceHtmlUrl":184},"steps-c\u002Fstep-03d-present-approval.md",5164,"https:\u002F\u002Fgithub.com\u002FRahul-Shinde-NearForm\u002FBMAD_IMPLEMENTATION\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwds-0-alignment-signoff\u002Fsteps-c\u002Fstep-03d-present-approval.md",{"path":186,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":187,"sourceHtmlUrl":188},"steps-c\u002Fstep-04a-offer-signoff.md",5123,"https:\u002F\u002Fgithub.com\u002FRahul-Shinde-NearForm\u002FBMAD_IMPLEMENTATION\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwds-0-alignment-signoff\u002Fsteps-c\u002Fstep-04a-offer-signoff.md",{"path":190,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":191,"sourceHtmlUrl":192},"steps-c\u002Fstep-04b-determine-business-model.md",5041,"https:\u002F\u002Fgithub.com\u002FRahul-Shinde-NearForm\u002FBMAD_IMPLEMENTATION\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwds-0-alignment-signoff\u002Fsteps-c\u002Fstep-04b-determine-business-model.md",{"path":194,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":195,"sourceHtmlUrl":196},"steps-c\u002Fstep-05a-contract-overview.md",3909,"https:\u002F\u002Fgithub.com\u002FRahul-Shinde-NearForm\u002FBMAD_IMPLEMENTATION\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwds-0-alignment-signoff\u002Fsteps-c\u002Fstep-05a-contract-overview.md",{"path":198,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":199,"sourceHtmlUrl":200},"steps-c\u002Fstep-05b-contract-business-model.md",4985,"https:\u002F\u002Fgithub.com\u002FRahul-Shinde-NearForm\u002FBMAD_IMPLEMENTATION\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwds-0-alignment-signoff\u002Fsteps-c\u002Fstep-05b-contract-business-model.md",{"path":202,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":203,"sourceHtmlUrl":204},"steps-c\u002Fstep-05c-contract-scope.md",5098,"https:\u002F\u002Fgithub.com\u002FRahul-Shinde-NearForm\u002FBMAD_IMPLEMENTATION\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwds-0-alignment-signoff\u002Fsteps-c\u002Fstep-05c-contract-scope.md",{"path":206,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":207,"sourceHtmlUrl":208},"steps-c\u002Fstep-05d-contract-payment.md",5732,"https:\u002F\u002Fgithub.com\u002FRahul-Shinde-NearForm\u002FBMAD_IMPLEMENTATION\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwds-0-alignment-signoff\u002Fsteps-c\u002Fstep-05d-contract-payment.md",{"path":210,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":211,"sourceHtmlUrl":212},"steps-c\u002Fstep-05e-contract-timeline.md",3860,"https:\u002F\u002Fgithub.com\u002FRahul-Shinde-NearForm\u002FBMAD_IMPLEMENTATION\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwds-0-alignment-signoff\u002Fsteps-c\u002Fstep-05e-contract-timeline.md",{"path":214,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":215,"sourceHtmlUrl":216},"steps-c\u002Fstep-05f-contract-availability.md",4490,"https:\u002F\u002Fgithub.com\u002FRahul-Shinde-NearForm\u002FBMAD_IMPLEMENTATION\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwds-0-alignment-signoff\u002Fsteps-c\u002Fstep-05f-contract-availability.md",{"path":218,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":219,"sourceHtmlUrl":220},"steps-c\u002Fstep-05g-contract-confidentiality.md",4961,"https:\u002F\u002Fgithub.com\u002FRahul-Shinde-NearForm\u002FBMAD_IMPLEMENTATION\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwds-0-alignment-signoff\u002Fsteps-c\u002Fstep-05g-contract-confidentiality.md",{"path":222,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":223,"sourceHtmlUrl":224},"steps-c\u002Fstep-05h-contract-not-to-exceed.md",5212,"https:\u002F\u002Fgithub.com\u002FRahul-Shinde-NearForm\u002FBMAD_IMPLEMENTATION\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwds-0-alignment-signoff\u002Fsteps-c\u002Fstep-05h-contract-not-to-exceed.md",{"path":226,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":227,"sourceHtmlUrl":228},"steps-c\u002Fstep-05i-contract-work-initiation.md",4441,"https:\u002F\u002Fgithub.com\u002FRahul-Shinde-NearForm\u002FBMAD_IMPLEMENTATION\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwds-0-alignment-signoff\u002Fsteps-c\u002Fstep-05i-contract-work-initiation.md",{"path":230,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":231,"sourceHtmlUrl":232},"steps-c\u002Fstep-05j-contract-terms.md",4572,"https:\u002F\u002Fgithub.com\u002FRahul-Shinde-NearForm\u002FBMAD_IMPLEMENTATION\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwds-0-alignment-signoff\u002Fsteps-c\u002Fstep-05j-contract-terms.md",{"path":234,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":235,"sourceHtmlUrl":236},"steps-c\u002Fstep-05k-contract-approval.md",3601,"https:\u002F\u002Fgithub.com\u002FRahul-Shinde-NearForm\u002FBMAD_IMPLEMENTATION\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwds-0-alignment-signoff\u002Fsteps-c\u002Fstep-05k-contract-approval.md",{"path":238,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":239,"sourceHtmlUrl":240},"steps-c\u002Fstep-05l-finalize-contract.md",4258,"https:\u002F\u002Fgithub.com\u002FRahul-Shinde-NearForm\u002FBMAD_IMPLEMENTATION\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwds-0-alignment-signoff\u002Fsteps-c\u002Fstep-05l-finalize-contract.md",{"path":242,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":243,"sourceHtmlUrl":244},"steps-c\u002Fstep-06a-build-internal-signoff.md",5056,"https:\u002F\u002Fgithub.com\u002FRahul-Shinde-NearForm\u002FBMAD_IMPLEMENTATION\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwds-0-alignment-signoff\u002Fsteps-c\u002Fstep-06a-build-internal-signoff.md",{"path":246,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":247,"sourceHtmlUrl":248},"steps-c\u002Fstep-06b-finalize-signoff.md",4085,"https:\u002F\u002Fgithub.com\u002FRahul-Shinde-NearForm\u002FBMAD_IMPLEMENTATION\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwds-0-alignment-signoff\u002Fsteps-c\u002Fstep-06b-finalize-signoff.md",{"path":250,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":251,"sourceHtmlUrl":252},"workflow.md",4367,"https:\u002F\u002Fgithub.com\u002FRahul-Shinde-NearForm\u002FBMAD_IMPLEMENTATION\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwds-0-alignment-signoff\u002Fworkflow.md",[254,264,274,283,289,296],{"skillNo":255,"name":256,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":257,"categories":258,"keywords":260,"publishedAt":46},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[259],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[261,262,263],"model","model hierarchy","model hierarchy skill",{"skillNo":265,"name":266,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":267,"categories":268,"keywords":270,"publishedAt":46},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[269],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[271,272,273],"MCP","zoom","zoom mcp",{"skillNo":275,"name":276,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":277,"categories":278,"keywords":279,"publishedAt":46},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[280,281,282,272],"sdk","zoom apps sdk","apps",{"skillNo":284,"name":285,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":286,"categories":287,"keywords":288,"publishedAt":46},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[285],{"skillNo":290,"name":291,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":292,"categories":293,"keywords":295,"publishedAt":46},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[294],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[291],{"skillNo":297,"name":298,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":299,"categories":300,"keywords":301,"publishedAt":46},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[298]]