Skip to content

Repository files navigation

commandline-crew logo

commandline-crew

Your AI-powered dev team in the terminal — a curated collection of specialized GitHub Copilot CLI agents designed to work together on real engineering tasks.


What's in This Repo?

Five specialized agents, the MCP servers they depend on, install/uninstall scripts, and a knowledge base system — all ready to drop into your workflow.

Agent Role Model
@dotnet-bot C# / .NET 10 implementation expert claude-sonnet-4.6
@quality-pal Code quality, linting, builds & tests claude-sonnet-4.6
@deep-thought Architecture consultant & system design claude-opus-4.6
@knowledgebase-wizard Documentation & library research claude-haiku-4.5
@kb-manager Knowledge base administration claude-haiku-4.5

Agents collaborate: @dotnet-bot and @deep-thought delegate research to @knowledgebase-wizard, and both use @quality-pal as a quality gate before declaring work done.


Why Use It?

  • Specialized > generalist. Each agent has a focused role, tuned tools, and restricted permissions — it won't edit files when it shouldn't, and won't invent answers when it can search for the real one.
  • Multi-agent pipelines out of the box. Agents call each other with a structured [AGENT-CALL] protocol for compact, citation-rich responses.
  • Bring your own docs. The knowledge base system lets you register local folders of markdown/PDFs so @knowledgebase-wizard searches your documentation first.
  • Safe to install globally. install.ps1 merges MCP server config non-destructively and copies agents to ~/.copilot/agents/ — it won't blow away your existing setup.

📦 Installation

# Clone the repo
git clone https://github.com/your-org/commandline-crew.git
cd commandline-crew

# Install globally (prompts before overwriting anything)
.\install.ps1

# Force overwrite existing agents/servers
.\install.ps1 -Force

What gets installed:

