8 hour customer workshop
Spend fewer tokens. Keep quality. Build enterprise guardrails.
Reveal.js deck generated from repository guide content.
Input, output, cached tokens, agent loops, MCP schemas, model routing.
Prompt compression, output control, context hygiene, Ask/Edit/Agent routing.
Enterprise budgets, model policy, instruction scope, monthly review loop.
Use docs.github.com/copilot for supported feature behavior, billing controls, and admin policy.
| Time | Block | Output |
|---|---|---|
| 00:00-00:30 | Why tokens matter + fast wins | Shared cost model |
| 00:30-02:00 | Prompt, language, output labs | Terse prompt templates |
| 02:00-03:15 | Context + always-on files | Instruction pruning diff |
| 03:15-04:15 | Workflow + modes | Mode routing cheat sheet |
| 04:15-05:15 | MCP/tool costs + data | MCP audit list |
| 05:15-06:15 | Practical setup | Repo setup checklist |
| 06:15-07:10 | Model/pricing + governance | Customer admin rollout |
| 07:10-07:40 | Outcome per token | Plan/execute/verify loop |
| 07:40-08:00 | Capstone | 30 day token plan |
Horizontal = chapters. Vertical = chapter slides + labs.
Press Esc for overview. Press S for speaker notes.
Quick Start
Start with output, then shrink structural input, then route models and tools.
applyTo./chronicle cost tips & /chronicle improve in Copilot CLI.One default changes every response.
Small baselines compound.
Ask, Edit, Agent by task shape.
Budgets and model policy cap spend.
Plan, route, verify, close.
Identify your top 3 token leaks before learning techniques.
Do: mark each as green/yellow/red: output verbosity, instruction size, open tabs, Agent use, MCP count, model pinning, long chat history.
Deliverable: personal baseline + one "fix today" action.
Time: 10 minutes.
Part 1
Tokens drive cost, speed, limits, and context capacity.
Sure, I'd be happy to help! can burn around 10 tokens of zero technical value.
Output tokens usually cost materially more than input tokens in vendor pricing examples.
Context window
├─ System prompt
├─ copilot-instructions.md / AGENTS.md
├─ File context and open tabs
├─ Conversation history
├─ MCP tool schemas
└─ Your typed prompt
Your 20-word prompt can ride inside thousands of hidden tokens.
One issue-to-PR run is not one request.
Plan, search, read files, edit, run tests, inspect failures, retry.
Every step reloads baseline context and adds previous tool results.
Separate visible prompt from hidden context.
Do: choose one recent Copilot task. List likely context sources: open files, referenced files, instructions, history, tools, output.
Discuss: which source was most controllable?
Time: 15 minutes.
Part 2.1
Say same thing in fewer tokens. Preserve technical precision.
Articles, filler, pleasantries, hedging, softeners.
Technical terms, code, filenames, constraints, exact done condition.
[thing] [action] [reason]. [next step].
| Verbose | Caveman |
|---|---|
| Could you please review this pull request and let me know if there are any issues? | Review PR. Flag issues. |
| Can you explain what this error message means and how I should fix it? | Explain error. How fix. |
| Level | Style | Use when |
|---|---|---|
| Lite | Professional but tight | Client-facing, onboarding |
| Full | Fragments, no fluff | Daily developer prompts |
| Ultra | Abbrev, arrows, terse | High-volume, known domain |
POST /api/users
Validate:
- name: string, required
- email: string, required, valid
400 on validation fail
201 on success, return created user
Save to DB
Bullets and key-value pairs force clarity and reduce filler.
Create a function that takes numbers, filters negative values, doubles remaining values, returns sum.
fn(nums) -> filter(>0) -> map(*2) -> sum
Like getUserById but for emails. 404 if missing.
| Verbose procedure | Compressed invariant |
|---|---|
| Make sure every SQL query parameterizes values... | SQL: parameterized queries only. No concatenation. |
| Please write tests for any new code... | New code -> tests. Cover happy + error. |
Rewrite one real prompt three ways: lite, full, ultra.
Do: preserve file names, line numbers, constraints, done condition. Drop only fluff.
Compare: which version is shortest without adding ambiguity?
Time: 20 minutes.
A: Could you take a look at auth and improve error handling?
B: File: src/auth/login.ts.
Bug: null user causes .email crash.
Fix: null guard before .email.
Test: add null-user case.
Done: targeted test passes.
Run: ask Copilot with A, then B. Compare file reads, clarifications, output length.
Part 2.2
English is usually most token-efficient for prompts.
| Language | Sentence | Tokens | vs English |
|---|---|---|---|
| English | I met a huge dog | 5 | 1.0x |
| Spanish | Conoci a un perro enorme | 8 | 1.6x |
| Chinese | Chinese equivalent | 11 | 2.2x |
| Japanese | Japanese equivalent | 11 | 2.2x |
| Russian | Russian equivalent | 14 | 2.8x |
If a user writes better in native language, quality can outweigh token cost. For optimization, English wins.
Disprove or confirm language assumptions with actual token counts.
Do: pick one prompt. Translate to your strongest non-English language. Compare token counts in tokenizer tool.
Deliverable: team language guidance: when English is required, when native language is OK.
Time: 20 minutes.
Part 2.3
Control what gets sent. Biggest input wins are structural.
.github/copilot-instructions.md, AGENTS.md, CLAUDE.md, and similar files can become persistent context.
Duplicate content can be paid twice when multiple files are loaded by different tools.
Terse like caveman. Technical substance exact. Only fluff die.
Drop: articles, filler (just/really/basically), pleasantries, hedging.
Fragments OK. Short synonyms. Code unchanged.
Pattern: [thing] [action] [reason]. [next step].
Around 50 tokens. Loaded on every interaction.
---
applyTo: "src/api/**/*.ts"
---
API conventions:
- Routes in src/api/routes/. Handlers thin, logic in services/.
- Validate with zod.
- Errors via Result<T,E>, never throw.
Pay path-specific guidance only when relevant files are in scope.
Configure Content Exclusion for sensitive files, generated bundles, large data files, and regulated paths.
Important: treat this as privacy/policy control first, token-saving side effect second. Check current surface support in official docs.
Find always-on context that should become scoped or on-demand.
Do: inspect repo instructions, AGENTS/CLAUDE files, open tabs, generated files, MCP config.
Deliverable: three-column list: keep always-on, move to applyTo, move on-demand/delete.
Time: 30 minutes.
Part 2.4
Tell model what not to say. Highest per-token ROI.
Code only, no explanation.
Best for generation tasks when team already understands desired change.
| Instruction | Use when |
|---|---|
| Answer in one sentence | Quick decision or explanation |
| 3 bullets max | Scan-friendly summary |
| Reply as JSON | Machine-readable extraction |
| Yes/no, then one line why | Review gate |
| Diff only | Patch inspection |
Be concise. No explanations unless asked.
Code only for generation tasks.
Bullets over paragraphs.
Override when learning, debugging, or teaching: ask for explanation explicitly.
A: Add input validation to processOrder().
B: Add input validation to processOrder().
Code only. No explanation. Minimal diff.
Measure: response length, explanation tokens, diff usefulness.
Time: 15 minutes.
Practice asking for bounded output.
Prompts: "3 bullets max", "table only", "JSON only", "one-line verdict + risk".
Deliverable: team snippet library for common Copilot outputs.
Part 2.5
Use cheaper interaction shapes before optimizing words.
feat: add password reset via settings page
Body only when "why" is not obvious.
L42: bug: user can be null. Add guard before .email.
One-line, actionable, severity-coded.
Auto is a good baseline: supported Auto pool, org policy-aware, discount on eligible paid-plan Chat usage per docs.
Auto does not mean "escalate into every premium model." Pin premium deliberately.
Target model: GPT-5.5.
Guide: <official prompting guide URL>
Files: .github/copilot-instructions.md, .github/instructions/*.md
Adapt prompts to guide. Preserve behavior. Reduce rework.
Show diff only.
/chronicleCopilot CLI session history (not VS Code). Use /chronicle cost tips for token spend and /chronicle improve for recurring confusion.
VS Code local extension. Finds anti-patterns, context health, skill opportunities.
Stop using Agent Mode for one-shot work.
Do: classify 20 sample tasks as Ask/Edit/Agent/Coding Agent. Defend choice.
Deliverable: team mode-routing cheat sheet.
Time: 20 minutes.
Prevent expensive-model pinning by default.
Do: map tasks to Auto, included/lower-cost, standard, premium. Include reasoning-effort choice if available.
Deliverable: model escalation rules.
Part 2.6
More context can make agents worse and cost more.
| Finding | Observed impact |
|---|---|
| LLM-generated context files | Hurt in 5/8 settings |
| Average correctness | Down about 2% |
| Token cost | Up 20-23% |
| Reasoning overhead | Up about 22% in cited setup |
Repeats facts agent can discover.
Important rules get lost in middle.
Outdated tool guidance over-influences agent.
Routine facts dilute landmines.
| Keep | Delete |
|---|---|
Use uv instead of pip | This is a Python project |
| DB migrations must run in order | We use PostgreSQL |
| Do not refactor auth module; audit pending | We use JWT auth |
| Deploy requires VPN | Main branch protected |
Start almost empty.
Agent trips on something -> add one line.
Root cause fixed -> delete that line.
Instruction files should grow and shrink, not accumulate like a wiki.
Cut context without losing correctness.
Do: mark each instruction as discoverable, style, landmine, stale, duplicate. Delete or scope everything except true always-on landmines.
Deliverable: 10-line max instruction file draft.
Time: 35 minutes.
Part 2.7
Tool schemas are hidden token tax.
/context
System/Tools: MCPs + instructions + system prompt
Messages: conversation history
Free Space: remaining context
In VS Code, estimate active MCP servers x tools x about 200 tokens/tool.
| Component | Approx cost |
|---|---|
| Name + description | 20-50 tokens |
| Simple parameter schema | 30-80 tokens |
| Complex parameter schema | 100-300 tokens |
| Total per tool | 100-500 tokens |
10 MCP servers
x 5 tools each
x 200 tokens/tool
= 10,000 tokens per step
15 agent steps = 150,000 schema tokens
Rust CLI proxy filters noisy shell output: tests, git diff, grep, logs, file listings.
rtk init --copilot
YAML-extensible command filters with local savings stats and team-maintained rules.
snip init --agent copilot
Pick one output filter layer per command path. Do not stack RTK and snip by default.
| Layer | Tool | Reduces |
|---|---|---|
| Workflow turns | CodeAct | Repeated model-tool loops |
| Command output | RTK or snip | Verbose shell results |
| Command choice | minimal-context-tools | Broad search/read behavior |
| Codebase orientation | Graphify | Repeated file rereads |
| Visibility | Chronicle / Coach | Waste you would miss |
One large plugin can dominate System/Tools budget.
--namespace appservice --namespace cosmos --namespace keyvault --namespace storage
Scope by service/persona. Avoid "all tools" mode unless truly needed.
Remove hidden schema overhead.
Do: inventory enabled MCP servers, tool counts, global vs workspace scope, owner, frequency of use.
Deliverable: keep/disable/scope table + restart plan.
Time: 30 minutes.
Define approved MCP servers by persona: developer, data, platform, security, support.
Deliverable: default MCP profile per team + exception process for large plugins.
Part 3
Use evidence to pick habits with best impact-to-effort.
| Technique | Prompt | Tokens |
|---|---|---|
| Verbose | Please add comprehensive error handling... | ~40 |
| Caveman lite | Add error handling. Cover null, types, network. | ~16 |
| Caveman full | Error handling. Cover: null, bad type, net error. | ~12 |
| Ultra | Error handling: null/bad-type/net-err. | ~7 |
Savings: lite ---- full ---- ultra ---- extreme
Risk: low ---- low ---- medium --- high
Sweet spot: full caveman. Maximum return, negligible risk for technical users.
Pick changes by impact, effort, risk.
Do: rate each technique 1-5 for impact, effort, adoption friction, governance need.
Deliverable: team top 5 and "do not adopt" list.
Time: 25 minutes.
Part 4
Turn techniques into repo and team defaults.
.github/copilot-instructions.md.applyTo.copilot-setup-steps.yml for Coding Agent.Terse like caveman. Technical substance exact. Only fluff die.
Drop: articles, filler, pleasantries, hedging.
Fragments OK. Short synonyms. Code unchanged.
Code only for generation tasks. No explanation unless asked.
Minimize tool calls. Batch related reads/edits.
# .github/copilot-setup-steps.yml
steps:
- name: Install dependencies
run: npm ci
- name: Build
run: npm run build
Prevents discovery by trial and error. Saves agent steps.
Bug: login fails when email contains "+".
File: src/auth/login.ts, validateEmail() L42.
Fix: URL-encode email before OAuth provider call.
Test: add user+tag@example.com case.
Done: targeted test passes.
| Week | Habit |
|---|---|
| 1 | Compressed instructions + Ask Mode for questions |
| 2 | Caveman-lite prompts |
| 3 | Caveman-full + structured formats |
| 4 | Code-only defaults + reusable snippets outside always-on context |
{
"chat.agent.maxRequests": 10,
"github.copilot.chat.agent.model": "auto"
}
Cap runaway sessions carefully. Increase only when task requires it.
model
mode
agent/profile
active MCP/tools
output filter
repo instructions
Choose before the session starts. Stable harness = predictable cost and cache behavior.
Create a repo-ready token optimization PR draft.
Do: draft copilot-instructions.md, one scoped instruction file, one Coding Agent setup step, one issue template snippet.
Deliverable: branch or patch proposal.
Time: 45 minutes.
Part 4.2
Separate Copilot docs, UBB framing, and vendor token pricing.
| View | Answers |
|---|---|
| GitHub Copilot docs | Plan availability, model access, Auto behavior, published signals |
| UBB framing | AI-credit budgets and governance after cutover |
| Vendor API pricing | Input vs output intuition, not Copilot billing table |
| Effort | Use for |
|---|---|
| Low | High-volume simple chat/classification |
| Medium | Typical coding and tool-heavy work where supported |
| High/max | Architecture, security, novel decomposition |
Use only on models that expose this control.
Define when users may pin premium models and when Auto is required.
Do: map workflows to default model lane, escalation trigger, expected value, rollback signal.
Deliverable: one-page model policy draft.
Time: 30 minutes.
Part 4.3
Admin controls cap spend. Prompt habits improve efficiency.
Prompt compression does not cap spend. It reduces waste inside allowed usage.
Set enterprise/org/cost-center budgets. Enable alerts early. Enable stop-usage after reporting is trusted. Review monthly.
$0 budget: no usage-based features.| Question | Decision |
|---|---|
| Which workflows need premium? | Enable narrowly |
| Which teams create measurable value? | Assign higher budgets |
| Which users can stay on Auto? | Keep default path cheap |
| What rollback signal? | Usage up, value flat |
Useful for different model policies or billing boundaries when org structure already matches groups.
Costs: admin overhead, license complexity, user sprawl, SCIM/cost-center constraints.
Design budget rollout for one enterprise account.
Do: choose pilot org, cost center, baseline budget, alert threshold, stop-usage rule, user exceptions.
Deliverable: budget operating model.
Time: 35 minutes.
Agent sessions spike AI-credit usage 4x in one team. Delivery output unchanged.
Decide: budget action, model policy action, instruction/context action, MCP audit action, comms plan.
Time: 25 minutes.
Part 4.4
Optimize for accepted work, not the shortest prompt.
A short prompt that causes wrong-direction work is more expensive than a longer plan that lands correctly.
| Finding | Implication |
|---|---|
| Agentic coding can consume far more than chat | Do not extrapolate simple-chat cost |
| Same task can vary widely across runs | Use budgets and stop rules |
| More tokens do not guarantee accuracy | Optimize loop quality |
| Input dominates agentic cost | Context hygiene matters |
| Skill | Token effect |
|---|---|
| Brainstorming | Prevents early lock-in |
| Planning | Reduces guessing during execution |
| Greenness | Avoids debugging unknown baseline failures |
| Verification | Prevents false completion |
| Impeccable close | Prevents review churn |
| Branch-close discipline | Stops stale context carryover |
Superpowers, planning, TDD, branch finish.
agent-toolkit patterns for requirements, plans, entropy control.
Secrets, cloud, DB, Docker, dependency, and retry-stop cautions.
Browser evidence, writing review, QA depth on demand.
Do not install every skill. Load only what changes the next action.
Stars show attention, not quality. Judge by whether the skill changes the next agent action.
Capstone
Turn workshop into customer rollout.
| Week | Team action | Admin action |
|---|---|---|
| 1 | Output defaults + Ask Mode | Usage baseline |
| 2 | Instruction pruning + scoped rules + Markdown conversion | Budget pilot |
| 3 | MCP audit + output filter + Graphify pilot | Model access review |
| 4 | Plan-first execution + verification/close discipline | Monthly outcome-per-token review |
Create customer-specific action plan.
Sections: repo changes, user habits, MCP/tool policy, model policy, budgets, reporting, owner, due date.
Deliverable: 30 day plan ready for customer sponsor.
Time: 30 minutes.
applyTo files