Add comprehensive documentation for Collections, Project Dependencies, Provider Setup, and CLI Reference
- Add Tool Collections tutorial covering bundles, installation, and creating collections - Add Project Dependencies tutorial for cmdforge.yaml manifests and team workflows - Add Provider Setup guide with interactive installer and testing commands - Add complete CLI Reference for all commands - Update TOC with new sections Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
d0581daa35
commit
cdc910d7b6
|
|
@ -3230,6 +3230,923 @@ providers:
|
|||
("next", "Next Steps"),
|
||||
],
|
||||
},
|
||||
|
||||
"collections": {
|
||||
"title": "Tool Collections",
|
||||
"description": "Install curated bundles of tools with a single command",
|
||||
"content": """
|
||||
<p class="lead">Why install tools one at a time? Collections are curated bundles of tools that work
|
||||
great together. One command gives you a complete toolkit for a specific workflow—whether you're
|
||||
a developer, writer, or data wrangler.</p>
|
||||
|
||||
<div class="bg-indigo-50 border-l-4 border-indigo-500 p-4 my-6">
|
||||
<p class="font-semibold text-indigo-800">What You'll Learn</p>
|
||||
<ul class="mt-2 text-indigo-700">
|
||||
<li>What collections are and why they're useful</li>
|
||||
<li>Browsing available collections</li>
|
||||
<li>Installing a complete toolkit in one command</li>
|
||||
<li>Understanding pinned versions</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<h2 id="what-are-collections">What Are Collections?</h2>
|
||||
|
||||
<p>Think of collections like playlists for your terminal. Someone has already done the work of finding
|
||||
tools that complement each other, testing them together, and bundling them up. You just hit play.</p>
|
||||
|
||||
<div class="grid grid-cols-1 md:grid-cols-3 gap-4 my-6">
|
||||
<div class="bg-white border rounded-lg p-4 text-center">
|
||||
<div class="text-3xl mb-2">🎯</div>
|
||||
<p class="font-bold text-gray-900">Curated</p>
|
||||
<p class="text-sm text-gray-600">Hand-picked tools that work well together</p>
|
||||
</div>
|
||||
<div class="bg-white border rounded-lg p-4 text-center">
|
||||
<div class="text-3xl mb-2">⚡</div>
|
||||
<p class="font-bold text-gray-900">One Command</p>
|
||||
<p class="text-sm text-gray-600">Install everything at once</p>
|
||||
</div>
|
||||
<div class="bg-white border rounded-lg p-4 text-center">
|
||||
<div class="text-3xl mb-2">🔒</div>
|
||||
<p class="font-bold text-gray-900">Version Pinned</p>
|
||||
<p class="text-sm text-gray-600">Tested versions that work together</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h2 id="browsing">Browsing Collections</h2>
|
||||
|
||||
<p>See what's available:</p>
|
||||
|
||||
<pre><code class="language-bash"># List all collections
|
||||
cmdforge collections list</code></pre>
|
||||
|
||||
<p>You'll see something like:</p>
|
||||
|
||||
<pre><code class="language-text">Available collections (4):
|
||||
|
||||
starter
|
||||
The Starter Pack
|
||||
Essential tools for getting started with CmdForge
|
||||
Tools: 5
|
||||
|
||||
developer
|
||||
Developer Toolkit
|
||||
Code review, testing, and documentation tools
|
||||
Tools: 8
|
||||
|
||||
writer
|
||||
Writer's Workshop
|
||||
Grammar, tone, and content tools for writers
|
||||
Tools: 6
|
||||
|
||||
data
|
||||
Data Wrangler
|
||||
JSON, CSV, and data extraction tools
|
||||
Tools: 7
|
||||
|
||||
Install a collection with: cmdforge collections install <name></code></pre>
|
||||
|
||||
<h2 id="collection-details">Viewing Collection Details</h2>
|
||||
|
||||
<p>Before installing, see exactly what you'll get:</p>
|
||||
|
||||
<pre><code class="language-bash"># See what's in a collection
|
||||
cmdforge collections info starter</code></pre>
|
||||
|
||||
<p>Output:</p>
|
||||
|
||||
<pre><code class="language-text">The Starter Pack
|
||||
==================================================
|
||||
|
||||
Essential tools for getting started with CmdForge.
|
||||
Perfect for new users who want a solid foundation.
|
||||
|
||||
Maintainer: official
|
||||
Tags: beginner, essential, getting-started
|
||||
|
||||
Tools (5):
|
||||
- official/summarize
|
||||
- official/translate
|
||||
- official/fix-grammar
|
||||
- official/explain-error
|
||||
- official/commit-msg
|
||||
|
||||
Install all: cmdforge collections install starter</code></pre>
|
||||
|
||||
<h2 id="installing">Installing a Collection</h2>
|
||||
|
||||
<p>Ready to go? One command:</p>
|
||||
|
||||
<pre><code class="language-bash"># Install all tools in a collection
|
||||
cmdforge collections install starter</code></pre>
|
||||
|
||||
<p>Watch as each tool is downloaded and installed:</p>
|
||||
|
||||
<pre><code class="language-text">Installing collection: The Starter Pack
|
||||
Tools to install: 5
|
||||
|
||||
Installing official/summarize... v1.2.0
|
||||
Installing official/translate... v1.1.0
|
||||
Installing official/fix-grammar... v1.0.3
|
||||
Installing official/explain-error... v1.1.2
|
||||
Installing official/commit-msg... v2.0.0
|
||||
|
||||
Installed: 5/5
|
||||
|
||||
Collection 'starter' installed successfully!</code></pre>
|
||||
|
||||
<p>All five tools are now available as commands. Try them:</p>
|
||||
|
||||
<pre><code class="language-bash">echo "teh quick brown fox" | fix-grammar
|
||||
# The quick brown fox</code></pre>
|
||||
|
||||
<h2 id="pinned-versions">Pinned Versions</h2>
|
||||
|
||||
<p>Collections can pin specific versions of tools that are known to work well together. Use the
|
||||
<code>--pinned</code> flag to install these exact versions:</p>
|
||||
|
||||
<pre><code class="language-bash"># Install with pinned (tested) versions
|
||||
cmdforge collections install developer --pinned</code></pre>
|
||||
|
||||
<p>This is useful when you need reproducible setups across machines or team members.</p>
|
||||
|
||||
<h2 id="popular-collections">Popular Collections</h2>
|
||||
|
||||
<table class="w-full my-4">
|
||||
<thead class="bg-gray-100">
|
||||
<tr>
|
||||
<th class="px-4 py-2 text-left">Collection</th>
|
||||
<th class="px-4 py-2 text-left">Description</th>
|
||||
<th class="px-4 py-2 text-left">Tools</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="border-b">
|
||||
<td class="px-4 py-2"><code>starter</code></td>
|
||||
<td class="px-4 py-2">Essential tools for beginners</td>
|
||||
<td class="px-4 py-2">summarize, translate, fix-grammar, explain-error, commit-msg</td>
|
||||
</tr>
|
||||
<tr class="border-b">
|
||||
<td class="px-4 py-2"><code>developer</code></td>
|
||||
<td class="px-4 py-2">Code review and development tools</td>
|
||||
<td class="px-4 py-2">review-code, explain-code, gen-tests, docstring, plus more</td>
|
||||
</tr>
|
||||
<tr class="border-b">
|
||||
<td class="px-4 py-2"><code>writer</code></td>
|
||||
<td class="px-4 py-2">Content creation and editing</td>
|
||||
<td class="px-4 py-2">fix-grammar, tone-shift, simplify, expand, eli5, tldr</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="px-4 py-2"><code>data</code></td>
|
||||
<td class="px-4 py-2">Data extraction and transformation</td>
|
||||
<td class="px-4 py-2">json-extract, json2csv, extract-emails, csv-insights, sql-from-text</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h2 id="next">Next Steps</h2>
|
||||
|
||||
<ul>
|
||||
<li><a href="/docs/registry-usage">Browse individual tools</a> - Find more specialized tools</li>
|
||||
<li><a href="/docs/project-deps">Set up project dependencies</a> - Lock tools for your team</li>
|
||||
<li><a href="/docs/first-tool">Create your own tools</a> - Build on top of what you've installed</li>
|
||||
</ul>
|
||||
""",
|
||||
"headings": [
|
||||
("what-are-collections", "What Are Collections?"),
|
||||
("browsing", "Browsing Collections"),
|
||||
("collection-details", "Viewing Collection Details"),
|
||||
("installing", "Installing a Collection"),
|
||||
("pinned-versions", "Pinned Versions"),
|
||||
("popular-collections", "Popular Collections"),
|
||||
("next", "Next Steps"),
|
||||
],
|
||||
},
|
||||
|
||||
"project-deps": {
|
||||
"title": "Project Dependencies",
|
||||
"description": "Lock tool versions for reproducible team workflows",
|
||||
"content": """
|
||||
<p class="lead">Working on a project with a team? Need the same tools on your CI server?
|
||||
Project dependencies let you declare which tools your project needs, pin their versions,
|
||||
and install everything with a single command. Think <code>package.json</code> for your AI tools.</p>
|
||||
|
||||
<div class="bg-indigo-50 border-l-4 border-indigo-500 p-4 my-6">
|
||||
<p class="font-semibold text-indigo-800">What You'll Learn</p>
|
||||
<ul class="mt-2 text-indigo-700">
|
||||
<li>Creating a <code>cmdforge.yaml</code> manifest</li>
|
||||
<li>Adding and managing dependencies</li>
|
||||
<li>Version constraints and pinning</li>
|
||||
<li>Installing dependencies for your project</li>
|
||||
<li>Overriding providers for different environments</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<h2 id="why">Why Project Dependencies?</h2>
|
||||
|
||||
<p>Without dependency management:</p>
|
||||
|
||||
<ul>
|
||||
<li>"It works on my machine" - but not your teammate's</li>
|
||||
<li>Tool updates break your workflow unexpectedly</li>
|
||||
<li>Setting up a new machine means remembering every tool</li>
|
||||
<li>CI/CD environments are a mystery</li>
|
||||
</ul>
|
||||
|
||||
<p>With <code>cmdforge.yaml</code>:</p>
|
||||
|
||||
<ul>
|
||||
<li>Everyone gets the same tools at the same versions</li>
|
||||
<li>New team members run one command and they're ready</li>
|
||||
<li>CI/CD setup is just <code>cmdforge install</code></li>
|
||||
<li>You control when to upgrade</li>
|
||||
</ul>
|
||||
|
||||
<h2 id="creating">Creating a Manifest</h2>
|
||||
|
||||
<p>Initialize a new manifest in your project:</p>
|
||||
|
||||
<pre><code class="language-bash"># Create cmdforge.yaml in current directory
|
||||
cmdforge init
|
||||
|
||||
# With custom project name and version
|
||||
cmdforge init --name my-project --version 1.0.0</code></pre>
|
||||
|
||||
<p>This creates a <code>cmdforge.yaml</code> file:</p>
|
||||
|
||||
<pre><code class="language-yaml">name: my-project
|
||||
version: 1.0.0
|
||||
dependencies: []</code></pre>
|
||||
|
||||
<h2 id="adding-deps">Adding Dependencies</h2>
|
||||
|
||||
<p>Add tools your project needs:</p>
|
||||
|
||||
<pre><code class="language-bash"># Add a tool (installs it too)
|
||||
cmdforge add official/summarize
|
||||
|
||||
# Add with version constraint
|
||||
cmdforge add official/translate --version "^1.0.0"
|
||||
|
||||
# Add without installing (just record it)
|
||||
cmdforge add official/fix-grammar --no-install</code></pre>
|
||||
|
||||
<p>Your manifest now looks like:</p>
|
||||
|
||||
<pre><code class="language-yaml">name: my-project
|
||||
version: 1.0.0
|
||||
dependencies:
|
||||
- name: official/summarize
|
||||
version: "*"
|
||||
- name: official/translate
|
||||
version: "^1.0.0"
|
||||
- name: official/fix-grammar
|
||||
version: "*"</code></pre>
|
||||
|
||||
<h2 id="version-constraints">Version Constraints</h2>
|
||||
|
||||
<p>Control which versions are acceptable:</p>
|
||||
|
||||
<table class="w-full my-4">
|
||||
<thead class="bg-gray-100">
|
||||
<tr>
|
||||
<th class="px-4 py-2 text-left">Constraint</th>
|
||||
<th class="px-4 py-2 text-left">Meaning</th>
|
||||
<th class="px-4 py-2 text-left">Example Matches</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="border-b">
|
||||
<td class="px-4 py-2"><code>*</code></td>
|
||||
<td class="px-4 py-2">Any version (latest)</td>
|
||||
<td class="px-4 py-2">1.0.0, 2.0.0, 3.5.2</td>
|
||||
</tr>
|
||||
<tr class="border-b">
|
||||
<td class="px-4 py-2"><code>1.2.3</code></td>
|
||||
<td class="px-4 py-2">Exact version only</td>
|
||||
<td class="px-4 py-2">1.2.3</td>
|
||||
</tr>
|
||||
<tr class="border-b">
|
||||
<td class="px-4 py-2"><code>^1.2.0</code></td>
|
||||
<td class="px-4 py-2">Compatible (same major)</td>
|
||||
<td class="px-4 py-2">1.2.0, 1.3.0, 1.9.9</td>
|
||||
</tr>
|
||||
<tr class="border-b">
|
||||
<td class="px-4 py-2"><code>~1.2.0</code></td>
|
||||
<td class="px-4 py-2">Approximate (same minor)</td>
|
||||
<td class="px-4 py-2">1.2.0, 1.2.1, 1.2.9</td>
|
||||
</tr>
|
||||
<tr class="border-b">
|
||||
<td class="px-4 py-2"><code>>=1.0.0</code></td>
|
||||
<td class="px-4 py-2">At least this version</td>
|
||||
<td class="px-4 py-2">1.0.0, 1.5.0, 2.0.0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="px-4 py-2"><code><2.0.0</code></td>
|
||||
<td class="px-4 py-2">Before this version</td>
|
||||
<td class="px-4 py-2">1.0.0, 1.9.9</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div class="bg-green-50 border-l-4 border-green-500 p-4 my-6">
|
||||
<p class="font-semibold text-green-800">Recommendation</p>
|
||||
<p class="text-green-700">Use <code>^1.0.0</code> (caret) for most dependencies. This allows
|
||||
bug fixes and new features while preventing breaking changes.</p>
|
||||
</div>
|
||||
|
||||
<h2 id="installing-deps">Installing Dependencies</h2>
|
||||
|
||||
<p>When someone clones your project:</p>
|
||||
|
||||
<pre><code class="language-bash"># Install all dependencies from cmdforge.yaml
|
||||
cmdforge install</code></pre>
|
||||
|
||||
<p>This reads the manifest, resolves versions, and installs every tool. Perfect for:</p>
|
||||
|
||||
<ul>
|
||||
<li>New team members getting set up</li>
|
||||
<li>CI/CD pipeline preparation</li>
|
||||
<li>Refreshing your environment after pulling changes</li>
|
||||
</ul>
|
||||
|
||||
<h2 id="checking-deps">Checking Dependencies</h2>
|
||||
|
||||
<p>See what's in your manifest and what's installed:</p>
|
||||
|
||||
<pre><code class="language-bash"># Show project dependencies
|
||||
cmdforge deps</code></pre>
|
||||
|
||||
<p>Output:</p>
|
||||
|
||||
<pre><code class="language-text">Project: my-project v1.0.0
|
||||
|
||||
Dependencies (3):
|
||||
✓ official/summarize * (installed: 1.2.0)
|
||||
✓ official/translate ^1.0.0 (installed: 1.1.0)
|
||||
✗ official/fix-grammar * (not installed)
|
||||
|
||||
Run 'cmdforge install' to install missing dependencies.</code></pre>
|
||||
|
||||
<h2 id="overrides">Provider Overrides</h2>
|
||||
|
||||
<p>Need to use different AI providers in different environments? Add overrides to your manifest:</p>
|
||||
|
||||
<pre><code class="language-yaml">name: my-project
|
||||
version: 1.0.0
|
||||
dependencies:
|
||||
- name: official/summarize
|
||||
version: "^1.0.0"
|
||||
|
||||
overrides:
|
||||
summarize:
|
||||
provider: ollama # Use local Ollama instead of cloud</code></pre>
|
||||
|
||||
<p>This is useful for:</p>
|
||||
|
||||
<ul>
|
||||
<li><strong>Development</strong> - Use local/free models to save money</li>
|
||||
<li><strong>CI/CD</strong> - Use mock providers for testing</li>
|
||||
<li><strong>Production</strong> - Use high-quality cloud providers</li>
|
||||
</ul>
|
||||
|
||||
<h2 id="manifest-location">Manifest Location</h2>
|
||||
|
||||
<p>CmdForge searches for <code>cmdforge.yaml</code> starting from your current directory and
|
||||
moving up to parent directories. This means you can have:</p>
|
||||
|
||||
<ul>
|
||||
<li><strong>Per-project manifests</strong> - In each project root</li>
|
||||
<li><strong>Shared manifests</strong> - In a parent directory for multiple projects</li>
|
||||
</ul>
|
||||
|
||||
<h2 id="workflow">Recommended Workflow</h2>
|
||||
|
||||
<div class="bg-white border rounded-lg p-4 my-6">
|
||||
<ol class="space-y-3">
|
||||
<li><strong>1. Initialize</strong> - <code>cmdforge init</code> in your project root</li>
|
||||
<li><strong>2. Add tools</strong> - <code>cmdforge add owner/tool</code> as you need them</li>
|
||||
<li><strong>3. Commit</strong> - Add <code>cmdforge.yaml</code> to version control</li>
|
||||
<li><strong>4. Document</strong> - Tell your team to run <code>cmdforge install</code></li>
|
||||
<li><strong>5. CI/CD</strong> - Add <code>cmdforge install</code> to your pipeline</li>
|
||||
</ol>
|
||||
</div>
|
||||
|
||||
<h2 id="next">Next Steps</h2>
|
||||
|
||||
<ul>
|
||||
<li><a href="/docs/collections">Install tool collections</a> - Get started quickly with curated bundles</li>
|
||||
<li><a href="/docs/registry-usage">Browse the registry</a> - Find tools for your project</li>
|
||||
<li><a href="/docs/publishing">Publish your own tools</a> - Share with the community</li>
|
||||
</ul>
|
||||
""",
|
||||
"headings": [
|
||||
("why", "Why Project Dependencies?"),
|
||||
("creating", "Creating a Manifest"),
|
||||
("adding-deps", "Adding Dependencies"),
|
||||
("version-constraints", "Version Constraints"),
|
||||
("installing-deps", "Installing Dependencies"),
|
||||
("checking-deps", "Checking Dependencies"),
|
||||
("overrides", "Provider Overrides"),
|
||||
("manifest-location", "Manifest Location"),
|
||||
("workflow", "Recommended Workflow"),
|
||||
("next", "Next Steps"),
|
||||
],
|
||||
},
|
||||
|
||||
"provider-setup": {
|
||||
"title": "Setting Up AI Providers",
|
||||
"description": "Install and configure AI providers for your tools",
|
||||
"content": """
|
||||
<p class="lead">CmdForge is the brain, but AI providers are the muscle. Before your tools can do
|
||||
anything smart, you need at least one provider configured. The good news? CmdForge has an
|
||||
interactive installer that makes this painless.</p>
|
||||
|
||||
<div class="bg-indigo-50 border-l-4 border-indigo-500 p-4 my-6">
|
||||
<p class="font-semibold text-indigo-800">What You'll Learn</p>
|
||||
<ul class="mt-2 text-indigo-700">
|
||||
<li>Using the interactive provider installer</li>
|
||||
<li>Available provider options and their tradeoffs</li>
|
||||
<li>Testing your provider setup</li>
|
||||
<li>Managing multiple providers</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<h2 id="interactive-install">The Interactive Installer</h2>
|
||||
|
||||
<p>The easiest way to get started:</p>
|
||||
|
||||
<pre><code class="language-bash">cmdforge providers install</code></pre>
|
||||
|
||||
<p>You'll see a menu of available provider groups:</p>
|
||||
|
||||
<pre><code class="language-text">============================================================
|
||||
CmdForge Provider Installation Guide
|
||||
============================================================
|
||||
|
||||
Available AI Provider Groups:
|
||||
|
||||
1. OpenCode
|
||||
Cost: FREE tier available (4 models)
|
||||
Models: opencode-pickle, opencode-deepseek, opencode-claude, ...
|
||||
|
||||
2. Claude (Anthropic)
|
||||
Cost: Pay per token
|
||||
Models: claude-haiku, claude-sonnet, claude-opus
|
||||
|
||||
3. Ollama (Local)
|
||||
Cost: FREE (runs on your machine)
|
||||
Models: ollama-llama, ollama-mistral, ollama-codellama
|
||||
|
||||
4. OpenAI
|
||||
Cost: Pay per token
|
||||
Models: openai-gpt4, openai-gpt35
|
||||
|
||||
0. Cancel
|
||||
|
||||
Select a provider to install (1-4, or 0 to cancel):</code></pre>
|
||||
|
||||
<p>Select a provider, and CmdForge will:</p>
|
||||
<ol>
|
||||
<li>Show you the installation command</li>
|
||||
<li>Offer to run it for you</li>
|
||||
<li>Guide you through any post-install setup</li>
|
||||
</ol>
|
||||
|
||||
<h2 id="provider-options">Choosing a Provider</h2>
|
||||
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 gap-4 my-6">
|
||||
<div class="bg-green-50 border border-green-200 rounded-lg p-4">
|
||||
<p class="font-bold text-green-800">Best for Getting Started: OpenCode</p>
|
||||
<ul class="text-sm text-green-700 mt-2">
|
||||
<li>4 FREE models included</li>
|
||||
<li>No API key required for free tier</li>
|
||||
<li>One command install</li>
|
||||
<li>Web UI for model management</li>
|
||||
</ul>
|
||||
<p class="text-xs text-green-600 mt-2">Install: Option 1 in the installer</p>
|
||||
</div>
|
||||
<div class="bg-blue-50 border border-blue-200 rounded-lg p-4">
|
||||
<p class="font-bold text-blue-800">Best for Privacy: Ollama</p>
|
||||
<ul class="text-sm text-blue-700 mt-2">
|
||||
<li>Runs 100% locally</li>
|
||||
<li>No data leaves your machine</li>
|
||||
<li>Free forever</li>
|
||||
<li>Great for sensitive content</li>
|
||||
</ul>
|
||||
<p class="text-xs text-blue-600 mt-2">Install: Option 3 in the installer</p>
|
||||
</div>
|
||||
<div class="bg-purple-50 border border-purple-200 rounded-lg p-4">
|
||||
<p class="font-bold text-purple-800">Best Quality: Claude</p>
|
||||
<ul class="text-sm text-purple-700 mt-2">
|
||||
<li>State-of-the-art reasoning</li>
|
||||
<li>Long context windows</li>
|
||||
<li>Excellent for complex tasks</li>
|
||||
<li>Pay per use</li>
|
||||
</ul>
|
||||
<p class="text-xs text-purple-600 mt-2">Install: Option 2 in the installer</p>
|
||||
</div>
|
||||
<div class="bg-gray-50 border border-gray-200 rounded-lg p-4">
|
||||
<p class="font-bold text-gray-800">Most Flexible: OpenAI</p>
|
||||
<ul class="text-sm text-gray-700 mt-2">
|
||||
<li>Wide ecosystem support</li>
|
||||
<li>Fast response times</li>
|
||||
<li>Reliable infrastructure</li>
|
||||
<li>Pay per use</li>
|
||||
</ul>
|
||||
<p class="text-xs text-gray-600 mt-2">Install: Option 4 in the installer</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h2 id="testing">Testing Your Setup</h2>
|
||||
|
||||
<p>After installation, verify everything works:</p>
|
||||
|
||||
<pre><code class="language-bash"># Test a specific provider
|
||||
cmdforge providers test opencode-pickle
|
||||
|
||||
# The test sends a simple prompt and shows the response
|
||||
# You should see something like:
|
||||
# Testing provider: opencode-pickle
|
||||
# Sending test prompt...
|
||||
# ✓ Provider responded successfully!
|
||||
# Response: "Hello! I'm working correctly."</code></pre>
|
||||
|
||||
<h2 id="listing">Viewing Configured Providers</h2>
|
||||
|
||||
<pre><code class="language-bash"># List all providers and their status
|
||||
cmdforge providers list</code></pre>
|
||||
|
||||
<p>Output:</p>
|
||||
|
||||
<pre><code class="language-text">Configured providers:
|
||||
|
||||
NAME COMMAND STATUS
|
||||
opencode-pickle opencode -m pickle ✓ Available
|
||||
claude-haiku claude -m haiku -p ✓ Available
|
||||
ollama-llama ollama run llama2 ✗ Not found
|
||||
mock echo '[MOCK]' ✓ Available
|
||||
|
||||
4 providers configured, 3 available</code></pre>
|
||||
|
||||
<h2 id="manual-add">Manually Adding Providers</h2>
|
||||
|
||||
<p>Need a custom provider? Add it manually:</p>
|
||||
|
||||
<pre><code class="language-bash"># Add a new provider
|
||||
cmdforge providers add my-provider "my-ai-cli --prompt"
|
||||
|
||||
# Add with description
|
||||
cmdforge providers add my-provider "my-ai-cli --prompt" --description "My custom AI"</code></pre>
|
||||
|
||||
<p>Or edit <code>~/.cmdforge/providers.yaml</code> directly:</p>
|
||||
|
||||
<pre><code class="language-yaml">providers:
|
||||
- name: my-provider
|
||||
command: "my-ai-cli --prompt"
|
||||
description: "My custom AI provider"</code></pre>
|
||||
|
||||
<h2 id="removing">Removing Providers</h2>
|
||||
|
||||
<pre><code class="language-bash"># Remove a provider you no longer use
|
||||
cmdforge providers remove old-provider</code></pre>
|
||||
|
||||
<h2 id="multiple">Using Multiple Providers</h2>
|
||||
|
||||
<p>You can have many providers configured and choose per-tool or per-run:</p>
|
||||
|
||||
<pre><code class="language-bash"># Use the tool's default provider
|
||||
cat file.txt | summarize
|
||||
|
||||
# Override for this run
|
||||
cat file.txt | summarize --provider ollama-llama
|
||||
|
||||
# Use a fast provider for quick tasks
|
||||
cat file.txt | summarize --provider opencode-pickle
|
||||
|
||||
# Use a powerful provider for complex tasks
|
||||
cat file.txt | summarize --provider claude-opus</code></pre>
|
||||
|
||||
<h2 id="mock">The Mock Provider</h2>
|
||||
|
||||
<p>CmdForge includes a built-in <code>mock</code> provider for testing without API calls:</p>
|
||||
|
||||
<pre><code class="language-bash"># Test your tool without using real AI
|
||||
cat file.txt | summarize --provider mock</code></pre>
|
||||
|
||||
<p>This returns a placeholder response, perfect for:</p>
|
||||
<ul>
|
||||
<li>Testing tool configuration</li>
|
||||
<li>Debugging variable flow</li>
|
||||
<li>CI/CD pipelines</li>
|
||||
<li>Saving money during development</li>
|
||||
</ul>
|
||||
|
||||
<h2 id="next">Next Steps</h2>
|
||||
|
||||
<ul>
|
||||
<li><a href="/docs/providers">Deep dive into provider configuration</a></li>
|
||||
<li><a href="/docs/first-tool">Create your first tool</a></li>
|
||||
<li><a href="/docs/testing-steps">Test your tools with mock providers</a></li>
|
||||
</ul>
|
||||
""",
|
||||
"headings": [
|
||||
("interactive-install", "The Interactive Installer"),
|
||||
("provider-options", "Choosing a Provider"),
|
||||
("testing", "Testing Your Setup"),
|
||||
("listing", "Viewing Configured Providers"),
|
||||
("manual-add", "Manually Adding Providers"),
|
||||
("removing", "Removing Providers"),
|
||||
("multiple", "Using Multiple Providers"),
|
||||
("mock", "The Mock Provider"),
|
||||
("next", "Next Steps"),
|
||||
],
|
||||
},
|
||||
|
||||
"cli-reference": {
|
||||
"title": "CLI Reference",
|
||||
"description": "Complete reference for all CmdForge commands",
|
||||
"content": """
|
||||
<p class="lead">A quick reference for every CmdForge command. Bookmark this page—you'll come back to it.</p>
|
||||
|
||||
<h2 id="tool-commands">Tool Commands</h2>
|
||||
|
||||
<table class="w-full my-4">
|
||||
<thead class="bg-gray-100">
|
||||
<tr>
|
||||
<th class="px-4 py-2 text-left">Command</th>
|
||||
<th class="px-4 py-2 text-left">Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="border-b">
|
||||
<td class="px-4 py-2"><code>cmdforge</code></td>
|
||||
<td class="px-4 py-2">Launch the Visual Builder (desktop GUI)</td>
|
||||
</tr>
|
||||
<tr class="border-b">
|
||||
<td class="px-4 py-2"><code>cmdforge list</code></td>
|
||||
<td class="px-4 py-2">List all installed tools</td>
|
||||
</tr>
|
||||
<tr class="border-b">
|
||||
<td class="px-4 py-2"><code>cmdforge create</code></td>
|
||||
<td class="px-4 py-2">Create a new tool (interactive wizard)</td>
|
||||
</tr>
|
||||
<tr class="border-b">
|
||||
<td class="px-4 py-2"><code>cmdforge edit <tool></code></td>
|
||||
<td class="px-4 py-2">Open tool config in your editor</td>
|
||||
</tr>
|
||||
<tr class="border-b">
|
||||
<td class="px-4 py-2"><code>cmdforge delete <tool></code></td>
|
||||
<td class="px-4 py-2">Remove a tool</td>
|
||||
</tr>
|
||||
<tr class="border-b">
|
||||
<td class="px-4 py-2"><code>cmdforge test <tool></code></td>
|
||||
<td class="px-4 py-2">Test a tool with mock provider</td>
|
||||
</tr>
|
||||
<tr class="border-b">
|
||||
<td class="px-4 py-2"><code>cmdforge run <tool></code></td>
|
||||
<td class="px-4 py-2">Run a tool directly (without wrapper)</td>
|
||||
</tr>
|
||||
<tr class="border-b">
|
||||
<td class="px-4 py-2"><code>cmdforge refresh</code></td>
|
||||
<td class="px-4 py-2">Regenerate all wrapper scripts</td>
|
||||
</tr>
|
||||
<tr class="border-b">
|
||||
<td class="px-4 py-2"><code>cmdforge docs <tool></code></td>
|
||||
<td class="px-4 py-2">View or edit tool documentation</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="px-4 py-2"><code>cmdforge check <tool></code></td>
|
||||
<td class="px-4 py-2">Check if tool dependencies are installed</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h2 id="registry-commands">Registry Commands</h2>
|
||||
|
||||
<table class="w-full my-4">
|
||||
<thead class="bg-gray-100">
|
||||
<tr>
|
||||
<th class="px-4 py-2 text-left">Command</th>
|
||||
<th class="px-4 py-2 text-left">Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="border-b">
|
||||
<td class="px-4 py-2"><code>cmdforge registry search <query></code></td>
|
||||
<td class="px-4 py-2">Search for tools</td>
|
||||
</tr>
|
||||
<tr class="border-b">
|
||||
<td class="px-4 py-2"><code>cmdforge registry install <tool></code></td>
|
||||
<td class="px-4 py-2">Install a tool from registry</td>
|
||||
</tr>
|
||||
<tr class="border-b">
|
||||
<td class="px-4 py-2"><code>cmdforge registry uninstall <tool></code></td>
|
||||
<td class="px-4 py-2">Uninstall a registry tool</td>
|
||||
</tr>
|
||||
<tr class="border-b">
|
||||
<td class="px-4 py-2"><code>cmdforge registry info <tool></code></td>
|
||||
<td class="px-4 py-2">Show tool details</td>
|
||||
</tr>
|
||||
<tr class="border-b">
|
||||
<td class="px-4 py-2"><code>cmdforge registry publish <tool></code></td>
|
||||
<td class="px-4 py-2">Publish a tool to registry</td>
|
||||
</tr>
|
||||
<tr class="border-b">
|
||||
<td class="px-4 py-2"><code>cmdforge registry my-tools</code></td>
|
||||
<td class="px-4 py-2">List your published tools</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="px-4 py-2"><code>cmdforge registry browse</code></td>
|
||||
<td class="px-4 py-2">Browse registry (interactive TUI)</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h2 id="collection-commands">Collection Commands</h2>
|
||||
|
||||
<table class="w-full my-4">
|
||||
<thead class="bg-gray-100">
|
||||
<tr>
|
||||
<th class="px-4 py-2 text-left">Command</th>
|
||||
<th class="px-4 py-2 text-left">Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="border-b">
|
||||
<td class="px-4 py-2"><code>cmdforge collections list</code></td>
|
||||
<td class="px-4 py-2">List available collections</td>
|
||||
</tr>
|
||||
<tr class="border-b">
|
||||
<td class="px-4 py-2"><code>cmdforge collections info <name></code></td>
|
||||
<td class="px-4 py-2">Show collection details</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="px-4 py-2"><code>cmdforge collections install <name></code></td>
|
||||
<td class="px-4 py-2">Install all tools in collection</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h2 id="provider-commands">Provider Commands</h2>
|
||||
|
||||
<table class="w-full my-4">
|
||||
<thead class="bg-gray-100">
|
||||
<tr>
|
||||
<th class="px-4 py-2 text-left">Command</th>
|
||||
<th class="px-4 py-2 text-left">Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="border-b">
|
||||
<td class="px-4 py-2"><code>cmdforge providers install</code></td>
|
||||
<td class="px-4 py-2">Interactive provider installation guide</td>
|
||||
</tr>
|
||||
<tr class="border-b">
|
||||
<td class="px-4 py-2"><code>cmdforge providers list</code></td>
|
||||
<td class="px-4 py-2">List configured providers</td>
|
||||
</tr>
|
||||
<tr class="border-b">
|
||||
<td class="px-4 py-2"><code>cmdforge providers check</code></td>
|
||||
<td class="px-4 py-2">Check which providers are available</td>
|
||||
</tr>
|
||||
<tr class="border-b">
|
||||
<td class="px-4 py-2"><code>cmdforge providers add <name> <cmd></code></td>
|
||||
<td class="px-4 py-2">Add a new provider</td>
|
||||
</tr>
|
||||
<tr class="border-b">
|
||||
<td class="px-4 py-2"><code>cmdforge providers remove <name></code></td>
|
||||
<td class="px-4 py-2">Remove a provider</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="px-4 py-2"><code>cmdforge providers test <name></code></td>
|
||||
<td class="px-4 py-2">Test a provider</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h2 id="project-commands">Project Commands</h2>
|
||||
|
||||
<table class="w-full my-4">
|
||||
<thead class="bg-gray-100">
|
||||
<tr>
|
||||
<th class="px-4 py-2 text-left">Command</th>
|
||||
<th class="px-4 py-2 text-left">Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="border-b">
|
||||
<td class="px-4 py-2"><code>cmdforge init</code></td>
|
||||
<td class="px-4 py-2">Create cmdforge.yaml manifest</td>
|
||||
</tr>
|
||||
<tr class="border-b">
|
||||
<td class="px-4 py-2"><code>cmdforge add <tool></code></td>
|
||||
<td class="px-4 py-2">Add tool to project dependencies</td>
|
||||
</tr>
|
||||
<tr class="border-b">
|
||||
<td class="px-4 py-2"><code>cmdforge install</code></td>
|
||||
<td class="px-4 py-2">Install project dependencies</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="px-4 py-2"><code>cmdforge deps</code></td>
|
||||
<td class="px-4 py-2">Show project dependencies</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h2 id="config-commands">Config Commands</h2>
|
||||
|
||||
<table class="w-full my-4">
|
||||
<thead class="bg-gray-100">
|
||||
<tr>
|
||||
<th class="px-4 py-2 text-left">Command</th>
|
||||
<th class="px-4 py-2 text-left">Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="border-b">
|
||||
<td class="px-4 py-2"><code>cmdforge config show</code></td>
|
||||
<td class="px-4 py-2">Show current configuration</td>
|
||||
</tr>
|
||||
<tr class="border-b">
|
||||
<td class="px-4 py-2"><code>cmdforge config set <key> <value></code></td>
|
||||
<td class="px-4 py-2">Set a configuration value</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="px-4 py-2"><code>cmdforge config connect <username></code></td>
|
||||
<td class="px-4 py-2">Connect to registry account</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h2 id="useful-flags">Useful Global Flags</h2>
|
||||
|
||||
<table class="w-full my-4">
|
||||
<thead class="bg-gray-100">
|
||||
<tr>
|
||||
<th class="px-4 py-2 text-left">Flag</th>
|
||||
<th class="px-4 py-2 text-left">Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="border-b">
|
||||
<td class="px-4 py-2"><code>--help</code></td>
|
||||
<td class="px-4 py-2">Show help for any command</td>
|
||||
</tr>
|
||||
<tr class="border-b">
|
||||
<td class="px-4 py-2"><code>--version</code></td>
|
||||
<td class="px-4 py-2">Show CmdForge version</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="px-4 py-2"><code>--provider <name></code></td>
|
||||
<td class="px-4 py-2">Override provider for tool execution</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h2 id="file-locations">Important File Locations</h2>
|
||||
|
||||
<table class="w-full my-4">
|
||||
<thead class="bg-gray-100">
|
||||
<tr>
|
||||
<th class="px-4 py-2 text-left">Path</th>
|
||||
<th class="px-4 py-2 text-left">Contents</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="border-b">
|
||||
<td class="px-4 py-2"><code>~/.cmdforge/</code></td>
|
||||
<td class="px-4 py-2">Tool configs directory</td>
|
||||
</tr>
|
||||
<tr class="border-b">
|
||||
<td class="px-4 py-2"><code>~/.cmdforge/<tool>/config.yaml</code></td>
|
||||
<td class="px-4 py-2">Individual tool configuration</td>
|
||||
</tr>
|
||||
<tr class="border-b">
|
||||
<td class="px-4 py-2"><code>~/.cmdforge/providers.yaml</code></td>
|
||||
<td class="px-4 py-2">Provider configurations</td>
|
||||
</tr>
|
||||
<tr class="border-b">
|
||||
<td class="px-4 py-2"><code>~/.local/bin/</code></td>
|
||||
<td class="px-4 py-2">Tool wrapper scripts</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="px-4 py-2"><code>./cmdforge.yaml</code></td>
|
||||
<td class="px-4 py-2">Project dependency manifest</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
""",
|
||||
"headings": [
|
||||
("tool-commands", "Tool Commands"),
|
||||
("registry-commands", "Registry Commands"),
|
||||
("collection-commands", "Collection Commands"),
|
||||
("provider-commands", "Provider Commands"),
|
||||
("project-commands", "Project Commands"),
|
||||
("config-commands", "Config Commands"),
|
||||
("useful-flags", "Useful Global Flags"),
|
||||
("file-locations", "Important File Locations"),
|
||||
],
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -3250,16 +4167,22 @@ def get_toc():
|
|||
SimpleNamespace(slug="visual-builder", title="Visual Builder"),
|
||||
SimpleNamespace(slug="yaml-config", title="YAML Config"),
|
||||
]),
|
||||
SimpleNamespace(slug="registry-usage", title="Using the Registry", children=[]),
|
||||
SimpleNamespace(slug="registry-usage", title="Using the Registry", children=[
|
||||
SimpleNamespace(slug="collections", title="Tool Collections"),
|
||||
]),
|
||||
SimpleNamespace(slug="arguments", title="Custom Arguments", children=[]),
|
||||
SimpleNamespace(slug="multi-step", title="Multi-Step Workflows", children=[
|
||||
SimpleNamespace(slug="code-steps", title="Code Steps"),
|
||||
SimpleNamespace(slug="tool-steps", title="Tools Within Tools"),
|
||||
]),
|
||||
SimpleNamespace(slug="testing-steps", title="Testing Sandbox", children=[]),
|
||||
SimpleNamespace(slug="providers", title="Providers", children=[]),
|
||||
SimpleNamespace(slug="providers", title="Providers", children=[
|
||||
SimpleNamespace(slug="provider-setup", title="Provider Setup"),
|
||||
]),
|
||||
SimpleNamespace(slug="project-deps", title="Project Dependencies", children=[]),
|
||||
SimpleNamespace(slug="publishing", title="Publishing", children=[]),
|
||||
SimpleNamespace(slug="advanced-workflows", title="Advanced Workflows", children=[
|
||||
SimpleNamespace(slug="parallel-orchestration", title="Parallel Orchestration"),
|
||||
]),
|
||||
SimpleNamespace(slug="cli-reference", title="CLI Reference", children=[]),
|
||||
]
|
||||
|
|
|
|||
Loading…
Reference in New Issue