Source Destination Behavior
.github/agents/*.agent.md ~/.copilot/agents/ Copied (prompts on conflict)
.copilot/mcp-config.json ~/.copilot/mcp-config.json Merged (your custom servers preserved)

To remove everything:

.\uninstall.ps1          # Prompts before each deletion
.\uninstall.ps1 -Force   # Removes without prompting

Only servers and agents from this repo are removed — your own customizations are untouched.


🚀 Quick Start

After installing, agents are available in any directory:

copilot --agent dotnet-bot          -p "Design a repository pattern with DI for a user service"
copilot --agent quality-pal         -p "Run full quality assurance on the codebase"
copilot --agent deep-thought        -p "Analyze this codebase and recommend a migration to Clean Architecture"
copilot --agent knowledgebase-wizard -p "How do I use ConfigureAwait correctly?"
copilot --agent kb-manager          -p "List all registered knowledge bases"

🤖 Agent Reference

@dotnet-bot

C# implementation specialist for .NET 10 projects.

Workflow: Design public interface → write xUnit tests → implement → validate with @quality-pal

Strengths:

  • Modern C# 14 idioms (primary constructors, collection expressions, raw string literals)
  • API-first design with XML documentation
  • Async/await correctness (ConfigureAwait, CancellationToken, IAsyncEnumerable<T>)
  • Dependency injection patterns (Microsoft.Extensions.DependencyInjection)
  • Performance-aware code (Span<T>, ValueTask<T>, StringBuilder)
  • xUnit + NSubstitute test authoring

Tools: grep, glob, view, powershell, task, web_search, web_fetch, context7, mslearn

copilot --agent dotnet-bot -p "Implement an async service that validates and persists user data"
copilot --agent dotnet-bot -p "Create xUnit tests for this interface: @src/Services/IOrderService.cs"
copilot --agent dotnet-bot -p "Review @src/Services/UserService.cs for SOLID compliance and async best practices"

@quality-pal

Code quality gate — runs linters, builds, and tests across multiple languages.

Workflow: Identify changed files → skip generated code → run per-language tooling → classify findings → produce markdown report

Language support:

Language Tools
C# / .NET dotnet format, dotnet build, dotnet test
TypeScript / JS ESLint, npm audit, npm run build
PowerShell Invoke-ScriptAnalyzer
Python pylint, flake8, pytest
Rust cargo clippy, cargo audit
Go golangci-lint

Findings are classified 🔴 HIGH / 🟡 MEDIUM / 🟢 LOW. Read-only: never modifies files.

copilot --agent quality-pal -p "Run full quality assurance on the codebase"
copilot --agent quality-pal -p "Review @src/api/user-service.ts for quality issues"
copilot --agent quality-pal -p "Run linters, build, and test suite"

@deep-thought

Strategic technical advisor for architecture, system design, and high-stakes decisions.

Workflow: Classify request → explore codebase → reason with sequential thinking → produce structured report with Mermaid diagrams and ADRs

Output always includes:

  • Executive summary
  • Architecture diagrams (Mermaid.js)
  • Approach comparison table with trade-offs
  • Architectural Decision Records (ADRs)
  • Implementation strategy and risk assessment

Delegates web research to @knowledgebase-wizard. Read-only: never modifies files or executes commands.

copilot --agent deep-thought -p "Analyze this codebase and design a migration path to Clean Architecture"
copilot --agent deep-thought -p "Compare gRPC vs REST vs GraphQL for our internal service mesh"
copilot --agent deep-thought -p "Design a scalable event-driven order processing system"

@knowledgebase-wizard

Documentation and library research agent. Searches your local knowledge bases and the web.

Sources searched:

  • Local knowledge bases registered in docs/knowledge-bases.md
  • Microsoft Learn / Azure docs (via mslearn MCP)
  • Versioned library docs (via context7 MCP)
  • General web search

Used directly or called by other agents with [AGENT-CALL] prefix for compact structured responses. Read-only.

# General how-to questions
copilot --agent knowledgebase-wizard -p "How do I use async/await correctly in C#?"

# Search a specific knowledge base
copilot --agent knowledgebase-wizard -p "Search mqtt for: clean session false in MQTT V5"

# Search multiple knowledge bases
copilot --agent knowledgebase-wizard -p "Search backend and frontend for: authentication patterns"

@kb-manager

Manages the knowledge base registry (docs/knowledge-bases.md). Converts non-markdown files automatically using markitdown.

Operations: LIST · ADD · REMOVE

# See all registered knowledge bases
copilot --agent kb-manager -p "List all knowledge bases"

# Add a new knowledge base (converts PDFs automatically)
copilot --agent kb-manager -p "Add knowledge base 'mqtt' from ./resources/mqtt with description 'MQTT V5 specification'"

# Remove a knowledge base
copilot --agent kb-manager -p "Remove the 'old-docs' knowledge base"

📚 Knowledge Base Setup

Knowledge bases let @knowledgebase-wizard search your local documentation.

Quick Setup

1. Create a folder and add your files:

mkdir ./resources/mqtt
# Copy markdown or text files here.
# For PDFs: markitdown .\spec.pdf -o spec.md

2. Register via @kb-manager:

copilot --agent kb-manager -p "Add knowledge base 'mqtt' from ./resources/mqtt"

Or edit docs/knowledge-bases.md directly — it's a simple markdown table:

Name Description Paths Types
mqtt MQTT V5 specification `./resources/mqtt` markdown

3. Query:

copilot --agent knowledgebase-wizard -p "Search mqtt for: What does clean session = false mean?"

Path Rules

./resources/topic — relative, forward slashes
./docs/backend, ./docs/frontend — multiple paths, comma-separated
C:\absolute\path — no absolute paths
.\resources\topic — no backslashes


🔌 MCP Servers

The following MCP servers are configured in .copilot/mcp-config.json and installed alongside the agents:

Server Purpose
mslearn Microsoft Learn & Azure documentation API
context7 Versioned library documentation (via Upstash)
sequentialthinking Multi-step reasoning for complex architectural decisions
markitdown Convert PDF, DOCX, PPTX, Excel → markdown
playwright Browser automation

🧠 Skills

Skills are lightweight, model-invoked instruction packs stored in ~/.copilot/skills/<name>/SKILL.md. Copilot CLI reads the YAML frontmatter of each SKILL.md and activates the skill automatically when your prompt matches its trigger description.

Skill Trigger What it does
ask-folder Any exploratory question about the current folder (e.g. "what does this do", "how does X work", "where is Y defined", "explain this repo") Answers using only read-only tools (view, grep, glob, read-only MCP calls, git --no-pager inspection). Never edits, creates, builds, or runs side-effecting commands. Delivers concise, file-cited answers.
okf-wiki Requests to create, update, validate, or preview an LLM wiki / Open Knowledge Format bundle Curates workspace files and supplied URLs into OKF v0.1 markdown concepts, then uses a deterministic .NET/YamlDotNet tool to preserve frontmatter, regenerate indexes, append logs, preview changes, and validate conformance.
workflow-goal /workflow-goal <condition>, "workflow goal", or requests for bounded autonomous work with parallel research Maintains a measurable goal loop and dynamically launches read-only copilot -p workers for independent topics. Results are handed back through files; the parent session alone edits, validates, and completes the goal.

Install / Uninstall

# Install every skill under skills\ into ~\.copilot\skills\
.\install-skills.ps1
.\install-skills.ps1 -Force     # overwrite existing skills without prompting

# Remove skills installed by this repo (other skills are preserved)
.\uninstall-skills.ps1
.\uninstall-skills.ps1 -Force

Both scripts iterate every subfolder of skills\, so adding a new skill is just a matter of creating skills\<name>\SKILL.md and re-running install-skills.ps1. Nested skill files are copied recursively. This includes the okf-wiki .NET tool and its pinned package configuration. Uninstallation removes only skill folders represented in this repository and preserves unrelated user-created skills.

OKF Wiki

okf-wiki creates and maintains LLM wikis based on Open Knowledge Format (OKF) v0.1. It can use the current workspace, explicitly supplied local files, and user-specified URLs as source material.

Create an OKF wiki from the API docs in this repository
Update .\knowledge with the customer schema from .\schemas\customer.json
Preview adding https://example.com/runbook to .\llm-wiki
Validate the OKF bundle at .\llm-wiki

The skill supports four operations:

Operation Behavior
Create Writes new concept documents with required YAML frontmatter.
Update Matches by explicit concept path first, then by a unique resource URI.
Preview Reports concept, index, and log changes without writing files.
Validate Checks concept frontmatter plus reserved index.md / log.md structure.

When no bundle path is supplied for a write, the skill proposes .\llm-wiki and confirms it before continuing. Successful changes regenerate the affected directory indexes and their ancestors, then append entries to the root log and the changed concept's directory log.

The deterministic helper is installed with the skill and requires the .NET 10 SDK. It uses a pinned YamlDotNet dependency to parse real YAML, preserve unknown frontmatter fields, reject unsafe paths and ambiguous resource matches, and keep dry runs free of filesystem writes.

Workflow Goal

/workflow-goal combines an evidence-based autonomous goal loop with dynamic fan-out/fan-in research:

/workflow-goal fix every failing test and prove the full suite passes
/workflow-goal review each of these 41 files with one agent per file
/workflow-goal compare the three approaches; use gpt-5.5-mini for workers
/workflow-goal status
/workflow-goal clear

The skill defaults to eight concurrent claude-haiku-4.5 workers with the normal context tier. Explicit prompt instructions override those defaults: one-agent-per-file over 41 files starts 41 workers, and a requested model is passed to Copilot CLI exactly rather than silently replaced.

Workers run in non-interactive prompt mode and are restricted to non-destructive research: local file reads/search, web search/fetch, and configured read-only MCP tools. Mixed-capability MCP servers require exact read-only tool names. Workers cannot edit source, use shell commands, store memory, recursively orchestrate, or decide that the goal is complete. /workflow-goal clear sends a cancellation request to the active helper and stops its recorded worker process IDs before clearing the session goal.

Configuration is installed at:

~\.copilot\skills\workflow-goal\config.json

Key settings include defaultWorkers, workerModel, workerContext, workerTimeoutSeconds, workerMaxAiCredits, hardWorkerLimit, artifact retention, URL access, and read-only MCP allowlists. Environment overrides use the WORKFLOW_GOAL_* prefix. The default artifact root is %TEMP%\copilot-workflow-goal; successful runs are removable after fan-in, while failed, timed-out, or cancelled runs are preserved for diagnosis.

Each worker is a separate Copilot CLI session and consumes AI credits. Use an explicit worker count, model, or optional hard limit when cost or local process capacity matters.


🔭 Hooks Observability

Track what Copilot agents are doing across sessions — tool usage, files touched, errors, user complaints, and estimated token consumption — all stored in a per-project SQLite database.

How It Works

Six Python hook scripts fire at each lifecycle event and write structured records to observability/hooks.db:

Hook What is logged
sessionStart Session ID, source (new/resume), initial prompt
sessionEnd End reason (complete/error/abort/timeout/user_exit)
userPromptSubmitted Prompt text, token estimate, error-complaint flag
preToolUse Tool name + args before execution
postToolUse Tool name, file path, result type, token estimates
errorOccurred Error name, message, and stack trace

Install into any repository

Requires Python 3.9+ (uses only the standard library).

# Install hooks into a target repo
.\install-hooks.ps1 -TargetRepo C:\projects\my-app

# Force overwrite if already installed
.\install-hooks.ps1 -TargetRepo C:\projects\my-app -Force

This copies hooks/*.py and writes two hooks.json files:

  • {repo}/hooks.json — used by Copilot CLI (loaded from cwd)
  • {repo}/.github/hooks/hooks.json — used by Copilot coding agent

Add the database directory to .gitignore:

observability/

View reports

Run any of these from inside the target repository:

python hooks/report.py sessions          # recent sessions with duration
python hooks/report.py tools             # tool usage counts, failures, tokens
python hooks/report.py files             # files most frequently touched
python hooks/report.py errors            # agent errors
python hooks/report.py tokens            # estimated token usage per session
python hooks/report.py prompts           # user prompts with error-complaint detection
python hooks/report.py failures          # failed tool calls with the triggering prompt
python hooks/report.py patterns          # recurring error + failure hot-spot patterns
python hooks/report.py dashboard         # generate observability/dashboard.html

All commands accept --limit N, --session <id>, and --db <path>. The dashboard command also accepts --output <path> (default: observability/dashboard.html). The generated HTML dashboard requires internet access to load Chart.js from the CDN.

Uninstall

# Remove hook scripts and config (keep the database)
.\uninstall-hooks.ps1 -TargetRepo C:\projects\my-app

# Remove everything including the database
.\uninstall-hooks.ps1 -TargetRepo C:\projects\my-app -Force -PurgeData

Override the database path

Set COPILOT_HOOKS_DB_PATH to write all events to a single central database:

$env:COPILOT_HOOKS_DB_PATH = "C:\observability\copilot-hooks.db"
python hooks/report.py sessions --db C:\observability\copilot-hooks.db

🧪 Samples

Ready-to-run examples that demonstrate what you can build with the GitHub Copilot SDK.

Release Note Generator

Generates structured release notes from local git commit messages using the Copilot SDK. Copilot drives the conversation — it asks for any missing inputs, runs git log, and categorizes commits automatically.

Output sections: 💥 Breaking Changes · ✨ New Features · 🔧 Improvements · 🐛 Bug Fixes

Requirements: .NET 9+ with the dotnet run single-file execution feature (no project file needed).

# Let Copilot ask for everything interactively
dotnet run samples/copilot-sdk/release-note-generator.cs

# Or supply args directly
dotnet run samples/copilot-sdk/release-note-generator.cs -- \
  --repo C:\projects\my-app \
  --since 2025-10-15 \
  --branch main
Flag Description Default
--repo <path> Path to a local git repository Copilot asks
--since <date> Include commits after this date (2025-10-15, 15.10.2025, …) Copilot asks
--branch <branch> Branch to read commits from Copilot asks (optional)

SKILL.md Generator

Analyses a source repository (local path or remote URL) and produces a concise /<package>/SKILL.md that helps AI assistants super-charge usage of that library.

Copilot drives the analysis — it reads README, samples, and tests to extract real APIs grouped by functional area. Falls back to scanning the public API surface when no usage examples are found.

What gets extracted:

  • Core APIs grouped by usage, with one-line comments from XML docs
  • Logging & tracing — how to enable and configure
  • Error handling pattern (exceptions, Result types, callbacks…)
  • Architecture & design patterns observed in the source
  • ⚠️ Caveats section (staleness, license warnings, missing docs)

Requirements: .NET 9+ with the dotnet run single-file execution feature (no project file needed).

# Let Copilot ask for everything interactively
dotnet run samples/copilot-sdk/skill-md-generator.cs

# Supply args directly — local path
dotnet run samples/copilot-sdk/skill-md-generator.cs -- \
  --source C:\projects\my-library \
  --target C:\skills

# Supply args directly — remote URL
dotnet run samples/copilot-sdk/skill-md-generator.cs -- \
  --source https://github.com/org/repo \
  --target C:\skills
Flag Description Default
--source <path-or-url> Local path to a git repo or a remote git URL Copilot asks
--target <folder> Output folder; SKILL.md is written to <folder>/<package>/SKILL.md Copilot asks

Automatic checks:

  • ⚠️ Warns if the repository has had no commits for over a year (stale knowledge)
  • ⚠️ Warns if the license is not MIT or Apache 2.0
  • ⚠️ Warns and switches to public-API analysis if no samples, tests, or README code blocks exist

📁 Repository Structure

commandline-crew/
├── .github/
│   ├── agents/
│   │   ├── dotnet-bot.agent.md
│   │   ├── quality-pal.agent.md
│   │   ├── deep-thought.agent.md
│   │   ├── knowledgebase-wizard.agent.md
│   │   └── kb-manager.agent.md
│   └── instructions/
│       └── dotnet.instructions.md     ← C# coding standards
├── .copilot/
│   └── mcp-config.json                ← MCP server definitions
├── docs/
│   └── knowledge-bases.md             ← Knowledge base registry
├── hooks/
│   ├── db.py                          ← SQLite schema + helpers
│   ├── session_start.py               ← sessionStart hook
│   ├── session_end.py                 ← sessionEnd hook
│   ├── user_prompt.py                 ← userPromptSubmitted hook
│   ├── pre_tool_use.py                ← preToolUse hook
│   ├── post_tool_use.py               ← postToolUse hook
│   ├── error_occurred.py              ← errorOccurred hook
│   └── report.py                      ← reporting CLI
├── samples/
│   └── copilot-sdk/
│       ├── release-note-generator.cs  ← Copilot SDK sample (single-file)
│       └── skill-md-generator.cs      ← Copilot SDK sample (single-file)
├── skills/
│   ├── ask-folder/
│   │   └── SKILL.md                   ← read-only folder-QA skill
│   └── workflow-goal/
│       ├── SKILL.md                   ← bounded goal + dynamic workflow
│       ├── Invoke-WorkflowGoal.ps1     ← parallel prompt-mode launcher
│       ├── config.json                ← worker defaults and permissions
│       └── THIRD-PARTY-NOTICES.md     ← upstream MIT attribution
├── tests/
│   └── workflow-goal/
│       └── Invoke-WorkflowGoal.Tests.ps1
├── resources/                         ← gitignored; put your PDFs/docs here
├── hooks.json                         ← hooks config for Copilot CLI
├── install.ps1
├── install-hooks.ps1
├── install-skills.ps1
├── uninstall.ps1
├── uninstall-hooks.ps1
└── uninstall-skills.ps1

About

Your AI-Enhanced Dev Team in the terminal

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages