From db1b8f343b7c3a68bc5bf00b94082dee32cbc746 Mon Sep 17 00:00:00 2001 From: Kristofer Jussmann Date: Wed, 28 Oct 2026 18:43:26 +0200 Subject: [PATCH] Rebrand Harness Library as ToolIndex for all agent tools --- .github/ISSUE_TEMPLATE/submit-harness.yml | 58 +------- .github/ISSUE_TEMPLATE/submit-tool.yml | 86 +++++++++++ .github/workflows/catalog.yml | 41 ++++++ .github/workflows/check.yml | 1 + .github/workflows/pages.yml | 61 -------- .gitignore | 3 + CONTRIBUTING.md | 12 +- README.md | 62 ++++---- data/listings/smooth-motion-graphics.json | 77 +++++++--- data/listings/vipermesh-blender.json | 79 +++++++--- deploy/cloudrun/Dockerfile | 4 + deploy/cloudrun/nginx.conf | 35 +++++ docs/badge-program.md | 14 +- docs/discovery.md | 59 +++----- docs/i18n/README.md | 2 +- docs/i18n/de/CONTRIBUTING.md | 8 +- docs/i18n/de/README.md | 64 ++++---- docs/i18n/de/docs/badge-program.md | 14 +- docs/i18n/de/docs/discovery.md | 59 +++----- docs/i18n/es/CONTRIBUTING.md | 8 +- docs/i18n/es/README.md | 64 ++++---- docs/i18n/es/docs/badge-program.md | 14 +- docs/i18n/es/docs/discovery.md | 59 +++----- docs/i18n/fr/CONTRIBUTING.md | 8 +- docs/i18n/fr/README.md | 64 ++++---- docs/i18n/fr/docs/badge-program.md | 14 +- docs/i18n/fr/docs/discovery.md | 59 +++----- docs/i18n/ja/CONTRIBUTING.md | 8 +- docs/i18n/ja/README.md | 64 ++++---- docs/i18n/ja/docs/badge-program.md | 14 +- docs/i18n/ja/docs/discovery.md | 59 +++----- docs/i18n/manifest.json | 66 ++++----- docs/i18n/pt-BR/CONTRIBUTING.md | 8 +- docs/i18n/pt-BR/README.md | 64 ++++---- docs/i18n/pt-BR/docs/badge-program.md | 14 +- docs/i18n/pt-BR/docs/discovery.md | 59 +++----- docs/i18n/zh-CN/CONTRIBUTING.md | 8 +- docs/i18n/zh-CN/README.md | 64 ++++---- docs/i18n/zh-CN/docs/badge-program.md | 14 +- docs/i18n/zh-CN/docs/discovery.md | 59 +++----- docs/listing.example.json | 36 +++-- firebase.json | 14 ++ scripts/catalog.py | 44 ++++-- scripts/publishing.py | 172 ++++++++++++---------- scripts/site_config.py | 23 +++ scripts/stage_cloudrun.py | 27 ++++ scripts/validate_i18n.py | 2 +- site/CNAME | 1 + site/app.js | 18 ++- site/assets/logos/README.txt | 5 + site/assets/logos/vipermesh.png | Bin 0 -> 338265 bytes site/assets/social-card.png | Bin 153295 -> 28911 bytes site/layout.html | 28 ++-- site/style.css | 10 +- tests/test_i18n.py | 6 +- tests/test_publishing.py | 2 +- tests/test_toolindex.py | 95 ++++++++++++ 57 files changed, 1159 insertions(+), 854 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/submit-tool.yml create mode 100644 .github/workflows/catalog.yml delete mode 100644 .github/workflows/pages.yml create mode 100644 deploy/cloudrun/Dockerfile create mode 100644 deploy/cloudrun/nginx.conf create mode 100644 firebase.json create mode 100644 scripts/site_config.py create mode 100644 scripts/stage_cloudrun.py create mode 100644 site/CNAME create mode 100644 site/assets/logos/README.txt create mode 100644 site/assets/logos/vipermesh.png create mode 100644 tests/test_toolindex.py diff --git a/.github/ISSUE_TEMPLATE/submit-harness.yml b/.github/ISSUE_TEMPLATE/submit-harness.yml index 79b8ba1..7db9298 100644 --- a/.github/ISSUE_TEMPLATE/submit-harness.yml +++ b/.github/ISSUE_TEMPLATE/submit-harness.yml @@ -1,58 +1,14 @@ -name: Submit a harness -description: Share a reusable agent harness with clear setup instructions. -title: "[Harness] " -labels: [submission] +name: Legacy tool submission +description: Use the ToolIndex submission form instead. +title: "[Tool] " body: - type: markdown attributes: - value: | - **New submissions are welcome — a useful skill folder can be enough.** - Share your repository and setup below. No fork, pull request or Harneloop dependency is required. - A maintainer reviews the instructions and package scope, asks questions here if needed, and publishes approved listings. - [Read the short submission guide](https://openrootdev.github.io/harness-library/submit/). - - type: input - id: name - attributes: - label: Harness name - validations: - required: true - - type: input - id: repository - attributes: - label: Public source repository - placeholder: https://github.com/owner/repo - validations: - required: true - - type: textarea - id: summary - attributes: - label: Purpose and category - description: "What job does it help an agent do? Suggested category: Creative, 3D & Blender, Coding, Research, Data, Operations or Other." - validations: - required: true + value: "[Open the current ToolIndex submission form](https://github.com/OpenRootdev/toolindex/issues/new?template=submit-tool.yml)." - type: textarea - id: install + id: submission attributes: - label: Installation instructions - description: Include ordered steps, prerequisites, working directory, agent/client integration and first use. + label: Tool details + description: Source, type, setup, license or terms and optional image. validations: required: true - - type: textarea - id: distribution - attributes: - label: Focused distribution, version and license - description: Link the package or dedicated harness branch. If the repo contains unrelated material, specify how users install only the harness. Include license/attribution requirements. - validations: - required: true - - type: textarea - id: setup - attributes: - label: Manual connections and additional notes - description: Tools, MCPs, credentials or manual setup required. Write 'none' where appropriate. Do not include secrets. - validations: - required: true - - type: textarea - id: contents - attributes: - label: Optional composition and evidence - description: Skills, files, references, top-level tools, tested artifacts/platforms, and Built with Harneloop evidence if applicable. diff --git a/.github/ISSUE_TEMPLATE/submit-tool.yml b/.github/ISSUE_TEMPLATE/submit-tool.yml new file mode 100644 index 0000000..0731c27 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/submit-tool.yml @@ -0,0 +1,86 @@ +name: Submit a tool +description: Share a reusable agent tool with clear setup instructions. +title: "[Tool] " +labels: [submission] +body: + - type: markdown + attributes: + value: | + **New submissions are welcome ; a useful skill folder can be enough.** + Share your repository and setup below. No fork, pull request or Harneloop dependency is required. + A maintainer reviews the instructions and package scope, asks questions here if needed, and publishes approved listings. + [Read the short submission guide](https://toolindex.org/submit/). + - type: input + id: name + attributes: + label: Tool name + validations: + required: true + - type: input + id: repository + attributes: + label: Source repository or official documentation + placeholder: https://github.com/owner/repo + validations: + required: true + - type: textarea + id: summary + attributes: + label: Purpose and category + description: "What job does it help an agent do? Suggested category: Creative, 3D & Blender, Coding, Research, Data, Operations or Other." + validations: + required: true + - type: textarea + id: install + attributes: + label: Installation or connection instructions + description: Include ordered steps, prerequisites, working directory, agent/client integration and first use. + validations: + required: true + - type: textarea + id: distribution + attributes: + label: Focused distribution, version and license + description: Link the package or focused source or service/API endpoint. If the repo contains unrelated material, specify how users install only the relevant tool. Include license/attribution requirements. + validations: + required: true + - type: textarea + id: setup + attributes: + label: Manual connections and additional notes + description: Tools, MCPs, credentials or manual setup required. Write 'none' where appropriate. Do not include secrets. + validations: + required: true + - type: textarea + id: contents + attributes: + label: Optional composition and evidence + description: Skills, files, references, top-level tools, tested artifacts/platforms, and Built with Harneloop evidence if applicable. + - type: dropdown + id: tool_type + attributes: + label: Tool type + options: + - Skill + - MCP server + - CLI + - API + - Library + - Plugin + - Workflow + - Harness + - Other + validations: + required: true + - type: textarea + id: image + attributes: + label: Logo or custom image (optional) + description: Link an image you may use, its source and alt text. Leave blank for neutral initials. + validations: + required: false + - type: textarea + id: service_terms + attributes: + label: Pricing, authentication and service terms (if applicable) + description: Disclose required accounts, costs, API scopes, rate limits and usage terms. Do not submit credentials. diff --git a/.github/workflows/catalog.yml b/.github/workflows/catalog.yml new file mode 100644 index 0000000..ad12af0 --- /dev/null +++ b/.github/workflows/catalog.yml @@ -0,0 +1,41 @@ +name: Refresh ToolIndex catalog +on: + workflow_dispatch: + schedule: + - cron: '17 5 * * *' +permissions: + contents: read +concurrency: + group: toolindex-catalog + cancel-in-progress: false +jobs: + refresh: + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - uses: actions/checkout@v7 + - uses: actions/setup-python@v7 + with: + python-version: '3.x' + - run: python scripts/catalog.py validate + - run: python -m unittest discover -s tests -v + - name: Verify badges on reviewed main + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: python scripts/catalog.py refresh + - name: Persist boost receipts + run: | + if ! git diff --quiet -- data/boosts.json; then + git config user.name "toolindex-bot" + git config user.email "toolindex-bot@users.noreply.github.com" + git add data/boosts.json + git commit -m "Refresh verified community badge receipts" + git push + fi + - run: python scripts/catalog.py build + - uses: actions/upload-artifact@v6 + with: + name: toolindex-site + path: dist + retention-days: 7 diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 347beed..d0dac2a 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -15,5 +15,6 @@ jobs: python-version: '3.x' - run: python scripts/catalog.py validate - run: python -m unittest discover -s tests -v + - run: python scripts/validate_i18n.py - run: python scripts/catalog.py build - run: node --check site/app.js diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml deleted file mode 100644 index ad98fd2..0000000 --- a/.github/workflows/pages.yml +++ /dev/null @@ -1,61 +0,0 @@ -name: Publish library -on: - push: - branches: [main] - workflow_dispatch: - schedule: - - cron: '17 5 * * *' -permissions: - contents: read -concurrency: - group: library-pages - cancel-in-progress: false -jobs: - build: - runs-on: ubuntu-latest - permissions: - contents: write - steps: - - uses: actions/checkout@v7 - - uses: actions/setup-python@v7 - with: - python-version: '3.x' - - run: python scripts/catalog.py validate - - run: python -m unittest discover -s tests -v - - name: Verify badges on reviewed main - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: python scripts/catalog.py refresh - - name: Persist boost receipts - run: | - if ! git diff --quiet -- data/boosts.json; then - git config user.name "harness-library-bot" - git config user.email "harness-library-bot@users.noreply.github.com" - git add data/boosts.json - git commit -m "Refresh verified community badge receipts" - git push - fi - - run: python scripts/catalog.py build - - uses: actions/upload-pages-artifact@v5 - with: - path: dist - deploy: - needs: build - runs-on: ubuntu-latest - permissions: - pages: write - id-token: write - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - steps: - - uses: actions/deploy-pages@v5 - id: deployment - - uses: actions/checkout@v7 - if: github.event_name == 'push' && github.event.head_commit.message != 'Refresh verified community badge receipts' - - name: Notify participating search engines of published changes - if: github.event_name == 'push' && github.event.head_commit.message != 'Refresh verified community badge receipts' - continue-on-error: true - run: | - python scripts/catalog.py build - python scripts/notify_indexnow.py diff --git a/.gitignore b/.gitignore index e2478da..34257bf 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,6 @@ dist/ .playwright-cli/ __pycache__/ *.pyc +docs/internal/ +task.md +implementation-plan.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a57b731..580b69c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,21 +1,25 @@ -# Submit a harness +# Submit a tool + +ToolIndex includes any tool AI agents can use: skills, MCP servers, CLIs, APIs, libraries, plugins, workflows and harnesses. Hosted and commercial tools are welcome when access, pricing, authentication and terms are clear. Every listing links directly to its source repository or official documentation. + +A logo or custom image is optional. Supply its source and alt text if available; otherwise the listing uses neutral initials. Choose a tool type and explain installation or service access. Non-GitHub sources are accepted; automatic README badge checks currently support GitHub only. **New submissions are welcome.** We’re looking for practical, reusable agent setups, including small skill folders. Harneloop is optional. The simplest route needs no fork or pull request: -1. [Open the GitHub submission form](https://github.com/Ker102/harness-library/issues/new?template=submit-harness.yml). Share the repository, name and task/category. +1. [Open the GitHub submission form](https://github.com/OpenRootdev/toolindex/issues/new?template=submit-tool.yml). Share the repository, name and task/category. 2. Explain installation, focused distribution, version/license and any manual connections. Extra composition and test evidence are optional. 3. Maintainers review your issue, ask for missing details there if needed, and publish approved entries. Later changes can be submitted in another issue or PR. -You only need a GitHub account to use the form. The [website guide](https://ker102.github.io/harness-library/submit/) explains the same process. +You only need a GitHub account to use the form. The [website guide](https://toolindex.org/submit/) explains the same process. For a PR, copy `docs/listing.example.json` to `data/listings/your-slug.json`. Use the same lowercase slug in the filename and `id`. Run `python scripts/catalog.py validate` and the tests described in the README. Required information: - Name, short summary, category, source repository, license and version or pinned revision. -- Focused distribution URL, what it contains and whether the source repo also contains irrelevant material. Use a downloadable package or a dedicated harness branch for mixed repos; do not require users to clone a large unrelated project. +- Focused distribution URL, what it contains and whether the source repo also contains irrelevant material. Use a downloadable package or a dedicated tool branch for mixed repos; do not require users to clone a large unrelated project. - Clear, ordered installation instructions. State working directory, prerequisites, agent/client integration and how to begin. Link client-specific guidance where discovery differs. - Manual connections/configuration, required MCPs or tools, credentials if any, and additional notes. Use empty lists when none are required. Never submit secrets. diff --git a/README.md b/README.md index f64dcce..ccdb685 100644 --- a/README.md +++ b/README.md @@ -1,54 +1,52 @@ -

Harness Library

-

Harness Library

+

ToolIndex

+

ToolIndex

English · Español · 简体中文 · Français · 日本語 · Deutsch · Português (Brasil)

-

Discover, install and share reusable agent harnesses.

-

Browse the library · Submit a harness · Submission guide

+

Tools for AI agents. Clear setup. Direct source links.

+

toolindex.org · Submit a tool

-An open directory of the instructions, skills, tools and workflows that help an agent do a specific job well. A harness can be a few files or a larger tool setup. Every listing explains how to install it, what to configure manually and which part of the source repository you need. +ToolIndex is an open directory of skills, MCP servers, CLIs, APIs, libraries, plugins, workflows and harnesses that AI agents can use. Local packages, hosted services and commercial tools are welcome when access, pricing and terms are clear. -The first entries are [Smooth Motion Graphics](https://github.com/Ker102/smooth-motion-graphics) and [ViperMesh for Blender](https://github.com/OpenRootdev/vipermesh-blender). ViperMesh's existing repository and releases are listed unchanged. Harneloop is optional; harnesses built with it can display the attribution after review. +## What belongs here -## See a harness in action +Useful tools for a specific task, from a small skill folder to a service API. Each listing links directly to its source repository or official documentation and explains installation or connection, manual setup, license or terms, version and review scope. -The Harneloop explainer shows the motion style behind the library’s [Smooth Motion Graphics harness](https://openrootdev.github.io/harness-library/harnesses/smooth-motion-graphics/): readable scenes, curved connections and calm transitions. It also explains how Harneloop builds and improves harness units. +## Submit a tool -

Watch the silent Harneloop motion graphics demo

-

Watch the full video · 3:40 · Silent with on-screen explanations

+1. Open the GitHub form with the tool name, type, source and purpose. +2. Describe the package or service, installation or access steps, version, license or terms, credentials required and any costs. Never submit secrets. +3. A logo or custom image is optional. Supply its URL, source and alt text if available; otherwise the listing uses neutral initials. +4. Maintainers review the submission and publish approved entries. No fork, pull request or ToolIndex account is required; the form needs a GitHub account. -The video is hosted separately. Browse the harness’s own install package and example renderer from its listing. +[CONTRIBUTING.md](CONTRIBUTING.md) · [JSON](docs/listing.example.json) -## Submit a harness +## Reviewed examples -**New submissions are welcome.** We’re looking for useful harnesses for coding, research, data, creative work, Blender and operations. A few skills can be enough; you do not need to use Harneloop. +A skill for brand animation and a Blender MCP connector show two supported tool types. Their source and releases remain in their own repositories. -1. [Open the short GitHub submission form](https://github.com/OpenRootdev/harness-library/issues/new?template=submit-harness.yml) with your repository and the task it helps an agent do. -2. Add clear installation steps, category, license, version/distribution scope and any manual setup. Component counts and test evidence are optional. -3. A maintainer reviews the setup, follows up in your issue if needed, and publishes approved entries. +- [Smooth Motion Graphics](https://toolindex.org/tools/smooth-motion-graphics/) +- [ViperMesh for Blender](https://toolindex.org/tools/vipermesh-blender/) -**No fork, pull request or Harness Library account is needed.** A GitHub account is needed for the form. You can also send a PR adding one JSON file in `data/listings/`. See the [public submission guide](https://openrootdev.github.io/harness-library/submit/), [CONTRIBUTING.md](CONTRIBUTING.md) and [the template](docs/listing.example.json). +## Build and preview -A mixed repository must provide a focused package or a dedicated harness branch. Uploaders do not set verification or promotion labels. Maintainers review setup, scope and any evidence before publishing the listing. “Artifacts checked” means the documented artifacts were inspected; it does not imply every model, platform or use case works. - -## Free badge program - -Add the exact “Listed in Harness Library” badge and listing backlink within the first 30 lines of your source README. After verification, your listing receives **one 14-day community boost**, clearly labelled in the directory. A boost affects ordering, not review status. It is free, optional and expires automatically. Removing/readding the badge does not restart it. [Policy and verification](docs/badge-program.md). - -## Development - -No frontend dependencies or backend service are needed. Python 3.11+ runs the validator and builder; the UI is plain HTML, CSS and JavaScript. +Python 3.11+ builds the static site. The frontend is plain HTML, CSS and JavaScript; search progressively enhances pages that remain readable without JavaScript. ```sh python scripts/catalog.py validate python -m unittest discover -s tests -v python scripts/catalog.py build -python -c "import shutil; shutil.copytree('dist', '.preview/harness-library', dirs_exist_ok=True)" -python -m http.server 4201 --directory .preview +python -m http.server 4201 --directory dist ``` -Open `http://localhost:4201/harness-library/`. The preview copy serves the production base path correctly; refresh it after rebuilding. Asset and navigation paths intentionally match the GitHub Pages project URL. +`http://localhost:4201/` + +## Google Cloud hosting + +Cloud Run serves the site with minimum 0 instances, maximum 2 and request-based billing. Firebase Hosting handles custom-domain HTTPS and forwards requests to Cloud Run. The public-only staging helper excludes private workspace files. Domain activation depends on DNS and certificate verification. + +`python scripts/stage_cloudrun.py` · [`firebase.json`](firebase.json) · [docs/discovery.md](docs/discovery.md) -`site/layout.html`, `site/style.css` and `scripts/publishing.py` generate complete HTML pages for the directory, each harness, the submission guide and the about page. JavaScript progressively adds search, filters and copying; installation content and navigation remain usable without it. Builds also publish a sitemap, Markdown page mirrors, `llms.txt` and the reviewed JSON catalog. See [Discovery and indexing](docs/discovery.md) for owner setup and crawl details. +## Reviews and community badges -`python scripts/catalog.py refresh` verifies opted-in badges by reading public GitHub README content. It never executes submitted code. GitHub Pages publishes reviewed main; a daily workflow refreshes badge receipts and rebuilds. External PR checks have read-only permissions. +Setup reviews and artifact checks describe specific evidence, not universal model or platform compatibility. Listings can optionally use the badge for one transparent 14-day community boost. Harneloop attribution is optional; no framework is required. -Source data and review receipts live in this repository. Harness source and release assets live in their own repositories. No harness videos, dependencies or private development traces are installed with Harneloop's framework. +[docs/badge-program.md](docs/badge-program.md) diff --git a/data/listings/smooth-motion-graphics.json b/data/listings/smooth-motion-graphics.json index ac18134..df59bfa 100644 --- a/data/listings/smooth-motion-graphics.json +++ b/data/listings/smooth-motion-graphics.json @@ -1,21 +1,62 @@ { - "schema_version":1, - "id":"smooth-motion-graphics", - "name":"Smooth Motion Graphics", - "summary":"A compact skill for calm, clear brand animations.", - "category":"Creative", - "repository":"https://github.com/Ker102/smooth-motion-graphics", - "license":"MIT", - "version":"1.0.0", - "distribution":{"kind":"package","url":"https://github.com/Ker102/smooth-motion-graphics/releases/download/v1.0.0/smooth-motion-graphics-v1.0.0.zip","label":"Download skill ZIP","scope":"One skill, reference guide, example brief, renderer and dependency manifests. No videos or dependencies.","repository_has_extra_material":true}, - "installation":[ - {"title":"Download the focused package","body":"Download the ZIP and SHA256SUMS.txt from the release. Verify the checksum with your system's checksum tool, then extract into a folder you control.","url":"https://github.com/Ker102/smooth-motion-graphics/releases/tag/v1.0.0","label":"Release and checksums"}, - {"title":"Point your agent at the skill","body":"Ask any agent to read this file. For an Agent Skills-compatible client, copy the complete skill folder to its documented skills directory. Discovery differs by client.","command":"skills/smooth-motion-graphics/SKILL.md"}, - {"title":"Optional: render a first preview","body":"Install Node.js 20+ and system FFmpeg for video encoding. From the skill folder, run these commands. Copy and adapt the example brief for your own brand before delivering a video.","command":"npm ci\nnode scripts/render.cjs stills assets/brand-brief.example.json output\nnode scripts/render.cjs video assets/brand-brief.example.json output"} + "schema_version": 1, + "id": "smooth-motion-graphics", + "name": "Smooth Motion Graphics", + "summary": "A compact skill for calm, clear brand animations.", + "category": "Creative", + "repository": "https://github.com/Ker102/smooth-motion-graphics", + "license": "MIT", + "version": "1.0.0", + "distribution": { + "kind": "package", + "url": "https://github.com/Ker102/smooth-motion-graphics/releases/download/v1.0.0/smooth-motion-graphics-v1.0.0.zip", + "label": "Download skill ZIP", + "scope": "One skill, reference guide, example brief, renderer and dependency manifests. No videos or dependencies.", + "repository_has_extra_material": true + }, + "installation": [ + { + "title": "Download the focused package", + "body": "Download the ZIP and SHA256SUMS.txt from the release. Verify the checksum with your system's checksum tool, then extract into a folder you control.", + "url": "https://github.com/Ker102/smooth-motion-graphics/releases/tag/v1.0.0", + "label": "Release and checksums" + }, + { + "title": "Point your agent at the skill", + "body": "Ask any agent to read this file. For an Agent Skills-compatible client, copy the complete skill folder to its documented skills directory. Discovery differs by client.", + "command": "skills/smooth-motion-graphics/SKILL.md" + }, + { + "title": "Optional: render a first preview", + "body": "Install Node.js 20+ and system FFmpeg for video encoding. From the skill folder, run these commands. Copy and adapt the example brief for your own brand before delivering a video.", + "command": "npm ci\nnode scripts/render.cjs stills assets/brand-brief.example.json output\nnode scripts/render.cjs video assets/brand-brief.example.json output" + } ], - "manual_setup":["No MCP, API key or image model is required. The instructions can be used with your existing animation tools.","Optional reference renderer: Node.js 20+, system FFmpeg with libx264 for encoding, and your own licensed font if desired.","Set SMOOTH_FFMPEG or SMOOTH_FONT_PATH only if using a non-default executable or local font. Inspect preview frames on the machine that will encode the video."], - "notes":["Reference layouts: title, 2–4 inputs into a central object, and 3–7 workflow cards with explicit directed edges. Extend them when the story needs a different layout.","Optional Harneloop thin export is available in the release. It is a promoted snapshot for reuse; it does not include private development runs or claim a one-command import.","The example uses fictional Luma branding. Replace the story with verified facts for your product."], - "contents":{"skills":1,"references":1,"renderers":1,"files":6,"mcp_tools":0,"tools":["Node.js + @napi-rs/canvas (optional)","FFmpeg (optional encoding)"]}, - "harneloop":{"url":"https://harneloop.kaelux.dev","detail":"Extracted, tested and promoted through an external Harneloop unit. The optional thin export contains the verified skill."}, - "documentation":"https://github.com/Ker102/smooth-motion-graphics/blob/main/INSTALL.md" + "manual_setup": [ + "No MCP, API key or image model is required. The instructions can be used with your existing animation tools.", + "Optional reference renderer: Node.js 20+, system FFmpeg with libx264 for encoding, and your own licensed font if desired.", + "Set SMOOTH_FFMPEG or SMOOTH_FONT_PATH only if using a non-default executable or local font. Inspect preview frames on the machine that will encode the video." + ], + "notes": [ + "Reference layouts: title, 2–4 inputs into a central object, and 3–7 workflow cards with explicit directed edges. Extend them when the story needs a different layout.", + "Optional Harneloop thin export is available in the release. It is a promoted snapshot for reuse; it does not include private development runs or claim a one-command import.", + "The example uses fictional Luma branding. Replace the story with verified facts for your product." + ], + "contents": { + "skills": 1, + "references": 1, + "renderers": 1, + "files": 6, + "mcp_tools": 0, + "tools": [ + "Node.js + @napi-rs/canvas (optional)", + "FFmpeg (optional encoding)" + ] + }, + "harneloop": { + "url": "https://harneloop.kaelux.dev", + "detail": "Extracted, tested and promoted through an external Harneloop unit. The optional thin export contains the verified skill." + }, + "documentation": "https://github.com/Ker102/smooth-motion-graphics/blob/main/INSTALL.md", + "type": "Skill" } diff --git a/data/listings/vipermesh-blender.json b/data/listings/vipermesh-blender.json index 4c9f9b7..7bd332e 100644 --- a/data/listings/vipermesh-blender.json +++ b/data/listings/vipermesh-blender.json @@ -1,20 +1,65 @@ { - "schema_version":1, - "id":"vipermesh-blender", - "name":"ViperMesh for Blender", - "summary":"A local Blender MCP workflow for building and checking 3D scenes.", - "category":"3D & Blender", - "repository":"https://github.com/OpenRootdev/vipermesh-blender", - "license":"MIT; preserve NOTICE.md attribution", - "version":"1.3.0", - "distribution":{"kind":"package","url":"https://github.com/OpenRootdev/vipermesh-blender/releases/download/v1.3.0/vipermesh-blender-1.3.0.mcpb","label":"Download MCP bundle","scope":"Focused MCPB server bundle. Install the separate Blender addon and optional source skill; the full mixed repository is not needed.","repository_has_extra_material":true}, - "installation":[ - {"title":"Install and enable the Blender addon","body":"Download the addon from the release. In Blender, open Edit → Preferences → Add-ons → Install from Disk, select the downloaded Python addon file and enable ViperMesh for Blender. The maintainer currently tests Blender 5.2.","url":"https://github.com/OpenRootdev/vipermesh-blender/releases/download/v1.3.0/vipermesh-for-blender-addon-v1.3.0.py","label":"Download Blender addon"}, - {"title":"Connect your MCP client","body":"Install Node.js 20+. Import the MCPB bundle into a client supporting local MCPB extensions. Keep the Blender viewport sidebar's ViperMesh Local Bridge running. Source-build/stdio configuration is documented in the repository for clients without MCPB import.","url":"https://github.com/OpenRootdev/vipermesh-blender/releases/tag/v1.3.0","label":"Release, checksums and alternatives"}, - {"title":"Load the agent skill and start a session","body":"Read the skill plus its five relative reference files from the linked source folder. Copy the whole folder to your agent's documented skill location if desired. Have the agent bootstrap, inspect the existing scene and discover relevant operations before editing.","url":"https://github.com/OpenRootdev/vipermesh-blender/tree/main/skills/using-vipermesh-blender","label":"Skill and reference folder","command":"bootstrap_vipermesh_session\nget_blender_agent_context\nlist_blender_tools"} + "schema_version": 1, + "id": "vipermesh-blender", + "name": "ViperMesh for Blender", + "summary": "A local Blender MCP workflow for building and checking 3D scenes.", + "category": "3D & Blender", + "repository": "https://github.com/OpenRootdev/vipermesh-blender", + "license": "MIT; preserve NOTICE.md attribution", + "version": "1.3.0", + "distribution": { + "kind": "package", + "url": "https://github.com/OpenRootdev/vipermesh-blender/releases/download/v1.3.0/vipermesh-blender-1.3.0.mcpb", + "label": "Download MCP bundle", + "scope": "Focused MCPB server bundle. Install the separate Blender addon and optional source skill; the full mixed repository is not needed.", + "repository_has_extra_material": true + }, + "installation": [ + { + "title": "Install and enable the Blender addon", + "body": "Download the addon from the release. In Blender, open Edit → Preferences → Add-ons → Install from Disk, select the downloaded Python addon file and enable ViperMesh for Blender. The maintainer currently tests Blender 5.2.", + "url": "https://github.com/OpenRootdev/vipermesh-blender/releases/download/v1.3.0/vipermesh-for-blender-addon-v1.3.0.py", + "label": "Download Blender addon" + }, + { + "title": "Connect your MCP client", + "body": "Install Node.js 20+. Import the MCPB bundle into a client supporting local MCPB extensions. Keep the Blender viewport sidebar's ViperMesh Local Bridge running. Source-build/stdio configuration is documented in the repository for clients without MCPB import.", + "url": "https://github.com/OpenRootdev/vipermesh-blender/releases/tag/v1.3.0", + "label": "Release, checksums and alternatives" + }, + { + "title": "Load the agent skill and start a session", + "body": "Read the skill plus its five relative reference files from the linked source folder. Copy the whole folder to your agent's documented skill location if desired. Have the agent bootstrap, inspect the existing scene and discover relevant operations before editing.", + "url": "https://github.com/OpenRootdev/vipermesh-blender/tree/main/skills/using-vipermesh-blender", + "label": "Skill and reference folder", + "command": "bootstrap_vipermesh_session\nget_blender_agent_context\nlist_blender_tools" + } ], - "manual_setup":["A local Blender session, enabled addon, and running Local Bridge are required. This is a local workstation connector, not a hosted Blender service.","MCP client needs stdio support; MCPB import is optional. The client should manage one persistent Node server process per agent session.","The addon listens on loopback 127.0.0.1:9876. The connector can change scene state and exposes code execution; use it with trusted agents and approved output paths."], - "notes":["Existing repository and release assets are listed unchanged. Nine top-level MCP tools route to a larger Blender operation registry; nine is not the total number of Blender operations.","The public connector and guidance are distinct from private studio capabilities and benchmark traces. Those are not included in this package.","Retain the source license and NOTICE.md when redistributing. Consult the upstream README for current supported Blender versions."], - "contents":{"skills":1,"references":5,"mcp_tools":9,"tools":["ViperMesh MCP server","Blender addon / Local Bridge","Node.js 20+"]}, - "documentation":"https://github.com/OpenRootdev/vipermesh-blender#readme" + "manual_setup": [ + "A local Blender session, enabled addon, and running Local Bridge are required. This is a local workstation connector, not a hosted Blender service.", + "MCP client needs stdio support; MCPB import is optional. The client should manage one persistent Node server process per agent session.", + "The addon listens on loopback 127.0.0.1:9876. The connector can change scene state and exposes code execution; use it with trusted agents and approved output paths." + ], + "notes": [ + "Existing repository and release assets are listed unchanged. Nine top-level MCP tools route to a larger Blender operation registry; nine is not the total number of Blender operations.", + "The public connector and guidance are distinct from private studio capabilities and benchmark traces. Those are not included in this package.", + "Retain the source license and NOTICE.md when redistributing. Consult the upstream README for current supported Blender versions." + ], + "contents": { + "skills": 1, + "references": 5, + "mcp_tools": 9, + "tools": [ + "ViperMesh MCP server", + "Blender addon / Local Bridge", + "Node.js 20+" + ] + }, + "documentation": "https://github.com/OpenRootdev/vipermesh-blender#readme", + "type": "MCP server", + "image": { + "url": "assets/logos/vipermesh.png", + "alt": "ViperMesh logo", + "source": "https://github.com/OpenRootdev/vipermesh-blender/blob/main/site/assets/brand-mark.png" + } } diff --git a/deploy/cloudrun/Dockerfile b/deploy/cloudrun/Dockerfile new file mode 100644 index 0000000..ded4d98 --- /dev/null +++ b/deploy/cloudrun/Dockerfile @@ -0,0 +1,4 @@ +FROM nginx/nginx-unprivileged@sha256:969ccb55136a85056874e579908584bc0a39217a72ebf819a4ef4f44a62c9dda +COPY nginx.conf /etc/nginx/conf.d/default.conf +COPY public/ /usr/share/nginx/html/ +EXPOSE 8080 diff --git a/deploy/cloudrun/nginx.conf b/deploy/cloudrun/nginx.conf new file mode 100644 index 0000000..a990b4a --- /dev/null +++ b/deploy/cloudrun/nginx.conf @@ -0,0 +1,35 @@ +server { + listen 8080; + server_name _; + root /usr/share/nginx/html; + index index.html; + server_tokens off; + absolute_redirect off; + port_in_redirect off; + + add_header X-Content-Type-Options nosniff always; + add_header Referrer-Policy strict-origin-when-cross-origin always; + + location = /healthz { + access_log off; + default_type text/plain; + return 200 "ok\n"; + } + + # Published asset names are not content-hashed, so keep caching bounded. + location /assets/ { + add_header Cache-Control "public, max-age=3600"; + add_header X-Content-Type-Options nosniff always; + try_files $uri =404; + } + + location / { + add_header Cache-Control "public, max-age=0, s-maxage=300, must-revalidate"; + add_header X-Content-Type-Options nosniff always; + add_header Referrer-Policy strict-origin-when-cross-origin always; + try_files $uri $uri/ =404; + } + + error_page 404 /404.html; + location = /404.html { internal; } +} diff --git a/docs/badge-program.md b/docs/badge-program.md index 8c4a7db..5945878 100644 --- a/docs/badge-program.md +++ b/docs/badge-program.md @@ -1,4 +1,4 @@ -# Listed in Harness Library: free 14-day community boost +# Listed in ToolIndex: free 14-day community boost The program rewards contributors for making reusable harnesses easier to discover. There is no payment and no requirement to use Harneloop. @@ -9,12 +9,12 @@ The program rewards contributors for making reusable harnesses easier to discove Example: ```md -[![Listed in Harness Library](https://openrootdev.github.io/harness-library/badges/your-slug.svg)](https://openrootdev.github.io/harness-library/harnesses/your-slug/) +[![Listed in ToolIndex](https://toolindex.org/badges/your-slug.svg)](https://toolindex.org/tools/your-slug/) ``` -Exact Markdown or an equivalent linked HTML image is supported. The image alt text must be “Listed in Harness Library”. Examples inside code fences or HTML comments do not qualify. +Exact Markdown or an equivalent linked HTML image is supported. The image alt text must be “Listed in ToolIndex”. Examples inside code fences or HTML comments do not qualify. -Previously issued `https://openrootdev.github.io/harness-library/#your-slug` backlinks still qualify and navigate to the corresponding page. Use the real page URL for new badges. +Previously issued `https://toolindex.org/#your-slug` backlinks still qualify and navigate to the corresponding page. Use the real page URL for new badges. Active listings appear before regular listings, then alphabetically within each group. Search and category filters still apply. The directory shows a **Community boost** label and its expiry on the detail page. This is promotional placement; review status and quality claims remain independent. @@ -24,4 +24,8 @@ If GitHub is temporarily unavailable, no new boost is awarded. Existing checked The badge can stay after expiry. A new policy would be discussed publicly; there is no hidden recurring promotion or paid ranking. -Badges issued before the Kaelux Labs migration at `https://ker102.github.io/harness-library/` still qualify. Migration does not restart the original 14-day window. Update both the image and backlink to the new canonical address when convenient. +Badges issued before the Kaelux Labs migration at `https://toolindex.org/` still qualify. Migration does not restart the original 14-day window. Update both the image and backlink to the new canonical address when convenient. + +ToolIndex includes any tool AI agents can use: skills, MCP servers, CLIs, APIs, libraries, plugins, workflows and harnesses. Hosted and commercial tools are welcome when access, pricing, authentication and terms are clear. Every listing links directly to its source repository or official documentation. + +A logo or custom image is optional. Supply its source and alt text if available; otherwise the listing uses neutral initials. Choose a tool type and explain installation or service access. Non-GitHub sources are accepted; automatic README badge checks currently support GitHub only. diff --git a/docs/discovery.md b/docs/discovery.md index 0035b51..83dc981 100644 --- a/docs/discovery.md +++ b/docs/discovery.md @@ -1,51 +1,34 @@ -# Discovery and indexing +# Discovery and deployment -Current home since `2026-10-20`: [OpenRootdev/harness-library](https://github.com/OpenRootdev/harness-library) and the [directory](https://openrootdev.github.io/harness-library/). Earlier migration notes below describe the previous move. - -The public directory publishes complete HTML at stable URLs. Search engines, browsers with JavaScript disabled and agents can read every approved harness's installation, prerequisites, source, distribution and review scope directly. JavaScript only enhances filtering, copying and legacy hash navigation. +ToolIndex publishes complete HTML, Markdown mirrors and a reviewed JSON catalog. Search engines and agents can read installation or access instructions, source links, licenses and review scope without JavaScript. ## Public resources -- [Directory](https://openrootdev.github.io/harness-library/) and [submission guide](https://openrootdev.github.io/harness-library/submit/). -- [Sitemap](https://openrootdev.github.io/harness-library/sitemap.xml): canonical HTML pages only. Daily badge checks do not manufacture content modification dates. -- [llms.txt](https://openrootdev.github.io/harness-library/llms.txt): a compact guide linking to Markdown installation pages and data. -- [llms-full.txt](https://openrootdev.github.io/harness-library/llms-full.txt): combined public text. -- [catalog.json](https://openrootdev.github.io/harness-library/catalog.json): reviewed listings, canonical page URLs, installation, manual setup and scoped evidence. -- Each canonical HTML page has a corresponding `index.md`, linked with `rel="alternate" type="text/markdown"`. - -Every HTML page has a unique title, description and canonical URL, social preview metadata and matching JSON-LD. Structured data describes the real directory, maintainer and harnesses; it does not invent ratings, downloads or universal compatibility. Unknown paths return GitHub Pages' 404 status using the noindex error page. Old listing hash links remain supported. - -## Owner setup - -1. Add a **URL-prefix property** for `https://openrootdev.github.io/harness-library/` in [Google Search Console](https://search.google.com/search-console). This limits the property to the project. Use the verification method provided for your account; an HTML verification file can be placed in `site/` once its exact filename and contents are supplied. -2. Submit `sitemap.xml` in that property. Inspect the home, submission guide and harness URLs; request indexing where the tool offers it. A submission is a discovery hint, not an indexing promise. -3. Add the same site to [Bing Webmaster Tools](https://www.bing.com/webmasters/) and submit the sitemap. If the account offers import from Google Search Console, that can reuse the verified property. -4. Revisit indexing reports after deployment. Fix reported crawl or content issues based on evidence. Do not treat a `site:` search or a Lighthouse score as proof of index coverage or rankings. - -Verification requires the owner's account or its provided verification artifact. Do not publish guessed verification tokens. If an HTML verification file is added, keep it out of the sitemap and preserve it in builds. - -## Published-change notifications - -After a normal push deploys, the Pages workflow notifies [IndexNow](https://www.indexnow.org/documentation) with the canonical URLs from the built sitemap. Daily badge refreshes skip this notification. This migration changes all five pages; for a larger directory, narrow submissions to changed pages. Google uses Search Console and ordinary crawling; it is not being submitted through IndexNow. - -The project hosts `indexnow-key.txt` and supplies its exact `keyLocation`. This scopes ownership to `/harness-library/`, avoiding unrelated projects on the shared host. The key must be publicly served for protocol verification; it is not a webmaster account credential. No login, paid service or additional dependency is needed. A temporary API failure does not roll back a successful site deployment. - -For a deliberate content update outside the workflow, build first, then run `python scripts/notify_indexnow.py --dry-run` to inspect the URL list, or `python scripts/notify_indexnow.py` to submit it. HTTP 200 means received; HTTP 202 means received with key validation pending. Neither proves indexing or rankings. Avoid repeated submissions when content has not changed. +- [ToolIndex](https://toolindex.org/) +- [submit/](https://toolindex.org/submit/) +- [sitemap.xml](https://toolindex.org/sitemap.xml) +- [llms.txt](https://toolindex.org/llms.txt) +- [llms-full.txt](https://toolindex.org/llms-full.txt) +- [catalog.json](https://toolindex.org/catalog.json) -## GitHub Pages and robots.txt +## Google Cloud hosting -Robots rules are read from the **host root**, `https://openrootdev.github.io/robots.txt`, not from `/harness-library/robots.txt`. A project-local file cannot control crawling for the shared host. The project file only provides the current sitemap reference. Submit the sitemap through webmaster accounts. +Cloud Run serves the site in europe-west1 with minimum 0 instances, maximum 2 and request-based billing. Firebase Hosting provides custom-domain HTTPS and forwards to Cloud Run. Configure domain records using Firebase Hosting, not GitHub Pages. The staging helper builds and copies only public output and container configuration; use its printed path for PUBLIC_CONTEXT. Deployment requires authorized Google Cloud and Firebase CLI access. -If the owner later adds a root-site repository or a custom domain, check the authoritative robots file before deploying restrictions. Never change rules for other projects on the same host casually. +```sh +python scripts/stage_cloudrun.py +gcloud run deploy toolindex --source PUBLIC_CONTEXT --project toolindex-org --region europe-west1 --min 0 --max 2 --min-instances 0 --max-instances 2 --cpu-throttling --memory 512Mi --execution-environment gen2 --service-account toolindex-runtime@toolindex-org.iam.gserviceaccount.com --build-service-account projects/toolindex-org/serviceAccounts/toolindex-build@toolindex-org.iam.gserviceaccount.com --allow-unauthenticated +firebase deploy --only hosting --project toolindex-org +``` -## Organization migration +[Google Cloud](https://toolindex-org.web.app/) · [Firebase Hosting + Cloud Run](https://firebase.google.com/docs/hosting/cloud-run) -The repository and directory moved to [Kaelux Labs](https://github.com/OpenRootdev/harness-library) on October 10, 2026. GitHub redirects the old repository URL. A small [account Pages repository](https://github.com/Ker102/ker102.github.io) preserves the old directory pages with instant redirects and canonical links, and continues serving existing badge images. Its host-root `robots.txt` allows crawling and links to the current sitemap. +## Search engines -Existing badge backlinks using either the old or current directory URL remain eligible. Changing those links does not restart an existing 14-day boost; the original receipt dates remain authoritative. +Verify the toolindex.org URL-prefix property with the owner’s supplied artifact, then submit sitemap.xml in Search Console and Bing Webmaster Tools. Never invent verification tokens or treat submission as proof of indexing. The root robots.txt allows crawling. IndexNow notifications are optional and are sent only after the matching ownership file and pages are live. -## Agent discovery +[Search Console](https://search.google.com/search-console) · [Bing Webmaster Tools](https://www.bing.com/webmasters/) · [IndexNow](https://www.indexnow.org/documentation) -Agents can use ordinary HTML, the JSON catalog or Markdown mirrors. `llms.txt` is a convenience proposal, not a Google ranking factor or requirement. Google says its AI search features use the same foundational SEO practices as ordinary Search. Crawlable text, clear page links, accurate evidence and useful content matter; no configuration guarantees inclusion or citations. +## Compatibility and review -Primary references: [Google JavaScript SEO](https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics), [sitemaps](https://developers.google.com/search/docs/crawling-indexing/sitemaps/build-sitemap), [robots specification](https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec), [AI features](https://developers.google.com/search/docs/appearance/ai-features), [llms.txt proposal](https://llmstxt.org/). +Legacy /harnesses/ pages redirect to /tools/. Original badge URLs and labels remain recognized without resetting the one-time 14-day grant. GitHub redirects the former repository to OpenRootdev/toolindex. Review records remain scoped evidence. CI never executes submitted tool code or installs its dependencies. diff --git a/docs/i18n/README.md b/docs/i18n/README.md index 9930624..00fdb24 100644 --- a/docs/i18n/README.md +++ b/docs/i18n/README.md @@ -2,7 +2,7 @@ English documentation is authoritative. Translations are full equivalents of the maintained sources below, not summaries. The canonical repository is -[Kaelux-Labs/harness-library](https://github.com/OpenRootdev/harness-library). +[OpenRootdev/toolindex](https://github.com/OpenRootdev/toolindex). Translated paths follow `docs/i18n//`. ## Inventory and Coverage diff --git a/docs/i18n/de/CONTRIBUTING.md b/docs/i18n/de/CONTRIBUTING.md index efdcfa1..0d5b03b 100644 --- a/docs/i18n/de/CONTRIBUTING.md +++ b/docs/i18n/de/CONTRIBUTING.md @@ -1,14 +1,18 @@ # Einen Harness einreichen +ToolIndex umfasst alle Werkzeuge, die KI-Agenten nutzen können: Skills, MCP-Server, CLIs, APIs, Bibliotheken, Plugins, Workflows und Harnesses. Gehostete und kommerzielle Werkzeuge sind willkommen, wenn Zugang, Preise, Authentifizierung und Bedingungen klar sind. Jeder Eintrag verlinkt direkt auf das Quellrepository oder die offizielle Dokumentation. + +Ein Logo oder eigenes Bild ist optional. Falls vorhanden, bitte Quelle und Alternativtext angeben; sonst zeigt der Eintrag neutrale Initialen. Wähle einen Werkzeugtyp und beschreibe Installation oder Dienstzugang. Quellen außerhalb von GitHub sind erlaubt; automatische README-Badge-Prüfungen unterstützen derzeit nur GitHub. + **Neue Einreichungen sind willkommen.** Wir suchen praktische, wiederverwendbare Agent-Konfigurationen, auch kleine Skill-Ordner. Harneloop ist optional. Der einfachste Weg benötigt weder Fork noch Pull Request: -1. [Öffnen Sie das GitHub-Einreichungsformular](https://github.com/Ker102/harness-library/issues/new?template=submit-harness.yml). Teilen Sie Repository, Name und Aufgabe/Kategorie mit. +1. [Öffnen Sie das GitHub-Einreichungsformular](https://github.com/OpenRootdev/toolindex/issues/new?template=submit-tool.yml). Teilen Sie Repository, Name und Aufgabe/Kategorie mit. 2. Erklären Sie Installation, gezielte Distribution, Version/Lizenz und manuelle Verbindungen. Zusätzliche Angaben zur Zusammensetzung und Testnachweise sind optional. 3. Maintainer prüfen Ihr Issue, fragen dort bei Bedarf nach fehlenden Angaben und veröffentlichen genehmigte Einträge. Spätere Änderungen können in einem weiteren Issue oder PR eingereicht werden. -Für das Formular benötigen Sie nur ein GitHub-Konto. Der [Website-Leitfaden](https://ker102.github.io/harness-library/submit/) erklärt denselben Ablauf. +Für das Formular benötigen Sie nur ein GitHub-Konto. Der [Website-Leitfaden](https://toolindex.org/submit/) erklärt denselben Ablauf. Für einen PR kopieren Sie `docs/listing.example.json` nach `data/listings/your-slug.json`. Verwenden Sie denselben kleingeschriebenen Slug im Dateinamen und in `id`. Führen Sie `python scripts/catalog.py validate` und die im README beschriebenen Tests aus. diff --git a/docs/i18n/de/README.md b/docs/i18n/de/README.md index 8b38e3c..8c52ddf 100644 --- a/docs/i18n/de/README.md +++ b/docs/i18n/de/README.md @@ -1,54 +1,52 @@ -

Harness Library

-

Harness Library

-

English · Español · 简体中文 · Français · 日本語 · Deutsch · Português (Brasil)

-

Wiederverwendbare Agent-Harnesses entdecken, installieren und teilen.

-

Bibliothek durchsuchen · Harness einreichen · Einreichungsleitfaden

+

ToolIndex

+

ToolIndex

+

English · Español · 简体中文 · Français · 日本語 · Deutsch · Português (Brasil)

+

Werkzeuge für KI-Agenten. Klare Einrichtung. Direkte Quellenlinks.

+

toolindex.org · Ein Werkzeug einreichen

-Ein offenes Verzeichnis von Anweisungen, Skills, Werkzeugen und Workflows, die einem Agenten helfen, eine bestimmte Aufgabe gut zu erledigen. Ein Harness kann aus wenigen Dateien oder einer umfangreicheren Werkzeugkonfiguration bestehen. Jeder Eintrag erklärt die Installation, erforderliche manuelle Einstellungen und den benötigten Teil des Quellrepositorys. +ToolIndex ist ein offenes Verzeichnis für Skills, MCP-Server, CLIs, APIs, Bibliotheken, Plugins, Workflows und Harnesses, die KI-Agenten nutzen können. Lokale Pakete, gehostete Dienste und kommerzielle Werkzeuge sind willkommen, wenn Zugang, Preise und Bedingungen klar sind. -Die ersten Einträge sind [Smooth Motion Graphics](https://github.com/Ker102/smooth-motion-graphics) und [ViperMesh for Blender](https://github.com/OpenRootdev/vipermesh-blender). Das bestehende Repository und die Releases von ViperMesh werden unverändert aufgeführt. Harneloop ist optional; damit erstellte Harnesses können nach Prüfung einen entsprechenden Herkunftshinweis anzeigen. +## Welche Werkzeuge passen -## Einen Harness in Aktion sehen +Nützliche Werkzeuge für eine konkrete Aufgabe, vom kleinen Skill-Ordner bis zur Dienst-API. Jeder Eintrag verlinkt direkt zum Quellrepository oder zur offiziellen Dokumentation und erklärt Installation oder Verbindung, manuelle Einrichtung, Lizenz oder Bedingungen, Version und Prüfumfang. -Das Harneloop-Erklärvideo zeigt den Animationsstil hinter dem [Smooth Motion Graphics Harness](https://openrootdev.github.io/harness-library/harnesses/smooth-motion-graphics/) der Bibliothek: gut lesbare Szenen, geschwungene Verbindungen und ruhige Übergänge. Es erklärt außerdem, wie Harneloop Harness-Einheiten erstellt und verbessert. +## Ein Werkzeug einreichen -

Die lautlose Harneloop-Motion-Graphics-Demo ansehen

-

Vollständiges Video ansehen · 3:40 · Ohne Ton, mit Erklärungen im Bild

+1. Öffne das GitHub-Formular mit Name, Typ, Quelle und Zweck des Werkzeugs. +2. Beschreibe Paket oder Dienst, Installations- oder Zugangsschritte, Version, Lizenz oder Bedingungen, benötigte Zugangsdaten und Kosten. Keine Geheimnisse einreichen. +3. Ein Logo oder eigenes Bild ist optional. Gib gegebenenfalls URL, Quelle und Alternativtext an; sonst zeigt der Eintrag neutrale Initialen. +4. Die Verantwortlichen prüfen und veröffentlichen freigegebene Einträge. Fork, Pull Request oder ToolIndex-Konto sind nicht nötig; das Formular benötigt ein GitHub-Konto. -Das Video wird separat gehostet. Das eigene Installationspaket und den Beispielrenderer des Harness finden Sie über dessen Eintrag. +[CONTRIBUTING.md](CONTRIBUTING.md) · [JSON](../../../docs/listing.example.json) -## Einen Harness einreichen +## Geprüfte Beispiele -**Neue Einreichungen sind willkommen.** Wir suchen nützliche Harnesses für Programmierung, Recherche, Daten, kreative Arbeit, Blender und Betrieb. Wenige Skills können ausreichen; Harneloop ist nicht erforderlich. +Ein Skill für Markenanimationen und ein Blender-MCP-Connector zeigen zwei mögliche Werkzeugtypen. Quellcode und Releases bleiben in den eigenen Repositories. -1. [Öffnen Sie das kurze GitHub-Einreichungsformular](https://github.com/OpenRootdev/harness-library/issues/new?template=submit-harness.yml) und nennen Sie Ihr Repository sowie die Aufgabe, bei der es einem Agenten hilft. -2. Ergänzen Sie klare Installationsschritte, Kategorie, Lizenz, Versions- und Distributionsumfang sowie alle manuellen Einstellungen. Komponentenzahlen und Testnachweise sind optional. -3. Ein Maintainer prüft die Einrichtung, fragt bei Bedarf in Ihrem Issue nach und veröffentlicht genehmigte Einträge. +- [Smooth Motion Graphics](https://toolindex.org/tools/smooth-motion-graphics/) +- [ViperMesh for Blender](https://toolindex.org/tools/vipermesh-blender/) -**Weder Fork noch Pull Request noch Harness-Library-Konto sind nötig.** Für das Formular ist ein GitHub-Konto erforderlich. Alternativ können Sie einen PR einreichen, der eine JSON-Datei in `data/listings/` ergänzt. Siehe [öffentlicher Einreichungsleitfaden](https://openrootdev.github.io/harness-library/submit/), [CONTRIBUTING.md](CONTRIBUTING.md) und [Vorlage](../../../docs/listing.example.json). +## Bauen und Vorschau -Ein Repository mit gemischten Inhalten muss ein gezieltes Paket oder einen eigenen Harness-Branch anbieten. Einreichende legen keine Verifizierungs- oder Werbelabel fest. Maintainer prüfen Einrichtung, Umfang und etwaige Nachweise vor der Veröffentlichung. „Artifacts checked“ bedeutet, dass die dokumentierten Artefakte geprüft wurden; es bedeutet nicht, dass alle Modelle, Plattformen oder Anwendungsfälle funktionieren. - -## Kostenloses Badge-Programm - -Fügen Sie das exakte Badge „Listed in Harness Library“ mit Rücklink zum Eintrag innerhalb der ersten 30 Zeilen Ihres Quell-README ein. Nach Verifizierung erhält Ihr Eintrag **einen einmaligen Community-Boost von 14 Tagen**, im Verzeichnis klar gekennzeichnet. Ein Boost beeinflusst die Reihenfolge, nicht den Prüfstatus. Er ist kostenlos, optional und läuft automatisch ab. Entfernen und erneutes Einfügen des Badges startet ihn nicht neu. [Richtlinie und Verifizierung](docs/badge-program.md). - -## Entwicklung - -Es sind weder Frontend-Abhängigkeiten noch ein Backend-Dienst nötig. Python 3.11+ führt Validator und Builder aus; die Oberfläche besteht aus einfachem HTML, CSS und JavaScript. +Python 3.11+ erstellt die statische Website. Das Frontend nutzt HTML, CSS und JavaScript; die Suche ergänzt Seiten, die auch ohne JavaScript lesbar bleiben. ```sh python scripts/catalog.py validate python -m unittest discover -s tests -v python scripts/catalog.py build -python -c "import shutil; shutil.copytree('dist', '.preview/harness-library', dirs_exist_ok=True)" -python -m http.server 4201 --directory .preview +python -m http.server 4201 --directory dist ``` -Öffnen Sie `http://localhost:4201/harness-library/`. Die Vorschaukopie bedient den Produktionsbasispfad korrekt; aktualisieren Sie sie nach einem erneuten Build. Asset- und Navigationspfade entsprechen bewusst der GitHub-Pages-Projekt-URL. +`http://localhost:4201/` + +## Google-Cloud-Hosting + +Cloud Run betreibt die Website mit mindestens 0 und höchstens 2 Instanzen sowie anfragebasierter Abrechnung. Firebase Hosting übernimmt HTTPS für die Domain und leitet Anfragen weiter. Das Staging-Skript schließt private Workspace-Dateien aus. Die Domainaktivierung hängt von DNS- und Zertifikatsprüfung ab. + +`python scripts/stage_cloudrun.py` · [`firebase.json`](../../../firebase.json) · [docs/discovery.md](docs/discovery.md) -`site/layout.html`, `site/style.css` und `scripts/publishing.py` erzeugen vollständige HTML-Seiten für das Verzeichnis, jeden Harness, den Einreichungsleitfaden und die Informationsseite. JavaScript ergänzt schrittweise Suche, Filter und Kopieren; Installationsinhalte und Navigation bleiben ohne JavaScript nutzbar. Builds veröffentlichen außerdem eine Sitemap, Markdown-Spiegel der Seiten, `llms.txt` und den geprüften JSON-Katalog. Siehe [Auffindbarkeit und Indexierung](docs/discovery.md) für die Einrichtung durch den Eigentümer und Crawl-Details. +## Prüfungen und Community-Badges -`python scripts/catalog.py refresh` verifiziert freiwillig eingebundene Badges durch Lesen öffentlicher GitHub-README-Inhalte. Eingereichter Code wird niemals ausgeführt. GitHub Pages veröffentlicht den geprüften main-Branch; ein täglicher Workflow aktualisiert Badge-Nachweise und führt den Build erneut aus. Prüfungen externer PRs besitzen nur Leserechte. +Einrichtungs- und Artefaktprüfungen beschreiben konkrete Nachweise, keine universelle Kompatibilität. Ein optionales Badge ermöglicht einen transparenten Community-Boost für 14 Tage. Harneloop-Attribution ist optional; kein Framework ist vorgeschrieben. -Quelldaten und Prüfnachweise liegen in diesem Repository. Harness-Quellcode und Release-Assets liegen in den jeweiligen eigenen Repositorys. Mit dem Harneloop-Framework werden keine Harness-Videos, Abhängigkeiten oder privaten Entwicklungsaufzeichnungen installiert. +[docs/badge-program.md](docs/badge-program.md) diff --git a/docs/i18n/de/docs/badge-program.md b/docs/i18n/de/docs/badge-program.md index 048d218..66b25eb 100644 --- a/docs/i18n/de/docs/badge-program.md +++ b/docs/i18n/de/docs/badge-program.md @@ -1,4 +1,4 @@ -# Listed in Harness Library: kostenloser Community-Boost von 14 Tagen +# Listed in ToolIndex: kostenloser Community-Boost von 14 Tagen Das Programm belohnt Mitwirkende dafür, wiederverwendbare Harnesses leichter auffindbar zu machen. Es gibt keine Zahlung und keine Pflicht, Harneloop zu verwenden. @@ -9,12 +9,12 @@ Das Programm belohnt Mitwirkende dafür, wiederverwendbare Harnesses leichter au Beispiel: ```md -[![Listed in Harness Library](https://openrootdev.github.io/harness-library/badges/your-slug.svg)](https://openrootdev.github.io/harness-library/harnesses/your-slug/) +[![Listed in ToolIndex](https://toolindex.org/badges/your-slug.svg)](https://toolindex.org/tools/your-slug/) ``` -Exaktes Markdown oder ein gleichwertiges verlinktes HTML-Bild wird unterstützt. Der Alternativtext des Bildes muss „Listed in Harness Library“ sein. Beispiele in Code-Fences oder HTML-Kommentaren zählen nicht. +Exaktes Markdown oder ein gleichwertiges verlinktes HTML-Bild wird unterstützt. Der Alternativtext des Bildes muss „Listed in ToolIndex“ sein. Beispiele in Code-Fences oder HTML-Kommentaren zählen nicht. -Früher ausgegebene Rücklinks `https://openrootdev.github.io/harness-library/#your-slug` bleiben berechtigt und führen zur entsprechenden Seite. Nutzen Sie für neue Badges die echte Seiten-URL. +Früher ausgegebene Rücklinks `https://toolindex.org/#your-slug` bleiben berechtigt und führen zur entsprechenden Seite. Nutzen Sie für neue Badges die echte Seiten-URL. Aktive Einträge erscheinen vor regulären Einträgen; innerhalb beider Gruppen wird alphabetisch sortiert. Suche und Kategoriefilter gelten weiterhin. Das Verzeichnis zeigt auf der Detailseite ein **Community boost**-Label und dessen Ablaufdatum. Dies ist eine Werbeplatzierung; Prüfstatus und Qualitätsaussagen bleiben unabhängig. @@ -24,4 +24,8 @@ Ist GitHub vorübergehend nicht verfügbar, wird kein neuer Boost vergeben. Bere Das Badge kann nach Ablauf bleiben. Eine neue Richtlinie würde öffentlich diskutiert; es gibt keine versteckte wiederkehrende Werbung oder bezahlte Rangfolge. -Vor der Kaelux-Labs-Migration unter `https://ker102.github.io/harness-library/` ausgegebene Badges bleiben berechtigt. Die Migration startet das ursprüngliche 14-Tage-Fenster nicht neu. Aktualisieren Sie Bild und Rücklink bei Gelegenheit auf die neue kanonische Adresse. +Vor der Kaelux-Labs-Migration unter `https://toolindex.org/` ausgegebene Badges bleiben berechtigt. Die Migration startet das ursprüngliche 14-Tage-Fenster nicht neu. Aktualisieren Sie Bild und Rücklink bei Gelegenheit auf die neue kanonische Adresse. + +ToolIndex umfasst alle Werkzeuge, die KI-Agenten nutzen können: Skills, MCP-Server, CLIs, APIs, Bibliotheken, Plugins, Workflows und Harnesses. Gehostete und kommerzielle Werkzeuge sind willkommen, wenn Zugang, Preise, Authentifizierung und Bedingungen klar sind. Jeder Eintrag verlinkt direkt auf das Quellrepository oder die offizielle Dokumentation. + +Ein Logo oder eigenes Bild ist optional. Falls vorhanden, bitte Quelle und Alternativtext angeben; sonst zeigt der Eintrag neutrale Initialen. Wähle einen Werkzeugtyp und beschreibe Installation oder Dienstzugang. Quellen außerhalb von GitHub sind erlaubt; automatische README-Badge-Prüfungen unterstützen derzeit nur GitHub. diff --git a/docs/i18n/de/docs/discovery.md b/docs/i18n/de/docs/discovery.md index a639802..5d7142e 100644 --- a/docs/i18n/de/docs/discovery.md +++ b/docs/i18n/de/docs/discovery.md @@ -1,51 +1,34 @@ -# Auffindbarkeit und Indexierung +# Auffindbarkeit und Bereitstellung -Aktueller Standort seit `2026-10-20`: [OpenRootdev/harness-library](https://github.com/OpenRootdev/harness-library) und das [Verzeichnis](https://openrootdev.github.io/harness-library/). Die historischen Hinweise unten beschreiben den vorherigen Umzug. - -Das öffentliche Verzeichnis veröffentlicht vollständiges HTML unter stabilen URLs. Suchmaschinen, Browser ohne JavaScript und Agenten können Installation, Voraussetzungen, Quelle, Distribution und Prüfumfang jedes genehmigten Harness direkt lesen. JavaScript verbessert nur Filterung, Kopieren und die frühere Hash-Navigation. +ToolIndex veröffentlicht vollständiges HTML, Markdown-Spiegel und einen geprüften JSON-Katalog. Suchmaschinen und Agenten lesen Installation oder Zugang, Quellen, Lizenzen und Prüfumfang ohne JavaScript. ## Öffentliche Ressourcen -- [Verzeichnis](https://openrootdev.github.io/harness-library/) und [Einreichungsleitfaden](https://openrootdev.github.io/harness-library/submit/). -- [Sitemap](https://openrootdev.github.io/harness-library/sitemap.xml): nur kanonische HTML-Seiten. Tägliche Badge-Prüfungen erfinden keine Änderungsdaten für Inhalte. -- [llms.txt](https://openrootdev.github.io/harness-library/llms.txt): ein kompakter Wegweiser zu Markdown-Installationsseiten und Daten. -- [llms-full.txt](https://openrootdev.github.io/harness-library/llms-full.txt): zusammengefasster öffentlicher Text. -- [catalog.json](https://openrootdev.github.io/harness-library/catalog.json): geprüfte Einträge, kanonische Seiten-URLs, Installation, manuelle Einrichtung und Belege mit definiertem Umfang. -- Jede kanonische HTML-Seite hat ein entsprechendes `index.md`, verlinkt mit `rel="alternate" type="text/markdown"`. - -Jede HTML-Seite besitzt einen eindeutigen Titel, eine Beschreibung und eine kanonische URL, Metadaten für soziale Vorschauen und passendes JSON-LD. Strukturierte Daten beschreiben das tatsächliche Verzeichnis, den Maintainer und die Harnesses; sie erfinden keine Bewertungen, Downloads oder universelle Kompatibilität. Unbekannte Pfade liefern den GitHub-Pages-Status 404 über die noindex-Fehlerseite. Alte Hash-Links für Einträge werden weiterhin unterstützt. - -## Einrichtung durch den Eigentümer - -1. Fügen Sie in [Google Search Console](https://search.google.com/search-console) eine **URL-Präfix-Property** für `https://openrootdev.github.io/harness-library/` hinzu. Das begrenzt die Property auf das Projekt. Nutzen Sie die für Ihr Konto angebotene Verifizierungsmethode; eine HTML-Verifizierungsdatei kann in `site/` abgelegt werden, sobald ihr exakter Dateiname und Inhalt vorliegen. -2. Reichen Sie `sitemap.xml` in dieser Property ein. Prüfen Sie Startseite, Einreichungsleitfaden und Harness-URLs; beantragen Sie Indexierung, wenn das Werkzeug sie anbietet. Eine Einreichung ist ein Hinweis zur Entdeckung, keine Indexierungsgarantie. -3. Fügen Sie dieselbe Website in [Bing Webmaster Tools](https://www.bing.com/webmasters/) hinzu und reichen Sie die Sitemap ein. Falls das Konto Import aus Google Search Console anbietet, kann die verifizierte Property wiederverwendet werden. -4. Sehen Sie die Indexierungsberichte nach dem Deployment erneut durch. Beheben Sie gemeldete Crawl- oder Inhaltsprobleme anhand von Belegen. Betrachten Sie weder eine `site:`-Suche noch einen Lighthouse-Wert als Beweis für Indexierungsabdeckung oder Rankings. - -Die Verifizierung benötigt das Konto des Eigentümers oder dessen bereitgestelltes Verifizierungsartefakt. Veröffentlichen Sie keine geratenen Verifizierungstokens. Eine ergänzte HTML-Verifizierungsdatei muss außerhalb der Sitemap bleiben und in Builds erhalten werden. - -## Benachrichtigungen über veröffentlichte Änderungen - -Nach dem Deployment eines normalen Pushs benachrichtigt der Pages-Workflow [IndexNow](https://www.indexnow.org/documentation) mit den kanonischen URLs aus der erzeugten Sitemap. Tägliche Badge-Aktualisierungen überspringen diese Benachrichtigung. Diese Migration ändert alle fünf Seiten; begrenzen Sie Einreichungen bei einem größeren Verzeichnis auf geänderte Seiten. Google nutzt Search Console und normales Crawling; es erfolgt keine Einreichung bei Google über IndexNow. - -Das Projekt hostet `indexnow-key.txt` und gibt dessen exakten `keyLocation` an. Damit wird die Eigentümerschaft auf `/harness-library/` begrenzt, ohne andere Projekte auf dem gemeinsamen Host einzubeziehen. Der Schlüssel muss zur Protokollverifizierung öffentlich ausgeliefert werden; er ist keine Zugangsinformation zu einem Webmaster-Konto. Login, kostenpflichtiger Dienst oder zusätzliche Abhängigkeit sind nicht erforderlich. Ein vorübergehender API-Fehler macht ein erfolgreiches Website-Deployment nicht rückgängig. - -Für eine bewusste Inhaltsänderung außerhalb des Workflows führen Sie zuerst den Build aus und dann `python scripts/notify_indexnow.py --dry-run`, um die URL-Liste zu prüfen, oder `python scripts/notify_indexnow.py`, um sie einzureichen. HTTP 200 bedeutet empfangen; HTTP 202 bedeutet empfangen bei noch ausstehender Schlüsselprüfung. Keiner der beiden Status beweist Indexierung oder Rankings. Vermeiden Sie wiederholte Einreichungen bei unveränderten Inhalten. +- [ToolIndex](https://toolindex.org/) +- [submit/](https://toolindex.org/submit/) +- [sitemap.xml](https://toolindex.org/sitemap.xml) +- [llms.txt](https://toolindex.org/llms.txt) +- [llms-full.txt](https://toolindex.org/llms-full.txt) +- [catalog.json](https://toolindex.org/catalog.json) -## GitHub Pages und robots.txt +## Google-Cloud-Hosting -Robots-Regeln werden im **Host-Stammverzeichnis** unter `https://openrootdev.github.io/robots.txt` gelesen, nicht unter `/harness-library/robots.txt`. Eine projektlokale Datei steuert das Crawling des gemeinsamen Hosts nicht. Die Projektdatei verweist nur auf die aktuelle Sitemap. Reichen Sie die Sitemap über Webmaster-Konten ein. +Cloud Run betreibt die Website in europe-west1 mit mindestens 0 und höchstens 2 Instanzen und anfragebasierter Abrechnung. Firebase Hosting übernimmt HTTPS und die Weiterleitung. DNS wird mit Firebase Hosting eingerichtet, nicht mit GitHub Pages. Das Staging-Skript kopiert nur öffentliche Ausgabe und Containerkonfiguration; verwende den ausgegebenen Pfad für PUBLIC_CONTEXT. Die Bereitstellung erfordert autorisierten Zugriff auf Google Cloud und Firebase CLI. -Fügt der Eigentümer später ein Root-Site-Repository oder eine eigene Domain hinzu, prüfen Sie die maßgebliche Robots-Datei vor der Einführung von Einschränkungen. Ändern Sie Regeln anderer Projekte auf demselben Host niemals leichtfertig. +```sh +python scripts/stage_cloudrun.py +gcloud run deploy toolindex --source PUBLIC_CONTEXT --project toolindex-org --region europe-west1 --min 0 --max 2 --min-instances 0 --max-instances 2 --cpu-throttling --memory 512Mi --execution-environment gen2 --service-account toolindex-runtime@toolindex-org.iam.gserviceaccount.com --build-service-account projects/toolindex-org/serviceAccounts/toolindex-build@toolindex-org.iam.gserviceaccount.com --allow-unauthenticated +firebase deploy --only hosting --project toolindex-org +``` -## Migration zur Organisation +[Google Cloud](https://toolindex-org.web.app/) · [Firebase Hosting + Cloud Run](https://firebase.google.com/docs/hosting/cloud-run) -Repository und Verzeichnis wurden am 10. Oktober 2026 zu [Kaelux Labs](https://github.com/OpenRootdev/harness-library) verschoben. GitHub leitet die alte Repository-URL um. Ein kleines [Pages-Repository des Kontos](https://github.com/Ker102/ker102.github.io) erhält die alten Verzeichnisseiten mit sofortigen Weiterleitungen und kanonischen Links und liefert bestehende Badge-Bilder weiter aus. Seine `robots.txt` an der Host-Wurzel erlaubt Crawling und verlinkt die aktuelle Sitemap. +## Suchmaschinen -Bestehende Badge-Rücklinks mit alter oder aktueller Verzeichnis-URL bleiben berechtigt. Eine Änderung dieser Links startet einen bestehenden 14-Tage-Boost nicht neu; die ursprünglichen Nachweisdaten bleiben maßgeblich. +Bestätige die URL-Präfix-Property toolindex.org mit dem vom Eigentümer bereitgestellten Nachweis und reiche sitemap.xml in Search Console und Bing Webmaster Tools ein. Keine Tokens erfinden oder Einreichung als Indexierungsnachweis behandeln. Die robots.txt im Stammverzeichnis erlaubt Crawling. Optionale IndexNow-Meldungen werden erst nach Veröffentlichung der passenden Eigentumsdatei und Seiten gesendet. -## Auffindbarkeit für Agenten +[Search Console](https://search.google.com/search-console) · [Bing Webmaster Tools](https://www.bing.com/webmasters/) · [IndexNow](https://www.indexnow.org/documentation) -Agenten können gewöhnliches HTML, den JSON-Katalog oder Markdown-Spiegel nutzen. `llms.txt` ist ein Vorschlag zur Vereinfachung, kein Google-Rankingfaktor oder Erfordernis. Google erklärt, dass seine KI-Suchfunktionen dieselben grundlegenden SEO-Praktiken wie gewöhnliche Suche nutzen. Crawlbarer Text, klare Seitenlinks, genaue Belege und nützliche Inhalte sind wichtig; keine Konfiguration garantiert Aufnahme oder Zitate. +## Kompatibilität und Prüfung -Primärquellen: [Google JavaScript SEO](https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics), [Sitemaps](https://developers.google.com/search/docs/crawling-indexing/sitemaps/build-sitemap), [Robots-Spezifikation](https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec), [KI-Funktionen](https://developers.google.com/search/docs/appearance/ai-features), [llms.txt-Vorschlag](https://llmstxt.org/). +Alte /harnesses/-Seiten leiten auf /tools/ weiter. Ursprüngliche Badge-URLs und Beschriftungen bleiben gültig, ohne den einmaligen 14-Tage-Boost zurückzusetzen. GitHub leitet das frühere Repository auf OpenRootdev/toolindex um. Prüfungen bleiben begrenzte Nachweise. CI führt eingereichten Werkzeugcode niemals aus und installiert keine seiner Abhängigkeiten. diff --git a/docs/i18n/es/CONTRIBUTING.md b/docs/i18n/es/CONTRIBUTING.md index b919c78..084e0c3 100644 --- a/docs/i18n/es/CONTRIBUTING.md +++ b/docs/i18n/es/CONTRIBUTING.md @@ -1,14 +1,18 @@ # Enviar un harness +ToolIndex incluye cualquier herramienta que puedan usar los agentes de IA: habilidades, servidores MCP, CLI, API, bibliotecas, complementos, flujos de trabajo y harnesses. Se aceptan servicios alojados y comerciales si explican acceso, precios, autenticación y condiciones. Cada ficha enlaza directamente al repositorio de origen o a la documentación oficial. + +El logotipo o la imagen personalizada son opcionales. Si se añaden, indica su origen y texto alternativo; en caso contrario se muestran iniciales neutras. Elige el tipo de herramienta y explica la instalación o el acceso al servicio. Se aceptan fuentes fuera de GitHub; la comprobación automática de insignias en README solo admite GitHub. + **Se aceptan nuevas propuestas.** Buscamos configuraciones prácticas y reutilizables para agentes, incluidas pequeñas carpetas de habilidades. Harneloop es opcional. La vía más sencilla no requiere un fork ni una pull request: -1. [Abre el formulario de envío de GitHub](https://github.com/Ker102/harness-library/issues/new?template=submit-harness.yml). Comparte el repositorio, el nombre y la tarea/categoría. +1. [Abre el formulario de envío de GitHub](https://github.com/OpenRootdev/toolindex/issues/new?template=submit-tool.yml). Comparte el repositorio, el nombre y la tarea/categoría. 2. Explica la instalación, la distribución específica, la versión/licencia y las conexiones manuales. Los detalles adicionales de composición y las pruebas de funcionamiento son opcionales. 3. Los mantenedores revisan tu issue, solicitan allí los datos que falten si es necesario y publican las entradas aprobadas. Los cambios posteriores pueden enviarse mediante otra issue o PR. -Solo necesitas una cuenta de GitHub para usar el formulario. La [guía del sitio web](https://ker102.github.io/harness-library/submit/) explica el mismo proceso. +Solo necesitas una cuenta de GitHub para usar el formulario. La [guía del sitio web](https://toolindex.org/submit/) explica el mismo proceso. Para una PR, copia `docs/listing.example.json` en `data/listings/your-slug.json`. Usa el mismo slug en minúsculas en el nombre del archivo y en `id`. Ejecuta `python scripts/catalog.py validate` y las pruebas descritas en el README. diff --git a/docs/i18n/es/README.md b/docs/i18n/es/README.md index b478bcb..6ce5f11 100644 --- a/docs/i18n/es/README.md +++ b/docs/i18n/es/README.md @@ -1,54 +1,52 @@ -

Harness Library

-

Harness Library

-

English · Español · 简体中文 · Français · 日本語 · Deutsch · Português (Brasil)

-

Descubre, instala y comparte harnesses reutilizables para agentes.

-

Explorar la biblioteca · Enviar un harness · Guía de envío

+

ToolIndex

+

ToolIndex

+

English · Español · 简体中文 · Français · 日本語 · Deutsch · Português (Brasil)

+

Herramientas para agentes de IA. Configuración clara. Enlaces directos al origen.

+

toolindex.org · Enviar una herramienta

-Un directorio abierto de instrucciones, habilidades, herramientas y flujos de trabajo que ayudan a un agente a realizar bien una tarea específica. Un harness puede constar de unos pocos archivos o de una configuración de herramientas más amplia. Cada ficha explica cómo instalarlo, qué configurar manualmente y qué parte del repositorio de origen necesitas. +ToolIndex es un directorio abierto de habilidades, servidores MCP, CLI, API, bibliotecas, complementos, flujos de trabajo y harnesses que pueden usar los agentes de IA. Se aceptan paquetes locales, servicios alojados y herramientas comerciales si explican acceso, precios y condiciones. -Las primeras entradas son [Smooth Motion Graphics](https://github.com/Ker102/smooth-motion-graphics) y [ViperMesh for Blender](https://github.com/OpenRootdev/vipermesh-blender). El repositorio existente y las versiones publicadas de ViperMesh se incluyen sin cambios. Harneloop es opcional; los harnesses creados con él pueden mostrar la atribución tras la revisión. +## Qué puedes compartir -## Ver un harness en acción +Herramientas útiles para una tarea concreta, desde una pequeña carpeta de habilidades hasta una API. Cada ficha enlaza directamente al repositorio de origen o a la documentación oficial y explica instalación o conexión, configuración manual, licencia o condiciones, versión y alcance de la revisión. -El vídeo explicativo de Harneloop muestra el estilo de animación del [harness Smooth Motion Graphics](https://openrootdev.github.io/harness-library/harnesses/smooth-motion-graphics/) de la biblioteca: escenas legibles, conexiones curvas y transiciones suaves. También explica cómo Harneloop construye y mejora unidades de harness. +## Enviar una herramienta -

Ver la demostración silenciosa de gráficos en movimiento de Harneloop

-

Ver el vídeo completo · 3:40 · Sin sonido, con explicaciones en pantalla

+1. Abre el formulario de GitHub con el nombre, tipo, origen y propósito. +2. Describe el paquete o servicio, instalación o acceso, versión, licencia o condiciones, credenciales necesarias y costes. Nunca envíes secretos. +3. El logotipo o una imagen personalizada son opcionales. Si se añaden, indica URL, origen y texto alternativo; en caso contrario se muestran iniciales neutras. +4. Los responsables revisan y publican las propuestas aprobadas. No hacen falta fork, pull request ni cuenta de ToolIndex; el formulario requiere una cuenta de GitHub. -El vídeo se aloja por separado. Consulta el paquete de instalación del propio harness y su renderizador de ejemplo desde su ficha. +[CONTRIBUTING.md](CONTRIBUTING.md) · [JSON](../../../docs/listing.example.json) -## Enviar un harness +## Ejemplos revisados -**Se aceptan nuevas propuestas.** Buscamos harnesses útiles para programación, investigación, datos, trabajo creativo, Blender y operaciones. Unas pocas habilidades pueden bastar; no es necesario usar Harneloop. +Una habilidad de animación de marca y un conector MCP para Blender muestran dos tipos compatibles. Su código y sus versiones siguen en sus propios repositorios. -1. [Abre el breve formulario de envío de GitHub](https://github.com/OpenRootdev/harness-library/issues/new?template=submit-harness.yml) e indica tu repositorio y la tarea que ayuda a realizar al agente. -2. Añade pasos de instalación claros, categoría, licencia, alcance de versión/distribución y cualquier configuración manual. Los recuentos de componentes y las pruebas de funcionamiento son opcionales. -3. Un mantenedor revisa la configuración, hace seguimiento en tu issue si es necesario y publica las entradas aprobadas. +- [Smooth Motion Graphics](https://toolindex.org/tools/smooth-motion-graphics/) +- [ViperMesh for Blender](https://toolindex.org/tools/vipermesh-blender/) -**No necesitas un fork, una pull request ni una cuenta de Harness Library.** El formulario requiere una cuenta de GitHub. También puedes enviar una PR que añada un archivo JSON a `data/listings/`. Consulta la [guía pública de envío](https://openrootdev.github.io/harness-library/submit/), [CONTRIBUTING.md](CONTRIBUTING.md) y [la plantilla](../../../docs/listing.example.json). +## Compilar y previsualizar -Un repositorio mixto debe ofrecer un paquete específico o una rama dedicada al harness. Quienes envían propuestas no establecen etiquetas de verificación ni de promoción. Los mantenedores revisan la configuración, el alcance y las pruebas disponibles antes de publicar la ficha. «Artifacts checked» significa que se inspeccionaron los artefactos documentados; no implica que funcione con todos los modelos, plataformas o casos de uso. - -## Programa gratuito de insignias - -Añade la insignia exacta «Listed in Harness Library» y el enlace de vuelta a la ficha dentro de las primeras 30 líneas del README de origen. Tras la verificación, tu ficha recibe **un único impulso comunitario de 14 días**, claramente identificado en el directorio. El impulso afecta al orden, no al estado de revisión. Es gratuito, opcional y caduca automáticamente. Quitar y volver a añadir la insignia no lo reinicia. [Política y verificación](docs/badge-program.md). - -## Desarrollo - -No se necesitan dependencias de frontend ni un servicio backend. Python 3.11+ ejecuta el validador y el generador; la interfaz usa HTML, CSS y JavaScript sin frameworks. +Python 3.11+ genera el sitio estático. La interfaz usa HTML, CSS y JavaScript; la búsqueda mejora páginas que siguen siendo legibles sin JavaScript. ```sh python scripts/catalog.py validate python -m unittest discover -s tests -v python scripts/catalog.py build -python -c "import shutil; shutil.copytree('dist', '.preview/harness-library', dirs_exist_ok=True)" -python -m http.server 4201 --directory .preview +python -m http.server 4201 --directory dist ``` -Abre `http://localhost:4201/harness-library/`. La copia de vista previa sirve correctamente la ruta base de producción; actualízala después de volver a generar el sitio. Las rutas de recursos y navegación coinciden intencionadamente con la URL del proyecto en GitHub Pages. +`http://localhost:4201/` + +## Alojamiento en Google Cloud + +Cloud Run sirve el sitio con un mínimo de 0 instancias, un máximo de 2 y facturación por solicitudes. Firebase Hosting gestiona HTTPS y reenvía las solicitudes a Cloud Run. El script de preparación incluye solo archivos públicos y excluye los privados. La activación del dominio depende del DNS y del certificado. + +`python scripts/stage_cloudrun.py` · [`firebase.json`](../../../firebase.json) · [docs/discovery.md](docs/discovery.md) -`site/layout.html`, `site/style.css` y `scripts/publishing.py` generan páginas HTML completas para el directorio, cada harness, la guía de envío y la página de información. JavaScript añade progresivamente búsqueda, filtros y funciones de copia; el contenido de instalación y la navegación siguen siendo utilizables sin él. Las compilaciones también publican un sitemap, versiones Markdown de las páginas, `llms.txt` y el catálogo JSON revisado. Consulta [Descubrimiento e indexación](docs/discovery.md) para la configuración del propietario y los detalles de rastreo. +## Revisiones e insignias comunitarias -`python scripts/catalog.py refresh` verifica las insignias de quienes han optado por participar leyendo el contenido público del README en GitHub. Nunca ejecuta código enviado. GitHub Pages publica la rama main revisada; un flujo de trabajo diario actualiza los registros de insignias y vuelve a generar el sitio. Las comprobaciones de PR externas tienen permisos de solo lectura. +Las revisiones de configuración y artefactos describen pruebas concretas, no compatibilidad universal. Una insignia opcional permite una promoción comunitaria transparente de 14 días. La atribución a Harneloop es opcional; no se requiere ningún framework. -Los datos de origen y los registros de revisión se guardan en este repositorio. El código fuente de los harnesses y los recursos de sus versiones publicadas se guardan en sus propios repositorios. El framework de Harneloop no instala vídeos, dependencias ni rastros privados de desarrollo de los harnesses. +[docs/badge-program.md](docs/badge-program.md) diff --git a/docs/i18n/es/docs/badge-program.md b/docs/i18n/es/docs/badge-program.md index 54c75c1..7561f08 100644 --- a/docs/i18n/es/docs/badge-program.md +++ b/docs/i18n/es/docs/badge-program.md @@ -1,4 +1,4 @@ -# Listed in Harness Library: impulso comunitario gratuito de 14 días +# Listed in ToolIndex: impulso comunitario gratuito de 14 días El programa recompensa a quienes facilitan el descubrimiento de harnesses reutilizables. No hay pagos ni obligación de usar Harneloop. @@ -9,12 +9,12 @@ El programa recompensa a quienes facilitan el descubrimiento de harnesses reutil Ejemplo: ```md -[![Listed in Harness Library](https://openrootdev.github.io/harness-library/badges/your-slug.svg)](https://openrootdev.github.io/harness-library/harnesses/your-slug/) +[![Listed in ToolIndex](https://toolindex.org/badges/your-slug.svg)](https://toolindex.org/tools/your-slug/) ``` -Se admite el Markdown exacto o una imagen HTML enlazada equivalente. El texto alternativo de la imagen debe ser «Listed in Harness Library». Los ejemplos dentro de bloques de código o comentarios HTML no cuentan. +Se admite el Markdown exacto o una imagen HTML enlazada equivalente. El texto alternativo de la imagen debe ser «Listed in ToolIndex». Los ejemplos dentro de bloques de código o comentarios HTML no cuentan. -Los enlaces de vuelta `https://openrootdev.github.io/harness-library/#your-slug` emitidos anteriormente siguen siendo válidos y llevan a la página correspondiente. Usa la URL real de la página para las nuevas insignias. +Los enlaces de vuelta `https://toolindex.org/#your-slug` emitidos anteriormente siguen siendo válidos y llevan a la página correspondiente. Usa la URL real de la página para las nuevas insignias. Las fichas activas aparecen antes que las normales, y dentro de cada grupo se ordenan alfabéticamente. Los filtros de búsqueda y categoría siguen aplicándose. El directorio muestra una etiqueta **Community boost** y su fecha de caducidad en la página de detalle. Se trata de una posición promocional; el estado de revisión y las afirmaciones de calidad siguen siendo independientes. @@ -24,4 +24,8 @@ Si GitHub no está disponible temporalmente, no se concede ningún impulso nuevo La insignia puede permanecer tras la caducidad. Cualquier política nueva se debatiría públicamente; no hay promoción recurrente oculta ni posiciones de pago. -Las insignias emitidas antes de la migración a Kaelux Labs en `https://ker102.github.io/harness-library/` siguen siendo válidas. La migración no reinicia el período original de 14 días. Actualiza tanto la imagen como el enlace de vuelta a la nueva dirección canónica cuando te resulte conveniente. +Las insignias emitidas antes de la migración a Kaelux Labs en `https://toolindex.org/` siguen siendo válidas. La migración no reinicia el período original de 14 días. Actualiza tanto la imagen como el enlace de vuelta a la nueva dirección canónica cuando te resulte conveniente. + +ToolIndex incluye cualquier herramienta que puedan usar los agentes de IA: habilidades, servidores MCP, CLI, API, bibliotecas, complementos, flujos de trabajo y harnesses. Se aceptan servicios alojados y comerciales si explican acceso, precios, autenticación y condiciones. Cada ficha enlaza directamente al repositorio de origen o a la documentación oficial. + +El logotipo o la imagen personalizada son opcionales. Si se añaden, indica su origen y texto alternativo; en caso contrario se muestran iniciales neutras. Elige el tipo de herramienta y explica la instalación o el acceso al servicio. Se aceptan fuentes fuera de GitHub; la comprobación automática de insignias en README solo admite GitHub. diff --git a/docs/i18n/es/docs/discovery.md b/docs/i18n/es/docs/discovery.md index 0e81aa6..4740e9b 100644 --- a/docs/i18n/es/docs/discovery.md +++ b/docs/i18n/es/docs/discovery.md @@ -1,51 +1,34 @@ -# Descubrimiento e indexación +# Descubrimiento y despliegue -Sede actual desde `2026-10-20`: [OpenRootdev/harness-library](https://github.com/OpenRootdev/harness-library) y el [directorio](https://openrootdev.github.io/harness-library/). Las notas históricas siguientes describen el traslado anterior. - -El directorio público publica HTML completo en URLs estables. Los buscadores, los navegadores con JavaScript desactivado y los agentes pueden leer directamente la instalación, los requisitos previos, el origen, la distribución y el alcance de revisión de cada harness aprobado. JavaScript solo mejora el filtrado, la copia y la navegación por fragmentos de URL heredados. +ToolIndex publica HTML completo, copias Markdown y un catálogo JSON revisado. Buscadores y agentes pueden leer instalación o acceso, origen, licencias y alcance de revisión sin JavaScript. ## Recursos públicos -- [Directorio](https://openrootdev.github.io/harness-library/) y [guía de envío](https://openrootdev.github.io/harness-library/submit/). -- [Sitemap](https://openrootdev.github.io/harness-library/sitemap.xml): solo páginas HTML canónicas. Las comprobaciones diarias de insignias no inventan fechas de modificación del contenido. -- [llms.txt](https://openrootdev.github.io/harness-library/llms.txt): una guía compacta con enlaces a páginas de instalación en Markdown y datos. -- [llms-full.txt](https://openrootdev.github.io/harness-library/llms-full.txt): texto público combinado. -- [catalog.json](https://openrootdev.github.io/harness-library/catalog.json): fichas revisadas, URLs canónicas de páginas, instalación, configuración manual y evidencia con alcance definido. -- Cada página HTML canónica tiene un `index.md` correspondiente, enlazado con `rel="alternate" type="text/markdown"`. - -Cada página HTML tiene un título, una descripción y una URL canónica únicos, metadatos de vista previa social y JSON-LD coherente. Los datos estructurados describen el directorio, el mantenedor y los harnesses reales; no inventan valoraciones, descargas ni compatibilidad universal. Las rutas desconocidas devuelven el estado 404 de GitHub Pages mediante la página de error noindex. Los antiguos enlaces de fichas con fragmentos siguen siendo compatibles. - -## Configuración del propietario - -1. Añade una **propiedad de prefijo de URL** para `https://openrootdev.github.io/harness-library/` en [Google Search Console](https://search.google.com/search-console). Esto limita la propiedad al proyecto. Usa el método de verificación proporcionado para tu cuenta; se puede colocar un archivo HTML de verificación en `site/` una vez que se disponga de su nombre y contenido exactos. -2. Envía `sitemap.xml` en esa propiedad. Inspecciona las URLs de inicio, de la guía de envío y de los harnesses; solicita la indexación cuando la herramienta lo permita. El envío es una pista para el descubrimiento, no una promesa de indexación. -3. Añade el mismo sitio a [Bing Webmaster Tools](https://www.bing.com/webmasters/) y envía el sitemap. Si la cuenta ofrece importar desde Google Search Console, puedes reutilizar la propiedad verificada. -4. Vuelve a consultar los informes de indexación tras el despliegue. Corrige los problemas de rastreo o contenido basándote en evidencia. No consideres una búsqueda `site:` ni una puntuación de Lighthouse como prueba de cobertura de indexación o posicionamiento. - -La verificación requiere la cuenta del propietario o el artefacto de verificación que esta proporcione. No publiques tokens de verificación inventados. Si se añade un archivo HTML de verificación, mantenlo fuera del sitemap y consérvalo en las compilaciones. - -## Notificaciones de cambios publicados - -Después de desplegarse un push normal, el flujo de trabajo de Pages notifica a [IndexNow](https://www.indexnow.org/documentation) con las URLs canónicas del sitemap generado. Las actualizaciones diarias de insignias omiten esta notificación. Esta migración cambia las cinco páginas; para un directorio mayor, limita los envíos a las páginas modificadas. Google usa Search Console y el rastreo habitual; no se le envía información mediante IndexNow. - -El proyecto aloja `indexnow-key.txt` y proporciona su `keyLocation` exacta. Esto limita la propiedad a `/harness-library/`, evitando proyectos ajenos en el host compartido. La clave debe servirse públicamente para la verificación del protocolo; no es una credencial de una cuenta de webmaster. No se necesita inicio de sesión, servicio de pago ni dependencia adicional. Un fallo temporal de la API no revierte un despliegue satisfactorio del sitio. - -Para una actualización deliberada del contenido fuera del flujo de trabajo, genera primero el sitio y ejecuta después `python scripts/notify_indexnow.py --dry-run` para inspeccionar la lista de URLs, o `python scripts/notify_indexnow.py` para enviarla. HTTP 200 significa recibido; HTTP 202 significa recibido con validación de clave pendiente. Ninguno demuestra indexación ni posicionamiento. Evita envíos repetidos cuando el contenido no haya cambiado. +- [ToolIndex](https://toolindex.org/) +- [submit/](https://toolindex.org/submit/) +- [sitemap.xml](https://toolindex.org/sitemap.xml) +- [llms.txt](https://toolindex.org/llms.txt) +- [llms-full.txt](https://toolindex.org/llms-full.txt) +- [catalog.json](https://toolindex.org/catalog.json) -## GitHub Pages y robots.txt +## Alojamiento en Google Cloud -Las reglas de robots se leen desde la **raíz del host**, `https://openrootdev.github.io/robots.txt`, no desde `/harness-library/robots.txt`. Un archivo del proyecto no controla el rastreo del host compartido. El archivo del proyecto solo indica el sitemap actual. Envía el sitemap mediante las cuentas de webmaster. +Cloud Run sirve el sitio en europe-west1 con mínimo de 0 instancias, máximo de 2 y facturación por solicitudes. Firebase Hosting proporciona HTTPS y reenvía a Cloud Run. Configura el DNS con Firebase Hosting, no GitHub Pages. El script prepara solo contenido público y configuración del contenedor; usa la ruta impresa como PUBLIC_CONTEXT. El despliegue requiere acceso autorizado a las CLI de Google Cloud y Firebase. -Si el propietario añade posteriormente un repositorio para el sitio raíz o un dominio personalizado, comprueba el archivo robots autoritativo antes de desplegar restricciones. Nunca cambies sin cuidado las reglas para otros proyectos del mismo host. +```sh +python scripts/stage_cloudrun.py +gcloud run deploy toolindex --source PUBLIC_CONTEXT --project toolindex-org --region europe-west1 --min 0 --max 2 --min-instances 0 --max-instances 2 --cpu-throttling --memory 512Mi --execution-environment gen2 --service-account toolindex-runtime@toolindex-org.iam.gserviceaccount.com --build-service-account projects/toolindex-org/serviceAccounts/toolindex-build@toolindex-org.iam.gserviceaccount.com --allow-unauthenticated +firebase deploy --only hosting --project toolindex-org +``` -## Migración a la organización +[Google Cloud](https://toolindex-org.web.app/) · [Firebase Hosting + Cloud Run](https://firebase.google.com/docs/hosting/cloud-run) -El repositorio y el directorio se trasladaron a [Kaelux Labs](https://github.com/OpenRootdev/harness-library) el 10 de octubre de 2026. GitHub redirige la URL del repositorio anterior. Un pequeño [repositorio de Pages de la cuenta](https://github.com/Ker102/ker102.github.io) conserva las páginas del antiguo directorio con redirecciones instantáneas y enlaces canónicos, y sigue sirviendo las imágenes de insignias existentes. Su `robots.txt` en la raíz del host permite el rastreo y enlaza el sitemap actual. +## Buscadores -Los enlaces de vuelta de insignias que usen la URL antigua o la actual del directorio siguen siendo elegibles. Cambiarlos no reinicia un impulso existente de 14 días; las fechas del registro original siguen siendo autoritativas. +Verifica la propiedad de prefijo URL de toolindex.org con el archivo facilitado por su propietario y envía sitemap.xml a Search Console y Bing Webmaster Tools. No inventes tokens ni consideres el envío prueba de indexación. El robots.txt raíz permite el rastreo. Las notificaciones IndexNow son opcionales y solo se envían cuando el archivo de propiedad y las páginas están publicados. -## Descubrimiento por agentes +[Search Console](https://search.google.com/search-console) · [Bing Webmaster Tools](https://www.bing.com/webmasters/) · [IndexNow](https://www.indexnow.org/documentation) -Los agentes pueden usar HTML normal, el catálogo JSON o las versiones Markdown. `llms.txt` es una propuesta de conveniencia, no un factor de posicionamiento de Google ni un requisito. Google afirma que sus funciones de búsqueda con IA usan las mismas prácticas fundamentales de SEO que la búsqueda normal. Importan el texto rastreable, los enlaces de página claros, la evidencia precisa y el contenido útil; ninguna configuración garantiza la inclusión ni las citas. +## Compatibilidad y revisión -Referencias primarias: [SEO de JavaScript de Google](https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics), [sitemaps](https://developers.google.com/search/docs/crawling-indexing/sitemaps/build-sitemap), [especificación de robots](https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec), [funciones de IA](https://developers.google.com/search/docs/appearance/ai-features), [propuesta llms.txt](https://llmstxt.org/). +Las rutas antiguas /harnesses/ redirigen a /tools/. Las URL y etiquetas originales de insignias siguen aceptándose sin reiniciar la promoción única de 14 días. GitHub redirige el repositorio anterior a OpenRootdev/toolindex. Las revisiones describen evidencia limitada. CI nunca ejecuta código de herramientas enviadas ni instala sus dependencias. diff --git a/docs/i18n/fr/CONTRIBUTING.md b/docs/i18n/fr/CONTRIBUTING.md index 649f5dc..fc8a61f 100644 --- a/docs/i18n/fr/CONTRIBUTING.md +++ b/docs/i18n/fr/CONTRIBUTING.md @@ -1,14 +1,18 @@ # Proposer un harness +ToolIndex accueille tous les outils utilisables par les agents IA : compétences, serveurs MCP, CLI, API, bibliothèques, extensions, workflows et harnesses. Les services hébergés et commerciaux sont acceptés si leur accès, leurs tarifs, leur authentification et leurs conditions sont clairs. Chaque fiche renvoie directement au dépôt source ou à la documentation officielle. + +Le logo ou une image personnalisée sont facultatifs. Indiquez leur source et un texte alternatif ; sinon la fiche affiche des initiales neutres. Choisissez un type d’outil et expliquez son installation ou l’accès au service. Les sources hors GitHub sont acceptées ; seuls les README GitHub permettent actuellement la vérification automatique des badges. + **Les nouvelles propositions sont les bienvenues.** Nous recherchons des configurations d'agents pratiques et réutilisables, y compris de petits dossiers de compétences. Harneloop est facultatif. La démarche la plus simple ne nécessite ni fork ni pull request : -1. [Ouvrez le formulaire de soumission GitHub](https://github.com/Ker102/harness-library/issues/new?template=submit-harness.yml). Indiquez le dépôt, le nom et la tâche/catégorie. +1. [Ouvrez le formulaire de soumission GitHub](https://github.com/OpenRootdev/toolindex/issues/new?template=submit-tool.yml). Indiquez le dépôt, le nom et la tâche/catégorie. 2. Expliquez l'installation, la distribution ciblée, la version/licence et les connexions manuelles. Les détails supplémentaires de composition et les preuves de tests sont facultatifs. 3. Les mainteneurs examinent votre issue, y demandent les précisions manquantes si nécessaire et publient les entrées approuvées. Les modifications ultérieures peuvent être soumises dans une autre issue ou PR. -Seul un compte GitHub est nécessaire pour utiliser le formulaire. Le [guide du site](https://ker102.github.io/harness-library/submit/) explique la même procédure. +Seul un compte GitHub est nécessaire pour utiliser le formulaire. Le [guide du site](https://toolindex.org/submit/) explique la même procédure. Pour une PR, copiez `docs/listing.example.json` vers `data/listings/your-slug.json`. Utilisez le même slug en minuscules pour le nom de fichier et `id`. Exécutez `python scripts/catalog.py validate` et les tests décrits dans le README. diff --git a/docs/i18n/fr/README.md b/docs/i18n/fr/README.md index 2714a02..b20de63 100644 --- a/docs/i18n/fr/README.md +++ b/docs/i18n/fr/README.md @@ -1,54 +1,52 @@ -

Harness Library

-

Harness Library

-

English · Español · 简体中文 · Français · 日本語 · Deutsch · Português (Brasil)

-

Découvrez, installez et partagez des harnesses réutilisables pour agents.

-

Parcourir la bibliothèque · Proposer un harness · Guide de soumission

+

ToolIndex

+

ToolIndex

+

English · Español · 简体中文 · Français · 日本語 · Deutsch · Português (Brasil)

+

Des outils pour les agents IA. Une configuration claire. Des liens directs vers les sources.

+

toolindex.org · Proposer un outil

-Un annuaire ouvert d'instructions, de compétences, d'outils et de workflows qui aident un agent à bien accomplir une tâche précise. Un harness peut se limiter à quelques fichiers ou comprendre un ensemble d'outils plus vaste. Chaque fiche explique comment l'installer, ce qu'il faut configurer manuellement et quelle partie du dépôt source est nécessaire. +ToolIndex est un annuaire ouvert de compétences, serveurs MCP, CLI, API, bibliothèques, extensions, workflows et harnesses utilisables par les agents IA. Paquets locaux, services hébergés et outils commerciaux sont acceptés si leur accès, leurs tarifs et leurs conditions sont clairs. -Les premières entrées sont [Smooth Motion Graphics](https://github.com/Ker102/smooth-motion-graphics) et [ViperMesh for Blender](https://github.com/OpenRootdev/vipermesh-blender). Le dépôt et les versions publiées existants de ViperMesh sont référencés sans modification. Harneloop est facultatif ; les harnesses créés avec lui peuvent afficher cette attribution après examen. +## Quels outils proposer -## Voir un harness en action +Des outils utiles pour une tâche précise, du petit dossier de compétences à une API. Chaque fiche renvoie directement au dépôt source ou à la documentation officielle et précise installation ou connexion, configuration manuelle, licence ou conditions, version et portée de la vérification. -La vidéo explicative de Harneloop présente le style d'animation du [harness Smooth Motion Graphics](https://openrootdev.github.io/harness-library/harnesses/smooth-motion-graphics/) de la bibliothèque : scènes lisibles, connexions courbes et transitions calmes. Elle explique aussi comment Harneloop construit et améliore les unités de harness. +## Proposer un outil -

Voir la démonstration silencieuse d'animation graphique de Harneloop

-

Voir la vidéo complète · 3:40 · Sans son, avec explications à l'écran

+1. Ouvrez le formulaire GitHub avec le nom, le type, la source et le but de l’outil. +2. Décrivez le paquet ou service, son installation ou accès, sa version, sa licence ou ses conditions, les identifiants nécessaires et les coûts. Ne publiez aucun secret. +3. Un logo ou une image personnalisée sont facultatifs. Indiquez URL, source et texte alternatif ; sinon la fiche affiche des initiales neutres. +4. Les responsables examinent puis publient les propositions approuvées. Aucun fork, pull request ou compte ToolIndex n’est requis ; le formulaire demande un compte GitHub. -La vidéo est hébergée séparément. Consultez le paquet d'installation propre au harness et son moteur de rendu d'exemple depuis sa fiche. +[CONTRIBUTING.md](CONTRIBUTING.md) · [JSON](../../../docs/listing.example.json) -## Proposer un harness +## Exemples examinés -**Les nouvelles propositions sont les bienvenues.** Nous recherchons des harnesses utiles pour le développement, la recherche, les données, la création, Blender et les opérations. Quelques compétences peuvent suffire ; l'utilisation de Harneloop n'est pas obligatoire. +Une compétence d’animation de marque et un connecteur MCP Blender illustrent deux types acceptés. Leurs sources et versions restent dans leurs propres dépôts. -1. [Ouvrez le court formulaire GitHub](https://github.com/OpenRootdev/harness-library/issues/new?template=submit-harness.yml) en indiquant votre dépôt et la tâche qu'il aide un agent à accomplir. -2. Ajoutez des étapes d'installation claires, la catégorie, la licence, le périmètre de version/distribution et toute configuration manuelle. Les nombres de composants et les preuves de tests sont facultatifs. -3. Un mainteneur examine la configuration, vous contacte dans votre issue si nécessaire et publie les entrées approuvées. +- [Smooth Motion Graphics](https://toolindex.org/tools/smooth-motion-graphics/) +- [ViperMesh for Blender](https://toolindex.org/tools/vipermesh-blender/) -**Aucun fork, aucune pull request ni aucun compte Harness Library n'est nécessaire.** Le formulaire nécessite un compte GitHub. Vous pouvez aussi envoyer une PR ajoutant un fichier JSON dans `data/listings/`. Consultez le [guide public de soumission](https://openrootdev.github.io/harness-library/submit/), [CONTRIBUTING.md](CONTRIBUTING.md) et [le modèle](../../../docs/listing.example.json). +## Construire et prévisualiser -Un dépôt mixte doit fournir un paquet ciblé ou une branche dédiée au harness. Les auteurs des soumissions ne définissent pas les labels de vérification ou de promotion. Les mainteneurs examinent la configuration, le périmètre et les preuves éventuelles avant de publier la fiche. « Artifacts checked » signifie que les artefacts documentés ont été inspectés ; cela ne garantit pas le fonctionnement avec tous les modèles, plateformes ou cas d'usage. - -## Programme gratuit de badges - -Ajoutez le badge exact « Listed in Harness Library » et le lien retour vers la fiche dans les 30 premières lignes de votre README source. Après vérification, votre fiche bénéficie d'**une seule mise en avant communautaire de 14 jours**, clairement signalée dans l'annuaire. Cette mise en avant modifie l'ordre d'affichage, pas le statut de l'examen. Elle est gratuite, facultative et expire automatiquement. Retirer puis remettre le badge ne la relance pas. [Politique et vérification](docs/badge-program.md). - -## Développement - -Aucune dépendance frontend ni aucun service backend n'est nécessaire. Python 3.11+ exécute le validateur et le générateur ; l'interface utilise simplement HTML, CSS et JavaScript. +Python 3.11+ génère le site statique. L’interface utilise HTML, CSS et JavaScript ; la recherche enrichit des pages qui restent lisibles sans JavaScript. ```sh python scripts/catalog.py validate python -m unittest discover -s tests -v python scripts/catalog.py build -python -c "import shutil; shutil.copytree('dist', '.preview/harness-library', dirs_exist_ok=True)" -python -m http.server 4201 --directory .preview +python -m http.server 4201 --directory dist ``` -Ouvrez `http://localhost:4201/harness-library/`. La copie de prévisualisation sert correctement le chemin de base de production ; actualisez-la après chaque nouvelle génération. Les chemins des ressources et de navigation correspondent volontairement à l'URL du projet GitHub Pages. +`http://localhost:4201/` + +## Hébergement Google Cloud + +Cloud Run sert le site avec un minimum de 0 instance, un maximum de 2 et une facturation par requête. Firebase Hosting gère HTTPS du domaine et transmet les requêtes à Cloud Run. La préparation du déploiement exclut les fichiers privés du workspace. L’activation du domaine dépend du DNS et du certificat. + +`python scripts/stage_cloudrun.py` · [`firebase.json`](../../../firebase.json) · [docs/discovery.md](docs/discovery.md) -`site/layout.html`, `site/style.css` et `scripts/publishing.py` génèrent des pages HTML complètes pour l'annuaire, chaque harness, le guide de soumission et la page de présentation. JavaScript ajoute progressivement la recherche, les filtres et la copie ; le contenu d'installation et la navigation restent utilisables sans lui. Les générations publient aussi un sitemap, des versions Markdown des pages, `llms.txt` et le catalogue JSON examiné. Consultez [Découverte et indexation](docs/discovery.md) pour la configuration du propriétaire et les détails d'exploration. +## Vérifications et badges communautaires -`python scripts/catalog.py refresh` vérifie les badges des participants volontaires en lisant le contenu public des README GitHub. Il n'exécute jamais de code soumis. GitHub Pages publie la branche main examinée ; un workflow quotidien actualise les enregistrements des badges et régénère le site. Les contrôles des PR externes disposent de permissions en lecture seule. +Les vérifications de configuration et d’artefacts décrivent des preuves précises, pas une compatibilité universelle. Un badge facultatif permet une promotion communautaire transparente de 14 jours. L’attribution Harneloop est facultative ; aucun framework n’est imposé. -Les données sources et les enregistrements d'examen se trouvent dans ce dépôt. Le code source et les ressources des versions publiées des harnesses se trouvent dans leurs propres dépôts. Le framework Harneloop n'installe aucune vidéo, dépendance ou trace de développement privée des harnesses. +[docs/badge-program.md](docs/badge-program.md) diff --git a/docs/i18n/fr/docs/badge-program.md b/docs/i18n/fr/docs/badge-program.md index eae34e5..efab2fe 100644 --- a/docs/i18n/fr/docs/badge-program.md +++ b/docs/i18n/fr/docs/badge-program.md @@ -1,4 +1,4 @@ -# Listed in Harness Library : mise en avant communautaire gratuite de 14 jours +# Listed in ToolIndex : mise en avant communautaire gratuite de 14 jours Le programme récompense les contributeurs qui facilitent la découverte de harnesses réutilisables. Il n'y a ni paiement ni obligation d'utiliser Harneloop. @@ -9,12 +9,12 @@ Le programme récompense les contributeurs qui facilitent la découverte de harn Exemple : ```md -[![Listed in Harness Library](https://openrootdev.github.io/harness-library/badges/your-slug.svg)](https://openrootdev.github.io/harness-library/harnesses/your-slug/) +[![Listed in ToolIndex](https://toolindex.org/badges/your-slug.svg)](https://toolindex.org/tools/your-slug/) ``` -Le Markdown exact ou une image HTML liée équivalente sont acceptés. Le texte alternatif de l'image doit être « Listed in Harness Library ». Les exemples dans des blocs de code ou des commentaires HTML ne sont pas admissibles. +Le Markdown exact ou une image HTML liée équivalente sont acceptés. Le texte alternatif de l'image doit être « Listed in ToolIndex ». Les exemples dans des blocs de code ou des commentaires HTML ne sont pas admissibles. -Les anciens liens retour `https://openrootdev.github.io/harness-library/#your-slug` restent admissibles et mènent à la page correspondante. Utilisez l'URL réelle de la page pour les nouveaux badges. +Les anciens liens retour `https://toolindex.org/#your-slug` restent admissibles et mènent à la page correspondante. Utilisez l'URL réelle de la page pour les nouveaux badges. Les fiches actives apparaissent avant les fiches ordinaires, puis par ordre alphabétique dans chaque groupe. Les filtres de recherche et de catégorie s'appliquent toujours. L'annuaire affiche un label **Community boost** et son expiration sur la page détaillée. Il s'agit d'un placement promotionnel ; le statut de l'examen et les affirmations de qualité restent indépendants. @@ -24,4 +24,8 @@ Si GitHub est temporairement indisponible, aucune nouvelle mise en avant n'est a Le badge peut rester après expiration. Toute nouvelle politique serait discutée publiquement ; il n'existe ni promotion récurrente cachée ni classement payant. -Les badges émis avant la migration vers Kaelux Labs à `https://ker102.github.io/harness-library/` restent admissibles. La migration ne relance pas la période initiale de 14 jours. Mettez à jour l'image et le lien retour vers la nouvelle adresse canonique lorsque cela vous convient. +Les badges émis avant la migration vers Kaelux Labs à `https://toolindex.org/` restent admissibles. La migration ne relance pas la période initiale de 14 jours. Mettez à jour l'image et le lien retour vers la nouvelle adresse canonique lorsque cela vous convient. + +ToolIndex accueille tous les outils utilisables par les agents IA : compétences, serveurs MCP, CLI, API, bibliothèques, extensions, workflows et harnesses. Les services hébergés et commerciaux sont acceptés si leur accès, leurs tarifs, leur authentification et leurs conditions sont clairs. Chaque fiche renvoie directement au dépôt source ou à la documentation officielle. + +Le logo ou une image personnalisée sont facultatifs. Indiquez leur source et un texte alternatif ; sinon la fiche affiche des initiales neutres. Choisissez un type d’outil et expliquez son installation ou l’accès au service. Les sources hors GitHub sont acceptées ; seuls les README GitHub permettent actuellement la vérification automatique des badges. diff --git a/docs/i18n/fr/docs/discovery.md b/docs/i18n/fr/docs/discovery.md index 5b69d3e..cdea832 100644 --- a/docs/i18n/fr/docs/discovery.md +++ b/docs/i18n/fr/docs/discovery.md @@ -1,51 +1,34 @@ -# Découverte et indexation +# Découverte et déploiement -Adresses actuelles depuis le `2026-10-20` : [OpenRootdev/harness-library](https://github.com/OpenRootdev/harness-library) et [annuaire](https://openrootdev.github.io/harness-library/). Les notes historiques ci-dessous décrivent le déplacement précédent. - -L'annuaire public publie du HTML complet à des URLs stables. Les moteurs de recherche, les navigateurs sans JavaScript et les agents peuvent lire directement l'installation, les prérequis, l'origine, la distribution et le périmètre d'examen de chaque harness approuvé. JavaScript améliore uniquement le filtrage, la copie et la navigation historique par fragments d'URL. +ToolIndex publie du HTML complet, des miroirs Markdown et un catalogue JSON examiné. Moteurs de recherche et agents lisent installation ou accès, sources, licences et portée des vérifications sans JavaScript. ## Ressources publiques -- [Annuaire](https://openrootdev.github.io/harness-library/) et [guide de soumission](https://openrootdev.github.io/harness-library/submit/). -- [Sitemap](https://openrootdev.github.io/harness-library/sitemap.xml) : uniquement les pages HTML canoniques. Les contrôles quotidiens des badges ne fabriquent pas de dates de modification du contenu. -- [llms.txt](https://openrootdev.github.io/harness-library/llms.txt) : un guide compact reliant les pages d'installation en Markdown et les données. -- [llms-full.txt](https://openrootdev.github.io/harness-library/llms-full.txt) : texte public regroupé. -- [catalog.json](https://openrootdev.github.io/harness-library/catalog.json) : fiches examinées, URLs canoniques, installation, configuration manuelle et preuves au périmètre défini. -- Chaque page HTML canonique possède un `index.md` correspondant, lié avec `rel="alternate" type="text/markdown"`. - -Chaque page HTML dispose d'un titre, d'une description et d'une URL canonique uniques, de métadonnées d'aperçu social et de JSON-LD cohérent. Les données structurées décrivent l'annuaire, le mainteneur et les harnesses réels ; elles n'inventent ni évaluations, ni téléchargements, ni compatibilité universelle. Les chemins inconnus renvoient le statut 404 de GitHub Pages avec la page d'erreur noindex. Les anciens liens de fiches par fragments restent pris en charge. - -## Configuration du propriétaire - -1. Ajoutez une **propriété avec préfixe d'URL** pour `https://openrootdev.github.io/harness-library/` dans [Google Search Console](https://search.google.com/search-console). Cela limite la propriété au projet. Utilisez la méthode de vérification fournie pour votre compte ; un fichier HTML de vérification peut être placé dans `site/` une fois son nom exact et son contenu fournis. -2. Soumettez `sitemap.xml` dans cette propriété. Inspectez les URLs de l'accueil, du guide de soumission et des harnesses ; demandez l'indexation lorsque l'outil le permet. Une soumission est une indication de découverte, pas une promesse d'indexation. -3. Ajoutez le même site à [Bing Webmaster Tools](https://www.bing.com/webmasters/) et soumettez le sitemap. Si le compte propose l'importation depuis Google Search Console, la propriété vérifiée peut être réutilisée. -4. Consultez à nouveau les rapports d'indexation après le déploiement. Corrigez les problèmes d'exploration ou de contenu signalés en vous fondant sur des preuves. Ne considérez pas une recherche `site:` ou un score Lighthouse comme une preuve de couverture d'indexation ou de classement. - -La vérification nécessite le compte du propriétaire ou l'artefact de vérification qu'il fournit. Ne publiez pas de jetons de vérification devinés. Si un fichier HTML de vérification est ajouté, excluez-le du sitemap et conservez-le lors des générations. - -## Notifications de changements publiés - -Après le déploiement d'un push normal, le workflow Pages notifie [IndexNow](https://www.indexnow.org/documentation) avec les URLs canoniques du sitemap généré. Les actualisations quotidiennes des badges omettent cette notification. Cette migration modifie les cinq pages ; pour un annuaire plus grand, limitez les soumissions aux pages modifiées. Google utilise Search Console et l'exploration habituelle ; aucune soumission à Google n'est effectuée via IndexNow. - -Le projet héberge `indexnow-key.txt` et fournit son `keyLocation` exact. Cela limite la propriété à `/harness-library/`, évitant les projets sans rapport sur l'hôte partagé. La clé doit être servie publiquement pour la vérification du protocole ; ce n'est pas un identifiant de compte webmaster. Aucun accès connecté, service payant ou dépendance supplémentaire n'est nécessaire. Une panne temporaire de l'API n'annule pas un déploiement réussi du site. - -Pour une modification volontaire du contenu hors workflow, générez d'abord le site, puis exécutez `python scripts/notify_indexnow.py --dry-run` pour inspecter la liste des URLs, ou `python scripts/notify_indexnow.py` pour l'envoyer. HTTP 200 signifie reçu ; HTTP 202 signifie reçu, avec validation de la clé en attente. Aucun des deux ne prouve l'indexation ni le classement. Évitez les soumissions répétées lorsque le contenu n'a pas changé. +- [ToolIndex](https://toolindex.org/) +- [submit/](https://toolindex.org/submit/) +- [sitemap.xml](https://toolindex.org/sitemap.xml) +- [llms.txt](https://toolindex.org/llms.txt) +- [llms-full.txt](https://toolindex.org/llms-full.txt) +- [catalog.json](https://toolindex.org/catalog.json) -## GitHub Pages et robots.txt +## Hébergement Google Cloud -Les règles robots sont lues à la **racine de l’hôte**, `https://openrootdev.github.io/robots.txt`, et non dans `/harness-library/robots.txt`. Un fichier local au projet ne contrôle pas l’exploration de l’hôte partagé. Le fichier du projet indique seulement le sitemap actuel. Soumettez le sitemap via les comptes webmaster. +Cloud Run sert le site dans europe-west1 avec un minimum de 0 instance, un maximum de 2 et une facturation par requête. Firebase Hosting fournit HTTPS et transmet les requêtes. Configurez le DNS avec Firebase Hosting, pas GitHub Pages. Le script prépare uniquement le contenu public et la configuration du conteneur ; utilisez le chemin affiché pour PUBLIC_CONTEXT. Le déploiement nécessite un accès autorisé aux CLI Google Cloud et Firebase. -Si le propriétaire ajoute ensuite un dépôt pour le site racine ou un domaine personnalisé, vérifiez le fichier robots faisant autorité avant de déployer des restrictions. Ne modifiez jamais à la légère les règles d'autres projets sur le même hôte. +```sh +python scripts/stage_cloudrun.py +gcloud run deploy toolindex --source PUBLIC_CONTEXT --project toolindex-org --region europe-west1 --min 0 --max 2 --min-instances 0 --max-instances 2 --cpu-throttling --memory 512Mi --execution-environment gen2 --service-account toolindex-runtime@toolindex-org.iam.gserviceaccount.com --build-service-account projects/toolindex-org/serviceAccounts/toolindex-build@toolindex-org.iam.gserviceaccount.com --allow-unauthenticated +firebase deploy --only hosting --project toolindex-org +``` -## Migration vers l'organisation +[Google Cloud](https://toolindex-org.web.app/) · [Firebase Hosting + Cloud Run](https://firebase.google.com/docs/hosting/cloud-run) -Le dépôt et l'annuaire ont été transférés à [Kaelux Labs](https://github.com/OpenRootdev/harness-library) le 10 octobre 2026. GitHub redirige l'ancienne URL du dépôt. Un petit [dépôt Pages du compte](https://github.com/Ker102/ker102.github.io) conserve les anciennes pages de l'annuaire avec des redirections instantanées et des liens canoniques, et continue de servir les images des badges existants. Son `robots.txt` à la racine de l'hôte autorise l'exploration et pointe vers le sitemap actuel. +## Moteurs de recherche -Les liens retour des badges utilisant l'ancienne ou l'actuelle URL de l'annuaire restent admissibles. Modifier ces liens ne relance pas une mise en avant existante de 14 jours ; les dates de l'enregistrement initial restent la référence. +Vérifiez la propriété de préfixe URL toolindex.org avec l’artefact fourni par le propriétaire, puis soumettez sitemap.xml dans Search Console et Bing Webmaster Tools. N’inventez aucun jeton et ne prenez pas la soumission pour une preuve d’indexation. Le robots.txt racine autorise l’exploration. Les notifications IndexNow sont facultatives et ne partent qu’après publication du fichier de propriété et des pages correspondantes. -## Découverte par les agents +[Search Console](https://search.google.com/search-console) · [Bing Webmaster Tools](https://www.bing.com/webmasters/) · [IndexNow](https://www.indexnow.org/documentation) -Les agents peuvent utiliser du HTML ordinaire, le catalogue JSON ou les versions Markdown. `llms.txt` est une proposition pratique, pas un facteur de classement Google ni une obligation. Google indique que ses fonctions de recherche par IA suivent les mêmes pratiques fondamentales de SEO que la recherche ordinaire. Le texte explorable, les liens clairs, les preuves exactes et le contenu utile comptent ; aucune configuration ne garantit l'inclusion ou les citations. +## Compatibilité et vérification -Références primaires : [SEO JavaScript de Google](https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics), [sitemaps](https://developers.google.com/search/docs/crawling-indexing/sitemaps/build-sitemap), [spécification robots](https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec), [fonctions IA](https://developers.google.com/search/docs/appearance/ai-features), [proposition llms.txt](https://llmstxt.org/). +Les anciennes pages /harnesses/ redirigent vers /tools/. Les URL et libellés de badges d’origine restent reconnus sans réinitialiser la promotion unique de 14 jours. GitHub redirige l’ancien dépôt vers OpenRootdev/toolindex. Les preuves restent limitées à leur portée. La CI n’exécute jamais le code des outils soumis et n’installe pas leurs dépendances. diff --git a/docs/i18n/ja/CONTRIBUTING.md b/docs/i18n/ja/CONTRIBUTING.md index 7b8d058..f851693 100644 --- a/docs/i18n/ja/CONTRIBUTING.md +++ b/docs/i18n/ja/CONTRIBUTING.md @@ -1,14 +1,18 @@ # harness を投稿する +ToolIndex は、AI エージェントが使えるあらゆるツールを扱います。スキル、MCP サーバー、CLI、API、ライブラリ、プラグイン、ワークフロー、ハーネスが対象です。ホスト型サービスや商用ツールも、アクセス方法、料金、認証、利用条件が明確なら提出できます。各掲載ページはソースリポジトリまたは公式ドキュメントに直接リンクします。 + +ロゴやカスタム画像は任意です。使用する場合は出典と代替テキストを記載してください。画像がない場合は中立的な頭文字を表示します。ツールの種類を選び、インストールまたはサービス接続手順を説明してください。GitHub 以外のソースも受け付けますが、README バッジの自動確認は現在 GitHub のみ対応しています。 + **新しい投稿を歓迎します。** 小さなスキルフォルダーを含め、実用的で再利用可能なエージェント設定を募集しています。Harneloop の使用は任意です。 最も簡単な方法では、fork や pull request は不要です。 -1. [GitHub 投稿フォーム](https://github.com/Ker102/harness-library/issues/new?template=submit-harness.yml)を開きます。リポジトリ、名前、タスク・カテゴリを共有してください。 +1. [GitHub 投稿フォーム](https://github.com/OpenRootdev/toolindex/issues/new?template=submit-tool.yml)を開きます。リポジトリ、名前、タスク・カテゴリを共有してください。 2. インストール方法、用途を絞った配布内容、バージョン・ライセンス、手動接続を説明します。追加の構成情報やテストの証拠は任意です。 3. メンテナーが issue を審査し、必要ならその issue で不足情報を求め、承認した項目を公開します。後の変更は別の issue または PR で投稿できます。 -フォームを使うには GitHub アカウントだけが必要です。[ウェブサイトのガイド](https://ker102.github.io/harness-library/submit/)にも同じ手順を説明しています。 +フォームを使うには GitHub アカウントだけが必要です。[ウェブサイトのガイド](https://toolindex.org/submit/)にも同じ手順を説明しています。 PR の場合は、`docs/listing.example.json` を `data/listings/your-slug.json` にコピーします。ファイル名と `id` には同じ小文字の slug を使ってください。`python scripts/catalog.py validate` と README に記載されたテストを実行します。 diff --git a/docs/i18n/ja/README.md b/docs/i18n/ja/README.md index d18738c..74314d1 100644 --- a/docs/i18n/ja/README.md +++ b/docs/i18n/ja/README.md @@ -1,54 +1,52 @@ -

Harness Library

-

Harness Library

-

English · Español · 简体中文 · Français · 日本語 · Deutsch · Português (Brasil)

-

再利用できるエージェント用 harness を見つけ、インストールし、共有しましょう。

-

ライブラリを見る · harness を投稿する · 投稿ガイド

+

ToolIndex

+

ToolIndex

+

English · Español · 简体中文 · Français · 日本語 · Deutsch · Português (Brasil)

+

AI エージェントのためのツール。明確な設定手順。ソースへの直接リンク。

+

toolindex.org · ツールを提出する

-エージェントが特定の仕事を適切にこなすための指示、スキル、ツール、ワークフローを集めたオープンなディレクトリです。harness は数個のファイルだけで構成されることも、大規模なツール設定を含むこともあります。各掲載項目には、インストール方法、手動で設定する内容、ソースリポジトリのどの部分が必要かを記載しています。 +ToolIndex は AI エージェントが使えるスキル、MCP サーバー、CLI、API、ライブラリ、プラグイン、ワークフロー、ハーネスの公開ディレクトリです。アクセス方法、料金、条件が明確であれば、ローカルパッケージ、ホスト型サービス、商用ツールも対象です。 -最初の掲載項目は [Smooth Motion Graphics](https://github.com/Ker102/smooth-motion-graphics) と [ViperMesh for Blender](https://github.com/OpenRootdev/vipermesh-blender) です。ViperMesh の既存のリポジトリとリリースは変更せずに掲載しています。Harneloop の使用は任意です。Harneloop で作成された harness は、審査後にその表記を表示できます。 +## 対象となるツール -## harness の動作を見る +小さなスキルフォルダーからサービス API まで、具体的な作業に役立つツールを扱います。各掲載ページはソースリポジトリまたは公式ドキュメントに直接リンクし、インストールや接続、手動設定、ライセンスや条件、バージョン、レビュー範囲を説明します。 -Harneloop の解説動画では、ライブラリの [Smooth Motion Graphics harness](https://openrootdev.github.io/harness-library/harnesses/smooth-motion-graphics/) のモーションスタイルを紹介しています。読みやすいシーン、曲線の接続、落ち着いた切り替えが特徴です。また、Harneloop が harness ユニットを構築・改善する方法も説明しています。 +## ツールを提出する -

Harneloop の無音モーショングラフィックスデモを見る

-

動画全編を見る · 3:40 · 無音、画面上の説明付き

+1. GitHub フォームにツール名、種類、ソース、目的を記入します。 +2. パッケージやサービス、インストールやアクセス手順、バージョン、ライセンスや条件、必要な認証情報と料金を説明します。秘密情報は提出しないでください。 +3. ロゴやカスタム画像は任意です。使用する場合は URL、出典、代替テキストを記載します。画像がなければ中立的な頭文字を表示します。 +4. メンテナーが確認し、承認した項目を公開します。fork、pull request、ToolIndex アカウントは不要ですが、フォームには GitHub アカウントが必要です。 -動画は別の場所でホストされています。harness 自体のインストールパッケージとサンプルレンダラーは、掲載ページから確認してください。 +[CONTRIBUTING.md](CONTRIBUTING.md) · [JSON](../../../docs/listing.example.json) -## harness を投稿する +## レビュー済みの例 -**新しい投稿を歓迎します。** コーディング、調査、データ、創作、Blender、運用に役立つ harness を募集しています。少数のスキルだけでも構いません。Harneloop を使う必要はありません。 +ブランド動画のスキルと Blender MCP コネクターが二つの対象形式を示しています。ソースとリリースは各ツールのリポジトリに残ります。 -1. [短い GitHub 投稿フォーム](https://github.com/OpenRootdev/harness-library/issues/new?template=submit-harness.yml)を開き、リポジトリとエージェントにどの仕事をさせるためのものかを記入します。 -2. 明確なインストール手順、カテゴリ、ライセンス、バージョン・配布範囲、手動設定を記載します。コンポーネント数とテストの証拠は任意です。 -3. メンテナーが設定を審査し、必要に応じて issue で確認したうえで、承認した項目を公開します。 +- [Smooth Motion Graphics](https://toolindex.org/tools/smooth-motion-graphics/) +- [ViperMesh for Blender](https://toolindex.org/tools/vipermesh-blender/) -**fork、pull request、Harness Library アカウントは不要です。** フォームには GitHub アカウントが必要です。`data/listings/` に JSON ファイルを1つ追加する PR を送る方法もあります。[公開投稿ガイド](https://openrootdev.github.io/harness-library/submit/)、[CONTRIBUTING.md](CONTRIBUTING.md)、[テンプレート](../../../docs/listing.example.json)を参照してください。 +## ビルドとプレビュー -異なる用途の内容が混在するリポジトリでは、用途を絞ったパッケージか harness 専用ブランチを用意する必要があります。投稿者が検証や宣伝のラベルを設定することはできません。メンテナーは公開前に設定、範囲、提示された証拠を審査します。「Artifacts checked」は、文書に記載された成果物を確認したという意味であり、あらゆるモデル、プラットフォーム、用途で動作することを意味しません。 - -## 無料バッジプログラム - -ソース README の最初の 30 行以内に、正確な「Listed in Harness Library」バッジと掲載ページへのリンクを追加してください。検証後、掲載項目には**一度だけ、14 日間のコミュニティブースト**が付与され、ディレクトリ内で明示されます。ブーストは表示順に影響しますが、審査状況には影響しません。無料で、参加は任意、自動的に期限切れになります。バッジを削除して再追加しても期間は再開始しません。[ポリシーと検証](docs/badge-program.md)を参照してください。 - -## 開発 - -フロントエンドの依存関係やバックエンドサービスは不要です。Python 3.11+ でバリデーターとビルダーを実行します。UI は通常の HTML、CSS、JavaScript で構成されています。 +Python 3.11+ で静的サイトを生成します。フロントエンドは HTML、CSS、JavaScript で、検索は段階的な拡張です。JavaScript が無効でもページを読めます。 ```sh python scripts/catalog.py validate python -m unittest discover -s tests -v python scripts/catalog.py build -python -c "import shutil; shutil.copytree('dist', '.preview/harness-library', dirs_exist_ok=True)" -python -m http.server 4201 --directory .preview +python -m http.server 4201 --directory dist ``` -`http://localhost:4201/harness-library/` を開きます。プレビュー用コピーは本番のベースパスを正しく配信します。再ビルド後はコピーを更新してください。アセットとナビゲーションのパスは、意図的に GitHub Pages のプロジェクト URL と一致させています。 +`http://localhost:4201/` + +## Google Cloud ホスティング + +Cloud Run で最小 0、最大 2 インスタンス、リクエストベースの課金を使用します。Firebase Hosting がカスタムドメインの HTTPS を処理し、Cloud Run に転送します。公開ファイルだけを準備するスクリプトはワークスペースの私有ファイルを除外します。ドメイン有効化には DNS と証明書の検証が必要です。 + +`python scripts/stage_cloudrun.py` · [`firebase.json`](../../../firebase.json) · [docs/discovery.md](docs/discovery.md) -`site/layout.html`、`site/style.css`、`scripts/publishing.py` は、ディレクトリ、各 harness、投稿ガイド、概要ページの完全な HTML ページを生成します。JavaScript は検索、フィルター、コピー機能を段階的に追加します。JavaScript なしでもインストール内容とナビゲーションは利用できます。ビルドでは sitemap、各ページの Markdown ミラー、`llms.txt`、審査済み JSON カタログも公開します。所有者の設定とクロールの詳細は[発見とインデックス登録](docs/discovery.md)を参照してください。 +## レビューとコミュニティバッジ -`python scripts/catalog.py refresh` は公開 GitHub README の内容を読み、参加を選択したバッジを検証します。投稿されたコードは決して実行しません。GitHub Pages は審査済みの main を公開します。毎日のワークフローがバッジ記録を更新して再ビルドします。外部 PR のチェックには読み取り専用権限しかありません。 +設定や成果物の確認は具体的な証拠を示すもので、全モデルやプラットフォームの互換性保証ではありません。任意のバッジにより透明な 14 日間のコミュニティ表示優遇を一度受けられます。Harneloop の帰属表示は任意で、特定フレームワークは必須ではありません。 -ソースデータと審査記録はこのリポジトリにあります。harness のソースとリリース用アセットはそれぞれのリポジトリにあります。Harneloop のフレームワークと一緒に harness の動画、依存関係、非公開の開発記録がインストールされることはありません。 +[docs/badge-program.md](docs/badge-program.md) diff --git a/docs/i18n/ja/docs/badge-program.md b/docs/i18n/ja/docs/badge-program.md index 4532521..fc50ace 100644 --- a/docs/i18n/ja/docs/badge-program.md +++ b/docs/i18n/ja/docs/badge-program.md @@ -1,4 +1,4 @@ -# Listed in Harness Library:無料の 14 日間コミュニティブースト +# Listed in ToolIndex:無料の 14 日間コミュニティブースト このプログラムは、再利用可能な harness を見つけやすくする貢献者に特典を提供します。支払いは不要で、Harneloop の使用も必須ではありません。 @@ -9,12 +9,12 @@ 例: ```md -[![Listed in Harness Library](https://openrootdev.github.io/harness-library/badges/your-slug.svg)](https://openrootdev.github.io/harness-library/harnesses/your-slug/) +[![Listed in ToolIndex](https://toolindex.org/badges/your-slug.svg)](https://toolindex.org/tools/your-slug/) ``` -正確な Markdown または同等のリンク付き HTML 画像に対応しています。画像の代替テキストは「Listed in Harness Library」である必要があります。コードフェンスや HTML コメント内の例は対象になりません。 +正確な Markdown または同等のリンク付き HTML 画像に対応しています。画像の代替テキストは「Listed in ToolIndex」である必要があります。コードフェンスや HTML コメント内の例は対象になりません。 -以前発行された `https://openrootdev.github.io/harness-library/#your-slug` へのリンクも引き続き対象で、対応するページに移動します。新しいバッジには実際のページ URL を使ってください。 +以前発行された `https://toolindex.org/#your-slug` へのリンクも引き続き対象で、対応するページに移動します。新しいバッジには実際のページ URL を使ってください。 有効な掲載項目は通常の項目より先に表示され、それぞれのグループ内でアルファベット順に並びます。検索とカテゴリのフィルターは引き続き適用されます。ディレクトリの詳細ページに **Community boost** ラベルと期限を表示します。これは宣伝目的の配置であり、審査状況や品質に関する主張は独立しています。 @@ -24,4 +24,8 @@ GitHub が一時的に利用できない場合、新たなブーストは付与 期限後もバッジは残せます。新しいポリシーは公開で議論されます。隠れた定期的な宣伝や有料ランキングはありません。 -Kaelux Labs への移行前に `https://ker102.github.io/harness-library/` で発行されたバッジも引き続き対象です。移行によって元の 14 日間の期間は再開始しません。都合のよいときに、画像とリンク先の両方を新しい正規アドレスに更新してください。 +Kaelux Labs への移行前に `https://toolindex.org/` で発行されたバッジも引き続き対象です。移行によって元の 14 日間の期間は再開始しません。都合のよいときに、画像とリンク先の両方を新しい正規アドレスに更新してください。 + +ToolIndex は、AI エージェントが使えるあらゆるツールを扱います。スキル、MCP サーバー、CLI、API、ライブラリ、プラグイン、ワークフロー、ハーネスが対象です。ホスト型サービスや商用ツールも、アクセス方法、料金、認証、利用条件が明確なら提出できます。各掲載ページはソースリポジトリまたは公式ドキュメントに直接リンクします。 + +ロゴやカスタム画像は任意です。使用する場合は出典と代替テキストを記載してください。画像がない場合は中立的な頭文字を表示します。ツールの種類を選び、インストールまたはサービス接続手順を説明してください。GitHub 以外のソースも受け付けますが、README バッジの自動確認は現在 GitHub のみ対応しています。 diff --git a/docs/i18n/ja/docs/discovery.md b/docs/i18n/ja/docs/discovery.md index 2018b33..a1b7a9d 100644 --- a/docs/i18n/ja/docs/discovery.md +++ b/docs/i18n/ja/docs/discovery.md @@ -1,51 +1,34 @@ -# 発見とインデックス登録 +# 発見とデプロイ -`2026-10-20` 以降の現在の移転先は [OpenRootdev/harness-library](https://github.com/OpenRootdev/harness-library) と[ディレクトリ](https://openrootdev.github.io/harness-library/)です。以下の過去の移転記録は、その前の移転を説明しています。 - -公開ディレクトリは安定した URLs で完全な HTML を公開します。検索エンジン、JavaScript を無効にしたブラウザー、エージェントは、承認済み harness のインストール方法、前提条件、ソース、配布内容、審査範囲を直接読めます。JavaScript はフィルタリング、コピー、従来のハッシュナビゲーションを拡張するだけです。 +ToolIndex は完全な HTML、Markdown ミラー、レビュー済み JSON カタログを公開します。検索エンジンやエージェントは JavaScript なしでインストールやアクセス手順、ソース、ライセンス、レビュー範囲を読めます。 ## 公開リソース -- [ディレクトリ](https://openrootdev.github.io/harness-library/)と[投稿ガイド](https://openrootdev.github.io/harness-library/submit/)。 -- [Sitemap](https://openrootdev.github.io/harness-library/sitemap.xml):正規 HTML ページのみ。毎日のバッジ確認では、内容の更新日を作り上げません。 -- [llms.txt](https://openrootdev.github.io/harness-library/llms.txt):Markdown のインストールページとデータにリンクする簡潔なガイド。 -- [llms-full.txt](https://openrootdev.github.io/harness-library/llms-full.txt):公開テキストをまとめたもの。 -- [catalog.json](https://openrootdev.github.io/harness-library/catalog.json):審査済み掲載項目、正規ページ URLs、インストール、手動設定、範囲を明確にした証拠。 -- 各正規 HTML ページには対応する `index.md` があり、`rel="alternate" type="text/markdown"` でリンクされています。 - -各 HTML ページは固有のタイトル、説明、正規 URL、ソーシャルプレビューのメタデータ、それらに一致する JSON-LD を持ちます。構造化データは実際のディレクトリ、メンテナー、harness を記述し、評価、ダウンロード数、あらゆる環境での互換性を捏造しません。不明なパスは、noindex のエラーページで GitHub Pages の 404 ステータスを返します。古い掲載項目のハッシュリンクも引き続き対応しています。 - -## 所有者の設定 - -1. [Google Search Console](https://search.google.com/search-console) に `https://openrootdev.github.io/harness-library/` の **URL プレフィックス プロパティ**を追加します。これにより対象をこのプロジェクトに限定できます。アカウントに提示される確認方法を使ってください。正確なファイル名と内容が提供された後で、HTML 確認ファイルを `site/` に配置できます。 -2. そのプロパティで `sitemap.xml` を送信します。ホーム、投稿ガイド、harness の URLs を検査し、ツールで可能な場合にインデックス登録をリクエストします。送信は発見の手がかりであり、登録の保証ではありません。 -3. [Bing Webmaster Tools](https://www.bing.com/webmasters/) にも同じサイトを追加して sitemap を送信します。アカウントで Google Search Console からのインポートが利用できる場合、確認済みプロパティを再利用できます。 -4. デプロイ後にインデックス登録レポートを再確認します。報告されたクロールや内容の問題は、証拠に基づいて修正してください。`site:` 検索や Lighthouse スコアを、インデックス登録の網羅性や順位の証拠と見なさないでください。 - -確認には所有者のアカウント、またはそこから提供された確認用成果物が必要です。推測した確認トークンを公開しないでください。HTML 確認ファイルを追加した場合、sitemap には含めず、ビルドでは保持してください。 - -## 公開変更の通知 - -通常の push がデプロイされた後、Pages ワークフローはビルドした sitemap の正規 URLs を [IndexNow](https://www.indexnow.org/documentation) に通知します。毎日のバッジ更新では通知を行いません。今回の移行は全5ページを変更します。大きなディレクトリでは、変更ページだけを送信してください。Google は Search Console と通常のクロールを使います。IndexNow 経由で Google に送信することはありません。 - -このプロジェクトは `indexnow-key.txt` をホストし、その正確な `keyLocation` を提供します。これにより所有権の範囲を `/harness-library/` に限定し、共有ホストの無関係なプロジェクトを避けます。キーはプロトコルの検証のため公開配信する必要があり、ウェブマスターアカウントの認証情報ではありません。ログイン、有料サービス、追加の依存関係は不要です。API が一時的に失敗しても、成功したサイトのデプロイは取り消されません。 - -ワークフロー外で意図的に内容を更新する場合は、先にビルドし、`python scripts/notify_indexnow.py --dry-run` で URL 一覧を確認するか、`python scripts/notify_indexnow.py` で送信します。HTTP 200 は受信済み、HTTP 202 は受信済みでキー検証待ちを意味します。どちらもインデックス登録や順位を証明しません。内容が変わっていないときは、繰り返し送信しないでください。 +- [ToolIndex](https://toolindex.org/) +- [submit/](https://toolindex.org/submit/) +- [sitemap.xml](https://toolindex.org/sitemap.xml) +- [llms.txt](https://toolindex.org/llms.txt) +- [llms-full.txt](https://toolindex.org/llms-full.txt) +- [catalog.json](https://toolindex.org/catalog.json) -## GitHub Pages と robots.txt +## Google Cloud ホスティング -robots ルールは `/harness-library/robots.txt` ではなく、**ホストのルート** `https://openrootdev.github.io/robots.txt` から読み込まれます。プロジェクト内のファイルでは共有ホストのクロールを制御できません。プロジェクトのファイルは現在の sitemap の参照先を示すだけです。ウェブマスターのアカウントから sitemap を送信してください。 +Cloud Run は europe-west1 で最小 0、最大 2 インスタンス、リクエストベース課金を使用します。Firebase Hosting が HTTPS と転送を提供します。DNS は GitHub Pages ではなく Firebase Hosting のレコードで設定します。準備スクリプトは公開出力とコンテナー設定だけをコピーします。表示されたパスを PUBLIC_CONTEXT に使用してください。デプロイには承認済みの Google Cloud と Firebase CLI アクセスが必要です。 -所有者が後にルートサイト用リポジトリや独自ドメインを追加する場合、制限をデプロイする前に権威ある robots ファイルを確認してください。同じホストの他のプロジェクトのルールを軽率に変えないでください。 +```sh +python scripts/stage_cloudrun.py +gcloud run deploy toolindex --source PUBLIC_CONTEXT --project toolindex-org --region europe-west1 --min 0 --max 2 --min-instances 0 --max-instances 2 --cpu-throttling --memory 512Mi --execution-environment gen2 --service-account toolindex-runtime@toolindex-org.iam.gserviceaccount.com --build-service-account projects/toolindex-org/serviceAccounts/toolindex-build@toolindex-org.iam.gserviceaccount.com --allow-unauthenticated +firebase deploy --only hosting --project toolindex-org +``` -## 組織への移行 +[Google Cloud](https://toolindex-org.web.app/) · [Firebase Hosting + Cloud Run](https://firebase.google.com/docs/hosting/cloud-run) -リポジトリとディレクトリは、2026 年 10 月 10 日に [Kaelux Labs](https://github.com/OpenRootdev/harness-library) へ移行しました。GitHub は古いリポジトリ URL をリダイレクトします。小さな[アカウントの Pages リポジトリ](https://github.com/Ker102/ker102.github.io)が、即時リダイレクトと正規リンクにより古いディレクトリページを維持し、既存のバッジ画像も引き続き配信します。そのホストルートの `robots.txt` はクロールを許可し、現在の sitemap にリンクします。 +## 検索エンジン -旧 URL または現在のディレクトリ URL を使う既存のバッジリンクも引き続き対象です。リンクを変更しても既存の 14 日間のブーストは再開始しません。元の記録の日付が引き続き基準です。 +所有者が提供した検証ファイルで toolindex.org の URL プレフィックスプロパティを確認し、Search Console と Bing Webmaster Tools に sitemap.xml を送信します。検証トークンを推測せず、送信をインデックス登録の証拠と扱わないでください。ルート robots.txt はクロールを許可します。IndexNow 通知は任意で、対応する所有権ファイルとページの公開後にだけ送信します。 -## エージェントによる発見 +[Search Console](https://search.google.com/search-console) · [Bing Webmaster Tools](https://www.bing.com/webmasters/) · [IndexNow](https://www.indexnow.org/documentation) -エージェントは通常の HTML、JSON カタログ、Markdown ミラーを利用できます。`llms.txt` は利便性のための提案であり、Google のランキング要因でも必須条件でもありません。Google は、AI 検索機能も通常の検索と同じ基本的な SEO 手法を使うと説明しています。クロール可能なテキスト、明確なページリンク、正確な証拠、有用な内容が重要です。どの設定も掲載や引用を保証しません。 +## 互換性とレビュー -一次資料:[Google JavaScript SEO](https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics)、[sitemaps](https://developers.google.com/search/docs/crawling-indexing/sitemaps/build-sitemap)、[robots 仕様](https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec)、[AI 機能](https://developers.google.com/search/docs/appearance/ai-features)、[llms.txt 提案](https://llmstxt.org/)。 +旧 /harnesses/ ページは /tools/ にリダイレクトします。以前のバッジ URL とラベルも認識し、一度限りの 14 日間の優遇期間をリセットしません。GitHub は以前のリポジトリを OpenRootdev/toolindex に転送します。レビュー記録は限定された証拠です。CI は提出ツールのコードを実行せず、その依存関係もインストールしません。 diff --git a/docs/i18n/manifest.json b/docs/i18n/manifest.json index 55114d2..3a649bb 100644 --- a/docs/i18n/manifest.json +++ b/docs/i18n/manifest.json @@ -1,7 +1,7 @@ { "schema_version": 1, "source_language": "en", - "canonical_repository": "https://github.com/OpenRootdev/harness-library", + "canonical_repository": "https://github.com/OpenRootdev/toolindex", "hash_algorithm": "sha256", "hash_normalization": "UTF-8 text with CRLF normalized to LF; no other whitespace normalization", "locales": [ @@ -76,153 +76,153 @@ ], "untranslated_historical_materials": [], "inventory_notes": [ - "Four maintained public Markdown sources exist in this checkout. Submission and review guidance is in CONTRIBUTING.md; no separate SECURITY.md, quickstart, review or reference guide exists.", - "Source URLs, including legacy Ker102 links in CONTRIBUTING.md and migration history, are preserved exactly. Canonical repository identity is Kaelux-Labs/harness-library.", - "Complete means a full source-equivalent mirror with all sections and policy limitations, not an independently certified native-speaker review. The local validator cannot prove prose equivalence.", - "No authored historical Markdown materials were found in the public source scope at inventory time. Generated dist Markdown is explicitly excluded." + "Four maintained public Markdown sources are mirrored in all six locales.", + "ToolIndex uses Google Cloud Run and Firebase Hosting; source repository is OpenRootdev/toolindex. Legacy badge hosts remain accepted without resetting grants.", + "Overview and discovery mirrors were rewritten for the broader tool scope and Google Cloud deployment. Preservation checks do not independently certify native-language prose.", + "Local plans, cloud receipts, generated builds and private workspace data are excluded." ], "sources": [ { "path": "README.md", - "sha256": "f5d96bdf083e8e904991323cad186b4af6d4e55dbd2d36b4d091e967c9cc15b7", + "sha256": "c6350354d4e3df143a1b7000ff8028bc6a3a5e4977185858533616d39df82f09", "mirrors": { "es": { "path": "docs/i18n/es/README.md", "status": "complete", - "source_sha256": "f5d96bdf083e8e904991323cad186b4af6d4e55dbd2d36b4d091e967c9cc15b7" + "source_sha256": "c6350354d4e3df143a1b7000ff8028bc6a3a5e4977185858533616d39df82f09" }, "zh-CN": { "path": "docs/i18n/zh-CN/README.md", "status": "complete", - "source_sha256": "f5d96bdf083e8e904991323cad186b4af6d4e55dbd2d36b4d091e967c9cc15b7" + "source_sha256": "c6350354d4e3df143a1b7000ff8028bc6a3a5e4977185858533616d39df82f09" }, "fr": { "path": "docs/i18n/fr/README.md", "status": "complete", - "source_sha256": "f5d96bdf083e8e904991323cad186b4af6d4e55dbd2d36b4d091e967c9cc15b7" + "source_sha256": "c6350354d4e3df143a1b7000ff8028bc6a3a5e4977185858533616d39df82f09" }, "ja": { "path": "docs/i18n/ja/README.md", "status": "complete", - "source_sha256": "f5d96bdf083e8e904991323cad186b4af6d4e55dbd2d36b4d091e967c9cc15b7" + "source_sha256": "c6350354d4e3df143a1b7000ff8028bc6a3a5e4977185858533616d39df82f09" }, "de": { "path": "docs/i18n/de/README.md", "status": "complete", - "source_sha256": "f5d96bdf083e8e904991323cad186b4af6d4e55dbd2d36b4d091e967c9cc15b7" + "source_sha256": "c6350354d4e3df143a1b7000ff8028bc6a3a5e4977185858533616d39df82f09" }, "pt-BR": { "path": "docs/i18n/pt-BR/README.md", "status": "complete", - "source_sha256": "f5d96bdf083e8e904991323cad186b4af6d4e55dbd2d36b4d091e967c9cc15b7" + "source_sha256": "c6350354d4e3df143a1b7000ff8028bc6a3a5e4977185858533616d39df82f09" } } }, { "path": "CONTRIBUTING.md", - "sha256": "aac43540db27f3fcb8c05612bb97ff90462b8054a6fb1778daba77b6378baf11", + "sha256": "56bc0e093592f16476f7db117a308b7a44e11950035ade64c150b27ec4e3d93b", "mirrors": { "es": { "path": "docs/i18n/es/CONTRIBUTING.md", "status": "complete", - "source_sha256": "aac43540db27f3fcb8c05612bb97ff90462b8054a6fb1778daba77b6378baf11" + "source_sha256": "56bc0e093592f16476f7db117a308b7a44e11950035ade64c150b27ec4e3d93b" }, "zh-CN": { "path": "docs/i18n/zh-CN/CONTRIBUTING.md", "status": "complete", - "source_sha256": "aac43540db27f3fcb8c05612bb97ff90462b8054a6fb1778daba77b6378baf11" + "source_sha256": "56bc0e093592f16476f7db117a308b7a44e11950035ade64c150b27ec4e3d93b" }, "fr": { "path": "docs/i18n/fr/CONTRIBUTING.md", "status": "complete", - "source_sha256": "aac43540db27f3fcb8c05612bb97ff90462b8054a6fb1778daba77b6378baf11" + "source_sha256": "56bc0e093592f16476f7db117a308b7a44e11950035ade64c150b27ec4e3d93b" }, "ja": { "path": "docs/i18n/ja/CONTRIBUTING.md", "status": "complete", - "source_sha256": "aac43540db27f3fcb8c05612bb97ff90462b8054a6fb1778daba77b6378baf11" + "source_sha256": "56bc0e093592f16476f7db117a308b7a44e11950035ade64c150b27ec4e3d93b" }, "de": { "path": "docs/i18n/de/CONTRIBUTING.md", "status": "complete", - "source_sha256": "aac43540db27f3fcb8c05612bb97ff90462b8054a6fb1778daba77b6378baf11" + "source_sha256": "56bc0e093592f16476f7db117a308b7a44e11950035ade64c150b27ec4e3d93b" }, "pt-BR": { "path": "docs/i18n/pt-BR/CONTRIBUTING.md", "status": "complete", - "source_sha256": "aac43540db27f3fcb8c05612bb97ff90462b8054a6fb1778daba77b6378baf11" + "source_sha256": "56bc0e093592f16476f7db117a308b7a44e11950035ade64c150b27ec4e3d93b" } } }, { "path": "docs/badge-program.md", - "sha256": "4ab3384b13ab23e07d1d6e79778ca1b9cfb89ac1e97e40f64f326b3bf58f7a60", + "sha256": "15fdcc0898f18d5174f18f8c13351b8a7048a826287fa599707fe0f623bf5d18", "mirrors": { "es": { "path": "docs/i18n/es/docs/badge-program.md", "status": "complete", - "source_sha256": "4ab3384b13ab23e07d1d6e79778ca1b9cfb89ac1e97e40f64f326b3bf58f7a60" + "source_sha256": "15fdcc0898f18d5174f18f8c13351b8a7048a826287fa599707fe0f623bf5d18" }, "zh-CN": { "path": "docs/i18n/zh-CN/docs/badge-program.md", "status": "complete", - "source_sha256": "4ab3384b13ab23e07d1d6e79778ca1b9cfb89ac1e97e40f64f326b3bf58f7a60" + "source_sha256": "15fdcc0898f18d5174f18f8c13351b8a7048a826287fa599707fe0f623bf5d18" }, "fr": { "path": "docs/i18n/fr/docs/badge-program.md", "status": "complete", - "source_sha256": "4ab3384b13ab23e07d1d6e79778ca1b9cfb89ac1e97e40f64f326b3bf58f7a60" + "source_sha256": "15fdcc0898f18d5174f18f8c13351b8a7048a826287fa599707fe0f623bf5d18" }, "ja": { "path": "docs/i18n/ja/docs/badge-program.md", "status": "complete", - "source_sha256": "4ab3384b13ab23e07d1d6e79778ca1b9cfb89ac1e97e40f64f326b3bf58f7a60" + "source_sha256": "15fdcc0898f18d5174f18f8c13351b8a7048a826287fa599707fe0f623bf5d18" }, "de": { "path": "docs/i18n/de/docs/badge-program.md", "status": "complete", - "source_sha256": "4ab3384b13ab23e07d1d6e79778ca1b9cfb89ac1e97e40f64f326b3bf58f7a60" + "source_sha256": "15fdcc0898f18d5174f18f8c13351b8a7048a826287fa599707fe0f623bf5d18" }, "pt-BR": { "path": "docs/i18n/pt-BR/docs/badge-program.md", "status": "complete", - "source_sha256": "4ab3384b13ab23e07d1d6e79778ca1b9cfb89ac1e97e40f64f326b3bf58f7a60" + "source_sha256": "15fdcc0898f18d5174f18f8c13351b8a7048a826287fa599707fe0f623bf5d18" } } }, { "path": "docs/discovery.md", - "sha256": "739f4a9af9c28d3c57d355ee729e5e2f4946ca29a9ed16baea7aa0f76a4d2a31", + "sha256": "d2dc4c37baef163ce3c2510dd559ea7a145fda430f267b5387c3dace7a88555a", "mirrors": { "es": { "path": "docs/i18n/es/docs/discovery.md", "status": "complete", - "source_sha256": "739f4a9af9c28d3c57d355ee729e5e2f4946ca29a9ed16baea7aa0f76a4d2a31" + "source_sha256": "d2dc4c37baef163ce3c2510dd559ea7a145fda430f267b5387c3dace7a88555a" }, "zh-CN": { "path": "docs/i18n/zh-CN/docs/discovery.md", "status": "complete", - "source_sha256": "739f4a9af9c28d3c57d355ee729e5e2f4946ca29a9ed16baea7aa0f76a4d2a31" + "source_sha256": "d2dc4c37baef163ce3c2510dd559ea7a145fda430f267b5387c3dace7a88555a" }, "fr": { "path": "docs/i18n/fr/docs/discovery.md", "status": "complete", - "source_sha256": "739f4a9af9c28d3c57d355ee729e5e2f4946ca29a9ed16baea7aa0f76a4d2a31" + "source_sha256": "d2dc4c37baef163ce3c2510dd559ea7a145fda430f267b5387c3dace7a88555a" }, "ja": { "path": "docs/i18n/ja/docs/discovery.md", "status": "complete", - "source_sha256": "739f4a9af9c28d3c57d355ee729e5e2f4946ca29a9ed16baea7aa0f76a4d2a31" + "source_sha256": "d2dc4c37baef163ce3c2510dd559ea7a145fda430f267b5387c3dace7a88555a" }, "de": { "path": "docs/i18n/de/docs/discovery.md", "status": "complete", - "source_sha256": "739f4a9af9c28d3c57d355ee729e5e2f4946ca29a9ed16baea7aa0f76a4d2a31" + "source_sha256": "d2dc4c37baef163ce3c2510dd559ea7a145fda430f267b5387c3dace7a88555a" }, "pt-BR": { "path": "docs/i18n/pt-BR/docs/discovery.md", "status": "complete", - "source_sha256": "739f4a9af9c28d3c57d355ee729e5e2f4946ca29a9ed16baea7aa0f76a4d2a31" + "source_sha256": "d2dc4c37baef163ce3c2510dd559ea7a145fda430f267b5387c3dace7a88555a" } } } diff --git a/docs/i18n/pt-BR/CONTRIBUTING.md b/docs/i18n/pt-BR/CONTRIBUTING.md index d505689..29c570a 100644 --- a/docs/i18n/pt-BR/CONTRIBUTING.md +++ b/docs/i18n/pt-BR/CONTRIBUTING.md @@ -1,14 +1,18 @@ # Envie um harness +O ToolIndex inclui qualquer ferramenta que agentes de IA possam usar: skills, servidores MCP, CLIs, APIs, bibliotecas, plugins, fluxos de trabalho e harnesses. Serviços hospedados e ferramentas comerciais são aceitos quando acesso, preços, autenticação e termos estão claros. Cada listagem aponta diretamente para o repositório de origem ou a documentação oficial. + +O logotipo ou uma imagem personalizada são opcionais. Se houver imagem, informe a fonte e o texto alternativo; caso contrário, a listagem mostra iniciais neutras. Escolha o tipo de ferramenta e explique a instalação ou o acesso ao serviço. Fontes fora do GitHub são aceitas; a verificação automática de selos em README atualmente só funciona no GitHub. + **Novos envios são bem-vindos.** Procuramos configurações práticas e reutilizáveis para agentes, incluindo pequenas pastas de habilidades. Harneloop é opcional. O caminho mais simples não exige fork nem pull request: -1. [Abra o formulário de envio no GitHub](https://github.com/Ker102/harness-library/issues/new?template=submit-harness.yml). Informe o repositório, o nome e a tarefa/categoria. +1. [Abra o formulário de envio no GitHub](https://github.com/OpenRootdev/toolindex/issues/new?template=submit-tool.yml). Informe o repositório, o nome e a tarefa/categoria. 2. Explique a instalação, a distribuição específica, a versão/licença e quaisquer conexões manuais. Detalhes adicionais de composição e evidências de testes são opcionais. 3. Os mantenedores revisam sua issue, pedem as informações faltantes nela se necessário e publicam as entradas aprovadas. Alterações posteriores podem ser enviadas em outra issue ou PR. -Você só precisa de uma conta do GitHub para usar o formulário. O [guia do site](https://ker102.github.io/harness-library/submit/) explica o mesmo processo. +Você só precisa de uma conta do GitHub para usar o formulário. O [guia do site](https://toolindex.org/submit/) explica o mesmo processo. Para uma PR, copie `docs/listing.example.json` para `data/listings/your-slug.json`. Use o mesmo slug em letras minúsculas no nome do arquivo e em `id`. Execute `python scripts/catalog.py validate` e os testes descritos no README. diff --git a/docs/i18n/pt-BR/README.md b/docs/i18n/pt-BR/README.md index 6a169be..9b49062 100644 --- a/docs/i18n/pt-BR/README.md +++ b/docs/i18n/pt-BR/README.md @@ -1,54 +1,52 @@ -

Harness Library

-

Harness Library

-

English · Español · 简体中文 · Français · 日本語 · Deutsch · Português (Brasil)

-

Descubra, instale e compartilhe harnesses reutilizáveis para agentes.

-

Explorar a biblioteca · Enviar um harness · Guia de envio

+

ToolIndex

+

ToolIndex

+

English · Español · 简体中文 · Français · 日本語 · Deutsch · Português (Brasil)

+

Ferramentas para agentes de IA. Configuração clara. Links diretos para a origem.

+

toolindex.org · Enviar uma ferramenta

-Um diretório aberto de instruções, habilidades, ferramentas e fluxos de trabalho que ajudam um agente a executar bem uma tarefa específica. Um harness pode consistir em poucos arquivos ou em uma configuração de ferramentas mais ampla. Cada entrada explica como instalá-lo, o que configurar manualmente e qual parte do repositório de origem é necessária. +O ToolIndex é um diretório aberto de skills, servidores MCP, CLIs, APIs, bibliotecas, plugins, fluxos de trabalho e harnesses que agentes de IA podem usar. Pacotes locais, serviços hospedados e ferramentas comerciais são aceitos quando acesso, preços e termos estão claros. -As primeiras entradas são [Smooth Motion Graphics](https://github.com/Ker102/smooth-motion-graphics) e [ViperMesh for Blender](https://github.com/OpenRootdev/vipermesh-blender). O repositório e os lançamentos existentes do ViperMesh são listados sem alterações. Harneloop é opcional; harnesses criados com ele podem exibir essa atribuição após a revisão. +## O que pode entrar -## Veja um harness em ação +Ferramentas úteis para uma tarefa específica, de uma pequena pasta de skills a uma API. Cada listagem aponta diretamente para o repositório de origem ou a documentação oficial e explica instalação ou conexão, configuração manual, licença ou termos, versão e escopo da revisão. -O vídeo explicativo do Harneloop mostra o estilo de animação por trás do [harness Smooth Motion Graphics](https://openrootdev.github.io/harness-library/harnesses/smooth-motion-graphics/) da biblioteca: cenas legíveis, conexões curvas e transições suaves. Ele também explica como o Harneloop constrói e melhora unidades de harness. +## Enviar uma ferramenta -

Assista à demonstração silenciosa de motion graphics do Harneloop

-

Assista ao vídeo completo · 3:40 · Sem som, com explicações na tela

+1. Abra o formulário do GitHub com nome, tipo, origem e finalidade da ferramenta. +2. Descreva o pacote ou serviço, instalação ou acesso, versão, licença ou termos, credenciais necessárias e custos. Nunca envie segredos. +3. O logotipo ou uma imagem personalizada são opcionais. Se houver imagem, informe URL, fonte e texto alternativo; caso contrário, são exibidas iniciais neutras. +4. Os mantenedores revisam e publicam as propostas aprovadas. Não é necessário fork, pull request ou conta do ToolIndex; o formulário requer uma conta do GitHub. -O vídeo é hospedado separadamente. Acesse o pacote de instalação do próprio harness e seu renderizador de exemplo pela entrada correspondente. +[CONTRIBUTING.md](CONTRIBUTING.md) · [JSON](../../../docs/listing.example.json) -## Envie um harness +## Exemplos revisados -**Novos envios são bem-vindos.** Procuramos harnesses úteis para programação, pesquisa, dados, trabalho criativo, Blender e operações. Algumas habilidades podem ser suficientes; não é necessário usar Harneloop. +Uma skill de animação de marca e um conector MCP para Blender demonstram dois tipos aceitos. O código e as versões continuam nos próprios repositórios. -1. [Abra o formulário curto de envio no GitHub](https://github.com/OpenRootdev/harness-library/issues/new?template=submit-harness.yml) e informe seu repositório e a tarefa que ele ajuda um agente a realizar. -2. Inclua passos claros de instalação, categoria, licença, escopo de versão/distribuição e qualquer configuração manual. Contagens de componentes e evidências de testes são opcionais. -3. Um mantenedor revisa a configuração, pede esclarecimentos na sua issue se necessário e publica as entradas aprovadas. +- [Smooth Motion Graphics](https://toolindex.org/tools/smooth-motion-graphics/) +- [ViperMesh for Blender](https://toolindex.org/tools/vipermesh-blender/) -**Não é necessário fazer fork, abrir pull request ou ter uma conta do Harness Library.** O formulário exige uma conta do GitHub. Você também pode enviar uma PR adicionando um arquivo JSON a `data/listings/`. Veja o [guia público de envio](https://openrootdev.github.io/harness-library/submit/), [CONTRIBUTING.md](CONTRIBUTING.md) e [o modelo](../../../docs/listing.example.json). +## Compilar e visualizar -Um repositório com conteúdo misto deve fornecer um pacote específico ou uma branch dedicada ao harness. Quem envia não define rótulos de verificação ou promoção. Os mantenedores revisam configuração, escopo e eventuais evidências antes de publicar a entrada. “Artifacts checked” significa que os artefatos documentados foram inspecionados; não implica que todos os modelos, plataformas ou casos de uso funcionem. - -## Programa gratuito de badges - -Adicione o badge exato “Listed in Harness Library” e o link de retorno à entrada nas primeiras 30 linhas do README de origem. Após a verificação, sua entrada recebe **um único destaque comunitário de 14 dias**, claramente identificado no diretório. O destaque afeta a ordenação, não o status da revisão. É gratuito, opcional e expira automaticamente. Remover e adicionar novamente o badge não reinicia o período. [Política e verificação](docs/badge-program.md). - -## Desenvolvimento - -Não são necessárias dependências de frontend nem um serviço de backend. Python 3.11+ executa o validador e o gerador; a interface usa HTML, CSS e JavaScript simples. +Python 3.11+ gera o site estático. A interface usa HTML, CSS e JavaScript; a busca melhora páginas que continuam legíveis sem JavaScript. ```sh python scripts/catalog.py validate python -m unittest discover -s tests -v python scripts/catalog.py build -python -c "import shutil; shutil.copytree('dist', '.preview/harness-library', dirs_exist_ok=True)" -python -m http.server 4201 --directory .preview +python -m http.server 4201 --directory dist ``` -Abra `http://localhost:4201/harness-library/`. A cópia de prévia serve corretamente o caminho base de produção; atualize-a após uma nova geração. Os caminhos de recursos e navegação correspondem intencionalmente à URL do projeto no GitHub Pages. +`http://localhost:4201/` + +## Hospedagem no Google Cloud + +O Cloud Run serve o site com mínimo de 0 instâncias, máximo de 2 e cobrança por solicitação. O Firebase Hosting cuida do HTTPS do domínio e encaminha solicitações ao Cloud Run. A preparação do contexto público exclui arquivos privados do workspace. A ativação do domínio depende do DNS e do certificado. + +`python scripts/stage_cloudrun.py` · [`firebase.json`](../../../firebase.json) · [docs/discovery.md](docs/discovery.md) -`site/layout.html`, `site/style.css` e `scripts/publishing.py` geram páginas HTML completas para o diretório, cada harness, o guia de envio e a página sobre o projeto. JavaScript adiciona progressivamente busca, filtros e cópia; o conteúdo de instalação e a navegação continuam utilizáveis sem ele. As gerações também publicam um sitemap, espelhos Markdown das páginas, `llms.txt` e o catálogo JSON revisado. Veja [Descoberta e indexação](docs/discovery.md) para a configuração do proprietário e os detalhes de rastreamento. +## Revisões e selos comunitários -`python scripts/catalog.py refresh` verifica os badges de quem optou por participar lendo o conteúdo público dos READMEs no GitHub. Ele nunca executa código enviado. GitHub Pages publica a branch main revisada; um fluxo de trabalho diário atualiza os registros dos badges e gera o site novamente. As verificações de PRs externas têm permissões somente de leitura. +As revisões de configuração e artefatos descrevem evidências específicas, não compatibilidade universal. Um selo opcional permite um destaque comunitário transparente de 14 dias. A atribuição ao Harneloop é opcional; nenhum framework é obrigatório. -Os dados de origem e os registros de revisão ficam neste repositório. O código-fonte dos harnesses e os recursos de seus lançamentos ficam nos respectivos repositórios. Nenhum vídeo, dependência ou registro privado de desenvolvimento de harnesses é instalado com o framework do Harneloop. +[docs/badge-program.md](docs/badge-program.md) diff --git a/docs/i18n/pt-BR/docs/badge-program.md b/docs/i18n/pt-BR/docs/badge-program.md index 135f0a9..621221e 100644 --- a/docs/i18n/pt-BR/docs/badge-program.md +++ b/docs/i18n/pt-BR/docs/badge-program.md @@ -1,4 +1,4 @@ -# Listed in Harness Library: destaque comunitário gratuito de 14 dias +# Listed in ToolIndex: destaque comunitário gratuito de 14 dias O programa recompensa colaboradores que facilitam a descoberta de harnesses reutilizáveis. Não há pagamento nem obrigação de usar Harneloop. @@ -9,12 +9,12 @@ O programa recompensa colaboradores que facilitam a descoberta de harnesses reut Exemplo: ```md -[![Listed in Harness Library](https://openrootdev.github.io/harness-library/badges/your-slug.svg)](https://openrootdev.github.io/harness-library/harnesses/your-slug/) +[![Listed in ToolIndex](https://toolindex.org/badges/your-slug.svg)](https://toolindex.org/tools/your-slug/) ``` -São aceitos o Markdown exato ou uma imagem HTML vinculada equivalente. O texto alternativo da imagem deve ser “Listed in Harness Library”. Exemplos dentro de blocos de código ou comentários HTML não se qualificam. +São aceitos o Markdown exato ou uma imagem HTML vinculada equivalente. O texto alternativo da imagem deve ser “Listed in ToolIndex”. Exemplos dentro de blocos de código ou comentários HTML não se qualificam. -Links de retorno emitidos anteriormente, `https://openrootdev.github.io/harness-library/#your-slug`, continuam válidos e levam à página correspondente. Use a URL real da página para novos badges. +Links de retorno emitidos anteriormente, `https://toolindex.org/#your-slug`, continuam válidos e levam à página correspondente. Use a URL real da página para novos badges. Entradas ativas aparecem antes das entradas comuns e, dentro de cada grupo, em ordem alfabética. Os filtros de busca e categoria continuam aplicáveis. O diretório exibe o rótulo **Community boost** e sua expiração na página de detalhes. Isso é posicionamento promocional; o status de revisão e as afirmações de qualidade permanecem independentes. @@ -24,4 +24,8 @@ Se o GitHub ficar temporariamente indisponível, nenhum novo destaque será conc O badge pode permanecer após a expiração. Uma nova política seria discutida publicamente; não há promoção recorrente oculta nem ranking pago. -Badges emitidos antes da migração para Kaelux Labs em `https://ker102.github.io/harness-library/` continuam válidos. A migração não reinicia a janela original de 14 dias. Atualize tanto a imagem quanto o link de retorno para o novo endereço canônico quando for conveniente. +Badges emitidos antes da migração para Kaelux Labs em `https://toolindex.org/` continuam válidos. A migração não reinicia a janela original de 14 dias. Atualize tanto a imagem quanto o link de retorno para o novo endereço canônico quando for conveniente. + +O ToolIndex inclui qualquer ferramenta que agentes de IA possam usar: skills, servidores MCP, CLIs, APIs, bibliotecas, plugins, fluxos de trabalho e harnesses. Serviços hospedados e ferramentas comerciais são aceitos quando acesso, preços, autenticação e termos estão claros. Cada listagem aponta diretamente para o repositório de origem ou a documentação oficial. + +O logotipo ou uma imagem personalizada são opcionais. Se houver imagem, informe a fonte e o texto alternativo; caso contrário, a listagem mostra iniciais neutras. Escolha o tipo de ferramenta e explique a instalação ou o acesso ao serviço. Fontes fora do GitHub são aceitas; a verificação automática de selos em README atualmente só funciona no GitHub. diff --git a/docs/i18n/pt-BR/docs/discovery.md b/docs/i18n/pt-BR/docs/discovery.md index 4ff574e..945bb6d 100644 --- a/docs/i18n/pt-BR/docs/discovery.md +++ b/docs/i18n/pt-BR/docs/discovery.md @@ -1,51 +1,34 @@ -# Descoberta e indexação +# Descoberta e implantação -Endereços atuais desde `2026-10-20`: [OpenRootdev/harness-library](https://github.com/OpenRootdev/harness-library) e o [diretório](https://openrootdev.github.io/harness-library/). As notas históricas abaixo descrevem a mudança anterior. - -O diretório público publica HTML completo em URLs estáveis. Mecanismos de busca, navegadores com JavaScript desativado e agentes podem ler diretamente a instalação, os pré-requisitos, a origem, a distribuição e o escopo de revisão de cada harness aprovado. JavaScript apenas melhora a filtragem, a cópia e a navegação antiga por fragmentos de URL. +O ToolIndex publica HTML completo, espelhos Markdown e um catálogo JSON revisado. Buscadores e agentes podem ler instalação ou acesso, origem, licenças e escopo da revisão sem JavaScript. ## Recursos públicos -- [Diretório](https://openrootdev.github.io/harness-library/) e [guia de envio](https://openrootdev.github.io/harness-library/submit/). -- [Sitemap](https://openrootdev.github.io/harness-library/sitemap.xml): apenas páginas HTML canônicas. As verificações diárias de badges não inventam datas de modificação do conteúdo. -- [llms.txt](https://openrootdev.github.io/harness-library/llms.txt): um guia compacto com links para páginas de instalação em Markdown e dados. -- [llms-full.txt](https://openrootdev.github.io/harness-library/llms-full.txt): texto público combinado. -- [catalog.json](https://openrootdev.github.io/harness-library/catalog.json): entradas revisadas, URLs canônicas de páginas, instalação, configuração manual e evidências com escopo definido. -- Cada página HTML canônica tem um `index.md` correspondente, vinculado com `rel="alternate" type="text/markdown"`. - -Cada página HTML tem título, descrição e URL canônica exclusivos, metadados de prévia social e JSON-LD correspondente. Os dados estruturados descrevem o diretório, o mantenedor e os harnesses reais; não inventam avaliações, downloads ou compatibilidade universal. Caminhos desconhecidos retornam o status 404 do GitHub Pages usando a página de erro noindex. Links antigos de entradas com fragmentos continuam compatíveis. - -## Configuração do proprietário - -1. Adicione uma **propriedade de prefixo de URL** para `https://openrootdev.github.io/harness-library/` no [Google Search Console](https://search.google.com/search-console). Isso limita a propriedade ao projeto. Use o método de verificação fornecido para sua conta; um arquivo HTML de verificação pode ser colocado em `site/` quando seu nome e conteúdo exatos forem fornecidos. -2. Envie `sitemap.xml` nessa propriedade. Inspecione as URLs da página inicial, do guia de envio e dos harnesses; solicite indexação quando a ferramenta oferecer essa opção. Um envio é uma indicação para descoberta, não uma promessa de indexação. -3. Adicione o mesmo site ao [Bing Webmaster Tools](https://www.bing.com/webmasters/) e envie o sitemap. Se a conta oferecer importação do Google Search Console, a propriedade verificada poderá ser reutilizada. -4. Consulte novamente os relatórios de indexação após a implantação. Corrija problemas de rastreamento ou conteúdo com base em evidências. Não trate uma busca `site:` ou uma pontuação do Lighthouse como prova de cobertura de indexação ou posicionamento. - -A verificação exige a conta do proprietário ou o artefato de verificação fornecido por ela. Não publique tokens de verificação presumidos. Se um arquivo HTML de verificação for adicionado, mantenha-o fora do sitemap e preserve-o nas gerações. - -## Notificações de alterações publicadas - -Depois que um push normal é implantado, o fluxo de trabalho do Pages notifica o [IndexNow](https://www.indexnow.org/documentation) com as URLs canônicas do sitemap gerado. As atualizações diárias de badges ignoram essa notificação. Esta migração altera todas as cinco páginas; para um diretório maior, limite os envios às páginas alteradas. O Google usa Search Console e rastreamento comum; não são feitos envios ao Google pelo IndexNow. - -O projeto hospeda `indexnow-key.txt` e fornece seu `keyLocation` exato. Isso limita a propriedade a `/harness-library/`, evitando projetos sem relação no host compartilhado. A chave precisa ser servida publicamente para a verificação do protocolo; ela não é uma credencial de conta de webmaster. Não é necessário login, serviço pago ou dependência adicional. Uma falha temporária da API não reverte uma implantação bem-sucedida do site. - -Para uma atualização intencional de conteúdo fora do fluxo de trabalho, gere primeiro o site e execute `python scripts/notify_indexnow.py --dry-run` para inspecionar a lista de URLs, ou `python scripts/notify_indexnow.py` para enviá-la. HTTP 200 significa recebido; HTTP 202 significa recebido com validação da chave pendente. Nenhum dos dois comprova indexação ou posicionamento. Evite envios repetidos quando o conteúdo não mudou. +- [ToolIndex](https://toolindex.org/) +- [submit/](https://toolindex.org/submit/) +- [sitemap.xml](https://toolindex.org/sitemap.xml) +- [llms.txt](https://toolindex.org/llms.txt) +- [llms-full.txt](https://toolindex.org/llms-full.txt) +- [catalog.json](https://toolindex.org/catalog.json) -## GitHub Pages e robots.txt +## Hospedagem no Google Cloud -As regras de robots são lidas na **raiz do host**, `https://openrootdev.github.io/robots.txt`, e não em `/harness-library/robots.txt`. Um arquivo local do projeto não controla o rastreamento do host compartilhado. O arquivo do projeto apenas indica o sitemap atual. Envie o sitemap pelas contas de webmaster. +O Cloud Run serve o site em europe-west1 com mínimo de 0 instâncias, máximo de 2 e cobrança por solicitação. O Firebase Hosting fornece HTTPS e encaminha solicitações. Configure DNS pelo Firebase Hosting, não pelo GitHub Pages. O script prepara apenas conteúdo público e configuração do contêiner; use o caminho impresso em PUBLIC_CONTEXT. A implantação exige acesso autorizado às CLI do Google Cloud e Firebase. -Se o proprietário adicionar depois um repositório do site raiz ou um domínio personalizado, confira o arquivo robots autoritativo antes de implantar restrições. Nunca altere levianamente as regras de outros projetos no mesmo host. +```sh +python scripts/stage_cloudrun.py +gcloud run deploy toolindex --source PUBLIC_CONTEXT --project toolindex-org --region europe-west1 --min 0 --max 2 --min-instances 0 --max-instances 2 --cpu-throttling --memory 512Mi --execution-environment gen2 --service-account toolindex-runtime@toolindex-org.iam.gserviceaccount.com --build-service-account projects/toolindex-org/serviceAccounts/toolindex-build@toolindex-org.iam.gserviceaccount.com --allow-unauthenticated +firebase deploy --only hosting --project toolindex-org +``` -## Migração para a organização +[Google Cloud](https://toolindex-org.web.app/) · [Firebase Hosting + Cloud Run](https://firebase.google.com/docs/hosting/cloud-run) -O repositório e o diretório foram transferidos para [Kaelux Labs](https://github.com/OpenRootdev/harness-library) em 10 de outubro de 2026. O GitHub redireciona a URL antiga do repositório. Um pequeno [repositório Pages da conta](https://github.com/Ker102/ker102.github.io) preserva as páginas antigas do diretório com redirecionamentos instantâneos e links canônicos, e continua servindo as imagens dos badges existentes. Seu `robots.txt` na raiz do host permite o rastreamento e inclui um link para o sitemap atual. +## Buscadores -Links de retorno de badges que usem a URL antiga ou a atual do diretório continuam elegíveis. Alterar esses links não reinicia um destaque existente de 14 dias; as datas do registro original continuam autoritativas. +Verifique a propriedade de prefixo URL de toolindex.org com o arquivo fornecido pelo proprietário e envie sitemap.xml ao Search Console e Bing Webmaster Tools. Não invente tokens nem trate o envio como prova de indexação. O robots.txt raiz permite rastreamento. Notificações IndexNow são opcionais e só são enviadas quando o arquivo de propriedade e as páginas correspondentes estão publicados. -## Descoberta por agentes +[Search Console](https://search.google.com/search-console) · [Bing Webmaster Tools](https://www.bing.com/webmasters/) · [IndexNow](https://www.indexnow.org/documentation) -Agentes podem usar HTML comum, o catálogo JSON ou espelhos Markdown. `llms.txt` é uma proposta de conveniência, não um fator de posicionamento do Google nem uma exigência. O Google afirma que seus recursos de busca com IA usam as mesmas práticas fundamentais de SEO da busca comum. Texto rastreável, links claros de páginas, evidências precisas e conteúdo útil importam; nenhuma configuração garante inclusão ou citações. +## Compatibilidade e revisão -Referências primárias: [Google JavaScript SEO](https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics), [sitemaps](https://developers.google.com/search/docs/crawling-indexing/sitemaps/build-sitemap), [especificação de robots](https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec), [recursos de IA](https://developers.google.com/search/docs/appearance/ai-features), [proposta llms.txt](https://llmstxt.org/). +Páginas antigas /harnesses/ redirecionam para /tools/. URLs e rótulos originais dos selos continuam aceitos sem reiniciar o destaque único de 14 dias. O GitHub redireciona o repositório anterior para OpenRootdev/toolindex. Revisões continuam sendo evidências limitadas. A CI nunca executa código de ferramentas enviadas nem instala suas dependências. diff --git a/docs/i18n/zh-CN/CONTRIBUTING.md b/docs/i18n/zh-CN/CONTRIBUTING.md index e96d83d..ac541e9 100644 --- a/docs/i18n/zh-CN/CONTRIBUTING.md +++ b/docs/i18n/zh-CN/CONTRIBUTING.md @@ -1,14 +1,18 @@ # 提交 harness +ToolIndex 收录 AI 智能体可使用的各种工具:技能、MCP 服务器、CLI、API、库、插件、工作流和 harness。托管服务和商业工具也可提交,但必须说明访问方式、价格、身份验证和使用条款。每个条目都直接链接到源代码仓库或官方文档。 + +标志或自定义图片是可选的。如提供图片,请附上来源和替代文本;否则条目会显示中性的名称首字母。请选择工具类型,并说明安装或服务访问步骤。允许 GitHub 以外的来源;目前只有 GitHub README 支持自动徽章检查。 + **欢迎提交新条目。** 我们希望收录实用、可复用的智能体配置,包括小型技能文件夹。Harneloop 并非必需。 最简单的提交方式不需要 fork 或 pull request: -1. [打开 GitHub 提交表单](https://github.com/Ker102/harness-library/issues/new?template=submit-harness.yml)。提供仓库、名称和任务/类别。 +1. [打开 GitHub 提交表单](https://github.com/OpenRootdev/toolindex/issues/new?template=submit-tool.yml)。提供仓库、名称和任务/类别。 2. 说明安装方法、专门的分发内容、版本/许可证和手动连接要求。额外的组成细节和测试证据为可选内容。 3. 维护者审核你的 issue,必要时在其中要求补充信息,并发布获批条目。后续变更可以通过另一个 issue 或 PR 提交。 -使用表单只需要 GitHub 账号。[网站指南](https://ker102.github.io/harness-library/submit/) 说明了相同流程。 +使用表单只需要 GitHub 账号。[网站指南](https://toolindex.org/submit/) 说明了相同流程。 如使用 PR,将 `docs/listing.example.json` 复制为 `data/listings/your-slug.json`。文件名与 `id` 必须使用相同的小写 slug。运行 `python scripts/catalog.py validate` 以及 README 中说明的测试。 diff --git a/docs/i18n/zh-CN/README.md b/docs/i18n/zh-CN/README.md index f0c8a86..8439493 100644 --- a/docs/i18n/zh-CN/README.md +++ b/docs/i18n/zh-CN/README.md @@ -1,54 +1,52 @@ -

Harness Library

-

Harness Library

-

English · Español · 简体中文 · Français · 日本語 · Deutsch · Português (Brasil)

-

发现、安装并分享可复用的智能体 harness。

-

浏览库目录 · 提交 harness · 提交指南

+

ToolIndex

+

ToolIndex

+

English · Español · 简体中文 · Français · 日本語 · Deutsch · Português (Brasil)

+

面向 AI 智能体的工具。清晰的设置说明。直接链接来源。

+

toolindex.org · 提交工具

-这是一个开放目录,收录帮助智能体完成特定任务的指令、技能、工具和工作流。harness 可以只是几个文件,也可以是一套更完整的工具配置。每个条目都说明安装方式、需要手动配置的内容,以及所需的源代码仓库范围。 +ToolIndex 是开放的 AI 智能体工具目录,收录技能、MCP 服务器、CLI、API、库、插件、工作流和 harness。只要明确说明访问方式、价格和条款,本地软件包、托管服务与商业工具均可提交。 -首批条目为 [Smooth Motion Graphics](https://github.com/Ker102/smooth-motion-graphics) 和 [ViperMesh for Blender](https://github.com/OpenRootdev/vipermesh-blender)。ViperMesh 的现有仓库和发布版本保持不变。Harneloop 并非必需;使用它构建的 harness 可在审核后展示相关署名。 +## 收录范围 -## 查看 harness 的实际效果 +适用于具体任务的实用工具,从小型技能文件夹到服务 API。每个条目直接链接到源代码仓库或官方文档,并说明安装或连接方式、手动设置、许可证或条款、版本和审核范围。 -Harneloop 讲解视频展示了库中 [Smooth Motion Graphics harness](https://openrootdev.github.io/harness-library/harnesses/smooth-motion-graphics/) 的动画风格:清晰易读的场景、曲线连接和舒缓的过渡。视频也解释了 Harneloop 如何构建和改进 harness 单元。 +## 提交工具 -

观看无声的 Harneloop 动态图形演示

-

观看完整视频 · 3:40 · 无声,附屏幕文字讲解

+1. 打开 GitHub 表单,填写工具名称、类型、来源和用途。 +2. 说明软件包或服务、安装或访问步骤、版本、许可证或条款、所需凭据及费用。切勿提交秘密信息。 +3. 标志或自定义图片是可选的。提供图片时应附上 URL、来源和替代文本;否则显示中性的名称首字母。 +4. 维护者审核后发布获批条目。不需要 fork、pull request 或 ToolIndex 账号;使用表单需要 GitHub 账号。 -视频单独托管。请从对应条目查看 harness 自身的安装包和示例渲染器。 +[CONTRIBUTING.md](CONTRIBUTING.md) · [JSON](../../../docs/listing.example.json) -## 提交 harness +## 已审核示例 -**欢迎提交新条目。** 我们希望收录适用于编程、研究、数据、创作、Blender 和运维的实用 harness。几个技能也可能足够;不要求使用 Harneloop。 +品牌动画技能和 Blender MCP 连接器展示两种可收录的工具类型。源码与发布版本仍保留在各自仓库。 -1. [打开简短的 GitHub 提交表单](https://github.com/OpenRootdev/harness-library/issues/new?template=submit-harness.yml),填写仓库及其帮助智能体完成的任务。 -2. 提供清晰的安装步骤、类别、许可证、版本与分发范围,以及所有手动设置要求。组件数量和测试证据为可选内容。 -3. 维护者审核配置,必要时在你的 issue 中跟进,并发布获批条目。 +- [Smooth Motion Graphics](https://toolindex.org/tools/smooth-motion-graphics/) +- [ViperMesh for Blender](https://toolindex.org/tools/vipermesh-blender/) -**不需要 fork、pull request 或 Harness Library 账号。** 使用表单需要 GitHub 账号。也可以通过 PR 在 `data/listings/` 中添加一个 JSON 文件。参见[公开提交指南](https://openrootdev.github.io/harness-library/submit/)、[CONTRIBUTING.md](CONTRIBUTING.md) 和[模板](../../../docs/listing.example.json)。 +## 构建与预览 -包含混合内容的仓库必须提供专门的安装包或独立的 harness 分支。提交者不能设置验证或推广标签。维护者会在发布条目前审核配置、范围和任何证据。“Artifacts checked”表示已检查文档所列的产物;并不意味着所有模型、平台或使用场景都能正常运行。 - -## 免费徽章计划 - -在源仓库 README 的前 30 行内添加准确的“Listed in Harness Library”徽章及指向条目的回链。验证后,你的条目将获得**一次为期 14 天的社区推广**,并在目录中明确标注。推广影响排序,不影响审核状态。该计划免费、自愿参与,且自动到期。移除再重新添加徽章不会重新开始推广期。参见[政策与验证](docs/badge-program.md)。 - -## 开发 - -无需前端依赖或后端服务。Python 3.11+ 用于运行验证器和构建器;界面使用原生 HTML、CSS 和 JavaScript。 +使用 Python 3.11+ 构建静态站点。前端使用 HTML、CSS 和 JavaScript;搜索是渐进增强功能,禁用 JavaScript 后页面仍可阅读。 ```sh python scripts/catalog.py validate python -m unittest discover -s tests -v python scripts/catalog.py build -python -c "import shutil; shutil.copytree('dist', '.preview/harness-library', dirs_exist_ok=True)" -python -m http.server 4201 --directory .preview +python -m http.server 4201 --directory dist ``` -打开 `http://localhost:4201/harness-library/`。预览副本会正确提供生产环境的基础路径;每次重新构建后请更新副本。资源和导航路径有意与 GitHub Pages 项目 URL 保持一致。 +`http://localhost:4201/` + +## Google Cloud 托管 + +站点由 Cloud Run 提供服务,最小实例数为 0,最大为 2,按请求计费。Firebase Hosting 处理自定义域名 HTTPS 并将请求转发至 Cloud Run。部署准备脚本只包含公开文件,排除工作区私有文件。域名启用仍需完成 DNS 与证书验证。 + +`python scripts/stage_cloudrun.py` · [`firebase.json`](../../../firebase.json) · [docs/discovery.md](docs/discovery.md) -`site/layout.html`、`site/style.css` 和 `scripts/publishing.py` 为目录、每个 harness、提交指南以及关于页面生成完整 HTML 页面。JavaScript 渐进式增强搜索、筛选和复制功能;没有 JavaScript 时,安装内容和导航仍然可用。构建还会发布 sitemap、页面的 Markdown 镜像、`llms.txt` 和经过审核的 JSON 目录。所有者设置及抓取细节请参见[发现与索引](docs/discovery.md)。 +## 审核与社区徽章 -`python scripts/catalog.py refresh` 通过读取 GitHub 上的公开 README 内容,验证自愿参与的徽章。它绝不执行提交的代码。GitHub Pages 发布经过审核的 main 分支;每日工作流刷新徽章记录并重新构建。外部 PR 检查仅有只读权限。 +设置审核与产物检查只描述具体证据,并不保证所有模型或平台兼容。可选徽章提供一次透明的 14 天社区展示提升。Harneloop 署名为可选项,不要求使用特定框架。 -源数据和审核记录保存在本仓库中。harness 源代码及发布资源保存在各自仓库中。Harneloop 框架不会附带安装任何 harness 视频、依赖或私有开发记录。 +[docs/badge-program.md](docs/badge-program.md) diff --git a/docs/i18n/zh-CN/docs/badge-program.md b/docs/i18n/zh-CN/docs/badge-program.md index 533f5e2..8cd3a3f 100644 --- a/docs/i18n/zh-CN/docs/badge-program.md +++ b/docs/i18n/zh-CN/docs/badge-program.md @@ -1,4 +1,4 @@ -# Listed in Harness Library:免费的 14 天社区推广 +# Listed in ToolIndex:免费的 14 天社区推广 此计划奖励帮助人们发现可复用 harness 的贡献者。无需付费,也不要求使用 Harneloop。 @@ -9,12 +9,12 @@ 示例: ```md -[![Listed in Harness Library](https://openrootdev.github.io/harness-library/badges/your-slug.svg)](https://openrootdev.github.io/harness-library/harnesses/your-slug/) +[![Listed in ToolIndex](https://toolindex.org/badges/your-slug.svg)](https://toolindex.org/tools/your-slug/) ``` -支持原样 Markdown 或等效的带链接 HTML 图片。图片替代文本必须为“Listed in Harness Library”。代码围栏或 HTML 注释中的示例不符合资格。 +支持原样 Markdown 或等效的带链接 HTML 图片。图片替代文本必须为“Listed in ToolIndex”。代码围栏或 HTML 注释中的示例不符合资格。 -此前发放的 `https://openrootdev.github.io/harness-library/#your-slug` 回链仍符合资格,并会导航到对应页面。新徽章应使用实际页面 URL。 +此前发放的 `https://toolindex.org/#your-slug` 回链仍符合资格,并会导航到对应页面。新徽章应使用实际页面 URL。 有效推广条目显示在普通条目之前,每组内部按字母顺序排序。搜索和类别筛选仍然有效。目录在详情页显示 **Community boost** 标签及到期时间。这是推广展示位置;审核状态和质量声明与之独立。 @@ -24,4 +24,8 @@ 到期后仍可保留徽章。任何新政策都将公开讨论;不存在隐藏的定期推广或付费排名。 -迁移到 Kaelux Labs 之前,在 `https://ker102.github.io/harness-library/` 发放的徽章仍符合资格。迁移不会重新开始原始的 14 天窗口。方便时,请将图片和回链一并更新为新的规范地址。 +迁移到 Kaelux Labs 之前,在 `https://toolindex.org/` 发放的徽章仍符合资格。迁移不会重新开始原始的 14 天窗口。方便时,请将图片和回链一并更新为新的规范地址。 + +ToolIndex 收录 AI 智能体可使用的各种工具:技能、MCP 服务器、CLI、API、库、插件、工作流和 harness。托管服务和商业工具也可提交,但必须说明访问方式、价格、身份验证和使用条款。每个条目都直接链接到源代码仓库或官方文档。 + +标志或自定义图片是可选的。如提供图片,请附上来源和替代文本;否则条目会显示中性的名称首字母。请选择工具类型,并说明安装或服务访问步骤。允许 GitHub 以外的来源;目前只有 GitHub README 支持自动徽章检查。 diff --git a/docs/i18n/zh-CN/docs/discovery.md b/docs/i18n/zh-CN/docs/discovery.md index fa785f8..0cd0840 100644 --- a/docs/i18n/zh-CN/docs/discovery.md +++ b/docs/i18n/zh-CN/docs/discovery.md @@ -1,51 +1,34 @@ -# 发现与索引 +# 发现与部署 -自 `2026-10-20` 起,当前地址为 [OpenRootdev/harness-library](https://github.com/OpenRootdev/harness-library) 和[目录网站](https://openrootdev.github.io/harness-library/)。下方历史迁移说明描述的是之前的一次迁移。 - -公开目录在稳定 URLs 上发布完整 HTML。搜索引擎、禁用 JavaScript 的浏览器和智能体都可以直接读取每个获批 harness 的安装方法、前置条件、来源、分发内容及审核范围。JavaScript 仅增强筛选、复制和旧式 URL 片段导航。 +ToolIndex 发布完整 HTML、Markdown 镜像和经审核的 JSON 目录。搜索引擎与智能体无需 JavaScript 即可读取安装或访问说明、来源链接、许可证和审核范围。 ## 公开资源 -- [目录](https://openrootdev.github.io/harness-library/)及[提交指南](https://openrootdev.github.io/harness-library/submit/)。 -- [Sitemap](https://openrootdev.github.io/harness-library/sitemap.xml):仅包含规范 HTML 页面。每日徽章检查不会虚构内容修改日期。 -- [llms.txt](https://openrootdev.github.io/harness-library/llms.txt):链接到 Markdown 安装页面和数据的简明指南。 -- [llms-full.txt](https://openrootdev.github.io/harness-library/llms-full.txt):合并后的公开文本。 -- [catalog.json](https://openrootdev.github.io/harness-library/catalog.json):经过审核的条目、规范页面 URLs、安装方法、手动设置及范围明确的证据。 -- 每个规范 HTML 页面都有对应的 `index.md`,通过 `rel="alternate" type="text/markdown"` 链接。 - -每个 HTML 页面都有唯一的标题、描述和规范 URL,以及社交预览元数据和相匹配的 JSON-LD。结构化数据描述真实的目录、维护者和 harness;不会虚构评分、下载量或通用兼容性。未知路径使用 noindex 错误页返回 GitHub Pages 的 404 状态。旧条目的片段链接仍然受支持。 - -## 所有者设置 - -1. 在 [Google Search Console](https://search.google.com/search-console) 中为 `https://openrootdev.github.io/harness-library/` 添加一个 **URL 前缀属性**。这样可将属性限制在本项目范围内。使用账号提供的验证方法;在获得准确文件名和内容后,可将 HTML 验证文件放入 `site/`。 -2. 在该属性中提交 `sitemap.xml`。检查首页、提交指南及 harness 的 URLs;在工具提供此功能时请求索引。提交是发现提示,不是索引保证。 -3. 将同一网站添加到 [Bing Webmaster Tools](https://www.bing.com/webmasters/) 并提交 sitemap。如果账号支持从 Google Search Console 导入,可复用已验证的属性。 -4. 部署后再次查看索引报告。根据证据修复报告中的抓取或内容问题。不要将 `site:` 搜索或 Lighthouse 分数当作索引覆盖率或排名的证明。 - -验证需要所有者账号或账号提供的验证产物。不要发布猜测的验证令牌。如果添加 HTML 验证文件,请将其排除在 sitemap 之外,并在构建中保留它。 - -## 已发布变更的通知 - -普通 push 部署完成后,Pages 工作流会使用构建出的 sitemap 中的规范 URLs 通知 [IndexNow](https://www.indexnow.org/documentation)。每日徽章刷新会跳过此通知。本次迁移改变了全部五个页面;对于更大的目录,应仅提交变更页面。Google 使用 Search Console 和常规抓取;不会通过 IndexNow 向 Google 提交。 - -项目托管 `indexnow-key.txt` 并提供其准确的 `keyLocation`。这将所有权范围限定为 `/harness-library/`,避免涉及共享主机上的无关项目。密钥必须公开提供,以供协议验证;它不是站长账号凭据。无需登录、付费服务或额外依赖。暂时的 API 故障不会撤销成功的网站部署。 - -如果在工作流之外有意更新内容,先构建,再运行 `python scripts/notify_indexnow.py --dry-run` 检查 URL 列表,或运行 `python scripts/notify_indexnow.py` 提交。HTTP 200 表示已接收;HTTP 202 表示已接收,但密钥验证仍待完成。二者均不证明索引或排名。内容未变时,避免重复提交。 +- [ToolIndex](https://toolindex.org/) +- [submit/](https://toolindex.org/submit/) +- [sitemap.xml](https://toolindex.org/sitemap.xml) +- [llms.txt](https://toolindex.org/llms.txt) +- [llms-full.txt](https://toolindex.org/llms-full.txt) +- [catalog.json](https://toolindex.org/catalog.json) -## GitHub Pages 与 robots.txt +## Google Cloud 托管 -robots 规则读取自**主机根目录** `https://openrootdev.github.io/robots.txt`,而不是 `/harness-library/robots.txt`。项目内的文件无法控制共享主机的抓取。项目文件仅提供当前 sitemap 的地址。请通过站长账号提交 sitemap。 +Cloud Run 在 europe-west1 提供服务,最小实例数为 0,最大为 2,按请求计费。Firebase Hosting 提供自定义域名 HTTPS 并转发请求。DNS 应使用 Firebase Hosting 的记录,而非 GitHub Pages。准备脚本只复制公开构建内容和容器配置;将其输出路径用于 PUBLIC_CONTEXT。部署需要已授权的 Google Cloud 和 Firebase CLI。 -如果所有者后来添加根站点仓库或自定义域名,应在部署限制前检查具有权威性的 robots 文件。绝不要随意改变同一主机上其他项目的规则。 +```sh +python scripts/stage_cloudrun.py +gcloud run deploy toolindex --source PUBLIC_CONTEXT --project toolindex-org --region europe-west1 --min 0 --max 2 --min-instances 0 --max-instances 2 --cpu-throttling --memory 512Mi --execution-environment gen2 --service-account toolindex-runtime@toolindex-org.iam.gserviceaccount.com --build-service-account projects/toolindex-org/serviceAccounts/toolindex-build@toolindex-org.iam.gserviceaccount.com --allow-unauthenticated +firebase deploy --only hosting --project toolindex-org +``` -## 迁移到组织 +[Google Cloud](https://toolindex-org.web.app/) · [Firebase Hosting + Cloud Run](https://firebase.google.com/docs/hosting/cloud-run) -仓库和目录于 2026 年 10 月 10 日迁移至 [Kaelux Labs](https://github.com/OpenRootdev/harness-library)。GitHub 会重定向旧仓库 URL。一个小型[账号 Pages 仓库](https://github.com/Ker102/ker102.github.io)通过即时重定向和规范链接保留旧目录页面,并继续提供现有徽章图片。其主机根目录的 `robots.txt` 允许抓取,并链接到当前 sitemap。 +## 搜索引擎 -使用旧目录 URL 或当前目录 URL 的现有徽章回链仍符合资格。变更这些链接不会重新开始现有的 14 天推广期;原始记录日期仍然具有权威性。 +使用所有者提供的验证文件确认 toolindex.org 的 URL 前缀属性,然后在 Search Console 和 Bing Webmaster Tools 提交 sitemap.xml。不要猜测验证令牌,也不要把提交视为已索引的证据。根目录 robots.txt 允许抓取。IndexNow 通知是可选的,只有对应所有权文件与页面上线后才发送。 -## 智能体发现 +[Search Console](https://search.google.com/search-console) · [Bing Webmaster Tools](https://www.bing.com/webmasters/) · [IndexNow](https://www.indexnow.org/documentation) -智能体可使用普通 HTML、JSON 目录或 Markdown 镜像。`llms.txt` 是一种便利性提案,不是 Google 排名因素或必要条件。Google 表示,其 AI 搜索功能采用与普通搜索相同的基础 SEO 实践。可抓取的文本、清晰的页面链接、准确的证据和有用的内容才是关键;任何配置都不能保证收录或引用。 +## 兼容性与审核 -一手参考资料:[Google JavaScript SEO](https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics)、[sitemaps](https://developers.google.com/search/docs/crawling-indexing/sitemaps/build-sitemap)、[robots 规范](https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec)、[AI 功能](https://developers.google.com/search/docs/appearance/ai-features)、[llms.txt 提案](https://llmstxt.org/)。 +旧 /harnesses/ 页面重定向至 /tools/。原徽章 URL 与标签仍被认可,不会重置一次性的 14 天展示提升。GitHub 将旧仓库重定向至 OpenRootdev/toolindex。审核记录只说明有限范围的证据。CI 不会执行提交工具的代码或安装其依赖。 diff --git a/docs/listing.example.json b/docs/listing.example.json index 0b25032..6dd2c5e 100644 --- a/docs/listing.example.json +++ b/docs/listing.example.json @@ -1,14 +1,26 @@ { - "schema_version":1, - "id":"your-harness", - "name":"Your Harness", - "summary":"The specific task this harness helps an agent do.", - "category":"Other", - "repository":"https://github.com/your-account/your-harness", - "license":"MIT", - "version":"1.0.0", - "distribution":{"kind":"package","url":"https://github.com/your-account/your-harness/releases/download/v1.0.0/harness.zip","label":"Download harness","scope":"Describe exactly which relevant files are included.","repository_has_extra_material":true}, - "installation":[{"title":"Install the package","body":"Describe prerequisites, extraction, working directory, agent integration and the first useful action."}], - "manual_setup":[], - "notes":[] + "schema_version": 1, + "id": "your-tool", + "name": "Your Tool", + "summary": "The specific task this tool helps an AI agent do.", + "category": "Other", + "repository": "https://github.com/your-account/your-tool", + "license": "MIT", + "version": "1.0.0", + "distribution": { + "kind": "package", + "url": "https://github.com/your-account/your-tool/releases/download/v1.0.0/tool.zip", + "label": "Download tool", + "scope": "Describe exactly which relevant files are included.", + "repository_has_extra_material": true + }, + "installation": [ + { + "title": "Install the package", + "body": "Describe prerequisites, extraction, working directory, agent integration and the first useful action." + } + ], + "manual_setup": [], + "notes": [], + "type": "Skill" } diff --git a/firebase.json b/firebase.json new file mode 100644 index 0000000..1dd0922 --- /dev/null +++ b/firebase.json @@ -0,0 +1,14 @@ +{ + "hosting": { + "site": "toolindex-org", + "rewrites": [ + { + "source": "**", + "run": { + "serviceId": "toolindex", + "region": "europe-west1" + } + } + ] + } +} diff --git a/scripts/catalog.py b/scripts/catalog.py index 5cbb680..21889d3 100644 --- a/scripts/catalog.py +++ b/scripts/catalog.py @@ -13,7 +13,7 @@ import os ROOT = Path(__file__).resolve().parents[1] -SITE = 'https://openrootdev.github.io/harness-library/' +from site_config import SITE, TOOL_TYPES, LEGACY_SITES CATEGORIES = ['Creative', '3D & Blender', 'Coding', 'Research', 'Data', 'Operations', 'Other'] REPO = re.compile(r'https://github\.com/([A-Za-z0-9_.-]+)/([A-Za-z0-9_.-]+)\Z') SLUG = re.compile(r'[a-z0-9]+(?:-[a-z0-9]+)*\Z') @@ -41,7 +41,7 @@ def text(value, field): raise ValueError(f'{field} needs nonempty text (max 5000 characters)') def validate_entry(e): - allowed = {'schema_version','id','name','summary','category','repository','license','version','distribution','installation','manual_setup','notes','contents','harneloop','documentation'} + allowed = {'schema_version','id','name','summary','category','repository','license','version','distribution','installation','manual_setup','notes','contents','harneloop','documentation','type','image'} if not isinstance(e, dict) or set(e) - allowed: raise ValueError('Unknown listing fields; review/boost labels are maintainer-owned') if e.get('schema_version') != 1 or not SLUG.fullmatch(e.get('id','')): @@ -50,13 +50,26 @@ def validate_entry(e): text(e.get(field), field) if e.get('category') not in CATEGORIES: raise ValueError('Unknown category') - if not REPO.fullmatch(e.get('repository','')): - raise ValueError('repository must be a canonical public GitHub repository URL') + https(e.get('repository')) + if e.get('type', 'Harness') not in TOOL_TYPES: + raise ValueError('Unknown tool type') + if 'image' in e: + image = e['image'] + if not isinstance(image, dict) or set(image) != {'url','alt','source'}: + raise ValueError('Optional image needs url, alt and source') + text(image['alt'], 'image alt text') + https(image['source']) + url = image['url'] + if isinstance(url, str) and url.startswith('assets/logos/'): + if not re.fullmatch(r'assets/logos/[a-z0-9][a-z0-9.-]*\.(?:png|webp|jpg|svg)', url): + raise ValueError('Invalid local logo path') + else: + https(url) d = e.get('distribution', {}) if set(d) - {'kind','url','label','scope','repository_has_extra_material','branch'}: raise ValueError('Unknown distribution fields') - if d.get('kind') not in {'package','dedicated-branch','focused-repository'}: - raise ValueError('Declare a focused package, dedicated harness branch or focused repository') + if d.get('kind') not in {'package','dedicated-branch','focused-repository','service','api'}: + raise ValueError('Declare a package, dedicated branch, focused repository, service or API') if not isinstance(d.get('repository_has_extra_material'), bool): raise ValueError('Declare whether the repository has extra material') if d['repository_has_extra_material'] and d['kind'] == 'focused-repository': @@ -146,7 +159,7 @@ def __init__(self, target, badge): def handle_starttag(self, tag, attrs): attrs=dict(attrs) if tag=='a': self.link=attrs.get('href')==self.target - if tag=='img' and self.link and attrs.get('src')==self.badge and attrs.get('alt','').lower()=='listed in harness library': self.found=True + if tag=='img' and self.link and attrs.get('src')==self.badge and attrs.get('alt','').lower() in {'listed in toolindex','listed in harness library'}: self.found=True def handle_endtag(self, tag): if tag=='a': self.link=False @@ -161,20 +174,21 @@ def has_badge(readme, slug): head='\n'.join(clean) head=re.sub(r'`+[^`]*`+','',head) # Preserve existing grants across the organization migration. New badges use SITE. - sites=[SITE,'https://kaelux-labs.github.io/harness-library/','https://ker102.github.io/harness-library/'] + sites=[SITE,*LEGACY_SITES] pairs=[(site+'badges/'+slug+'.svg',target) for site in sites - for target in [site+'#'+slug,site+'harnesses/'+slug+'/']] + for target in [site+'#'+slug,site+'tools/'+slug+'/',site+'harnesses/'+slug+'/']] for badge,target in pairs: - md='[![Listed in Harness Library]('+badge+')]('+target+')' - if md in head: return True + if any('[!['+name+']('+badge+')]('+target+')' in head for name in ['Listed in ToolIndex','Listed in Harness Library']): return True parser=BadgeHTML(target,badge);parser.feed(head) if parser.found: return True return False def readme(e): match=REPO.fullmatch(e['repository']) + if not match: + raise ValueError('Automatic badge verification currently supports GitHub sources only') url=f'https://api.github.com/repos/{match[1]}/{match[2]}/readme' - headers={'Accept':'application/vnd.github+json','User-Agent':'Harness-Library-badge-check'} + headers={'Accept':'application/vnd.github+json','User-Agent':'ToolIndex-badge-check'} if os.environ.get('GITHUB_TOKEN'): headers['Authorization']='Bearer '+os.environ['GITHUB_TOKEN'] with urlopen(Request(url,headers=headers),timeout=20) as response: data=response.read(1_000_001) @@ -213,12 +227,14 @@ def checked_catalog(root=ROOT, now=None): if not review: continue # Only approved listings are published. if review['built_with_harneloop'] and 'harneloop' not in e: raise ValueError('Approved attribution needs a source') boost=grants.get(e['id']);is_active=active(boost,now) - result.append({**e,'url':SITE+'harnesses/'+e['id']+'/','review':review,'boost':boost if is_active else None}) + if e.get('image',{}).get('url','').startswith('assets/logos/') and not (root/'site'/e['image']['url']).is_file(): + raise ValueError('Declared local logo is missing') + result.append({**e,'type':e.get('type','Harness'),'url':SITE+'tools/'+e['id']+'/','review':review,'boost':boost if is_active else None}) result.sort(key=lambda e:(not bool(e['boost']),e['name'].casefold())) return {'generated_at':iso(now),'categories':CATEGORIES,'listings':result} def badge(slug): - return 'Listed in Harness LibraryListed in Harness Library' + return 'Listed in ToolIndexListed in ToolIndex' def build(root=ROOT): catalog=checked_catalog(root);destination=root/'dist';destination.mkdir(exist_ok=True) diff --git a/scripts/publishing.py b/scripts/publishing.py index 1075a26..357775c 100644 --- a/scripts/publishing.py +++ b/scripts/publishing.py @@ -6,26 +6,24 @@ from pathlib import Path from xml.etree import ElementTree as ET -SITE = 'https://openrootdev.github.io/harness-library/' -BASE = '/harness-library/' -REPOSITORY = 'https://github.com/OpenRootdev/harness-library' -FORM = REPOSITORY + '/issues/new?template=submit-harness.yml' -DEFINITION = ('An agent harness is the surrounding setup that lets an AI model act on a task. ' - 'It can include instructions, skills, tools, environment mappings, checks and workflows. ' - 'Harness Library focuses on reusable, task-specific setups: from a small skill folder ' - 'to an MCP workflow or a larger harness package.') -WELCOME = 'New submissions are welcome. We’re looking for practical harnesses people can actually install and use.' +from site_config import SITE, BASE, REPOSITORY, FORM, TOOL_TYPES +DEFINITION = ('ToolIndex is an open directory of tools AI agents can use: skills, MCP servers, ' + 'command-line tools, APIs, libraries, plugins, workflows and harnesses. ' + 'Each listing links directly to its source and explains access, installation, ' + 'configuration, licensing and review scope.') +WELCOME = 'New submissions are welcome. Share a useful tool that an AI agent can actually use.' SUBMIT_STEPS = [ - ('Share your repository', 'Open the short GitHub form with a name, repository link and the task your harness helps an agent do. No fork or pull request is needed.'), - ('Explain how to install it', 'Add the focused package or harness branch, version and license, then list the install steps and anything people must connect or configure manually.'), - ('Get reviewed and listed', 'Maintainers check the setup and distribution scope, ask questions in your issue if needed, and publish approved listings. You can update the listing later.') + ('Share your tool', 'Open the short GitHub form with a name, source link, tool type and the task it helps an agent do. No fork or pull request is needed.'), + ('Explain how to use it', 'Link the package, focused source, service or API documentation. State version, license or service terms, installation or connection steps, costs and manual setup.'), + ('Get reviewed and listed', 'Maintainers check the setup and scope, ask questions in your issue if needed, and publish approved listings. Every listing links directly to its source.') ] FAQ = [ - ('Can I submit just a few skills?', 'Yes. A useful skill folder, MCP workflow or complete harness package can qualify. Explain the task, installation and manual setup clearly.'), - ('Do I need to use Harneloop?', 'No. Submissions can use any agent or framework. Built with Harneloop is an optional attribution, reviewed separately from the listing.'), - ('What if my repository contains a whole application?', 'Provide a focused package or a dedicated harness branch so users can install only the harness. Do not make them download unrelated videos, caches or application assets.'), + ('Which tools can I submit?', 'Skills, MCP servers, CLIs, APIs, libraries, plugins, workflows and harnesses are welcome. Explain how an agent uses the tool and what users need to set up.'), + ('Do I need to use Harneloop?', 'No. Tools can use any agent or framework. Built with Harneloop is an optional attribution, reviewed separately from the listing.'), + ('Can I submit a hosted or commercial tool?', 'Yes. Link the source or official documentation and service endpoint, explain authentication, pricing and usage terms, and disclose required accounts. For mixed source repositories, identify a focused installation path.'), ('Does a listing mean it works with every model?', 'No. Each page states its review scope, evidence and manual prerequisites. Setup reviewed and artifacts checked are different claims; neither guarantees every platform or model.'), - ('Is submitting free?', 'Yes. Browsing and submitting to the directory are free. You need a GitHub account to open a submission issue; a Harness Library account is not required.') + ('Is an image required?', 'No. A logo or custom image is optional. Without one, the listing uses initials. Only supply images you are entitled to use, with a source link.'), + ('Is submitting free?', 'Yes. Browsing and submitting to ToolIndex are free. The listed tool may have its own pricing. A GitHub account is needed to open the submission form; no ToolIndex account is required.') ] def h(value): @@ -34,8 +32,11 @@ def h(value): def local(path=''): return BASE + path -def harness_path(e): - return 'harnesses/' + e['id'] + '/' +def tool_path(e): + return 'tools/' + e['id'] + '/' + +# Keep the Python helper compatible for existing integrations. +harness_path = tool_path def boost_attributes(e): boost = e.get('boost') or {} @@ -52,10 +53,10 @@ def codebox(value, identifier, label='Copy code or path'): f'') def labels(e): - parts = [f'{h(e["category"])}'] + parts = [f'{h(e["category"])}', f'{h(e.get("type", "Harness"))}'] if e['review']['built_with_harneloop']: parts.append(a('Built with Harneloop', e['harneloop']['url'], 'label')) - kind = {'package':'Packaged','dedicated-branch':'Harness branch','focused-repository':'Focused repository'}[e['distribution']['kind']] + kind = {'package':'Packaged','dedicated-branch':'Dedicated branch','focused-repository':'Focused repository','service':'Hosted service','api':'API endpoint'}[e['distribution']['kind']] parts.append(f'{kind}') if e.get('boost'): parts.append(f'Community boost') @@ -69,42 +70,53 @@ def list_section(title, values, cls='', level=3): def icon(name): return f'' +def tool_image(e): + initials = ''.join(word[0] for word in e['name'].split()[:2]).upper() + fallback = f'' + image = e.get('image') + if not image: + return '
'+fallback+'
' + url = local(image['url']) if image['url'].startswith('assets/logos/') else image['url'] + return (f'') + def listing(e): - art = 'blender.svg' if e['id'] == 'vipermesh-blender' else 'motion.svg' - search = ' '.join([e['name'], e['summary'], e['category'], *e['notes'], *e.get('contents',{}).get('tools',[])]) - package = 'MCP bundle + addon' if e['id'] == 'vipermesh-blender' else 'Skill package' if e.get('contents',{}).get('skills') else 'Harness package' - return (f'
' - f'
' - '

' + a(e['name'],local(harness_path(e))) + '

' - f'

{h(e["summary"])}

{labels(e)}
' - + f'View harness {icon("ArrowRight")}' + f'{icon("Package" if e["id"]=="vipermesh-blender" else "BookOpen")}{package}
') + search = ' '.join([e['name'], e['summary'], e['category'], e.get('type','Harness'), *e['notes'], *e.get('contents',{}).get('tools',[])]) + return (f'
' + + tool_image(e) + '

' + a(e['name'],local(tool_path(e))) + '

' + + f'

{h(e["summary"])}

{labels(e)}
' + + f'View tool {icon("ArrowRight")}' + + a('Source ↗',e['repository']) + '
') def faq_html(items=FAQ): return '
' + ''.join(f'
{h(q)}

{h(answer)}

' for q,answer in items) + '
' def invitation(): return ('
' - '

New submissions welcome

Your harness could be next.

' - '

Built a useful skill folder, MCP workflow or agent harness? We’d love to list it. Share your repository and setup instructions through a short GitHub form.

' + '

New submissions welcome

Your tool could be next.

' + '

Built a useful skill, MCP server, CLI, API or agent tool? We’d love to list it. Share your repository and setup instructions through a short GitHub form.

' '

Free to submit. No fork or pull request needed.

' - '
' + a('Submit your harness →',local('submit/'),'button') + '
' + a('Submit your tool →',local('submit/'),'button') + '
') def home(catalog): buttons = ''.join(f'' for value in ['All',*dict.fromkeys(e['category'] for e in catalog['listings'])]) return ('
' - '

Good agents start
with a good harness.

' - '

Discover reusable AI agent harnesses: skills, tools, and workflows. Install only what you need.

' + '

Find the tools
your agent needs.

' + '

Skills, MCP servers, CLIs, APIs and more. Find useful tools, check their setup and go straight to the source.

' f'' f'
' + 'Search tools' + '' + + f'
{buttons}
' - '' - f'

{len(catalog["listings"])} harnesses shown

' - '
' + ''.join(listing(e) for e in catalog['listings']) + '
' - '
' - + invitation() + '

What is an agent harness?

' + '' + f'

{len(catalog["listings"])} tools shown

' + '
' + ''.join(listing(e) for e in catalog['listings']) + '
' + '
' + + invitation() + '

Tools for any agent workflow.

' f'

{h(DEFINITION)}

{a("How the library works →",local("about/"))}

') def detail(e): @@ -118,7 +130,7 @@ def detail(e): counts = ''.join(f'
{value}{h(names[key].removesuffix("s") if value==1 else names[key])}
' for key,value in e.get('contents',{}).items() if key!='tools') r=e['review']; review_name='Artifacts checked' if r['status']=='artifact-checked' else 'Setup reviewed' - aside = '