Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/darellchua2/opencode-config-template/autodesk-aps-skillnpx skills add darellchua2/opencode-config-template --skill autodesk-aps-skillgit clone --depth 1 https://github.com/darellchua2/opencode-config-templateWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/darellchua2/opencode-config-template/autodesk-aps-skill)<a href="https://agentmods.dev/skills/darellchua2/opencode-config-template/autodesk-aps-skill"><img src="https://agentmods.dev/badge/skills/darellchua2/opencode-config-template/autodesk-aps-skill.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00049 | $0.06204 |
| Opus 5 | $0.00024 | $0.03102 |
| Sonnet 5 | $0.00010 | $0.01241 |
| Haiku 4.5 | $0.00005 | $0.00620 |
Grade B, and why
autodesk-aps-skill scanned grade B with 2 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Sends data to an external URLmediumData exfiltration
A POST to an outside endpoint may be telemetry or may be exfiltration; either way the mod talks to somewhere, and you should know where.
const response = await fetch('https://developer.api.autodesk.com/authentication/v2/token', { method: 'POST', Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
await fetch(uploadUrl, { How it starts
The opening of the file, as written. The whole thing — 985 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Autodesk Platform Services (APS) Integration
Provenance: extracted from autodesk-specialist-subagent. Domain knowledge for APS, Revit, Fusion 360, and AutoCAD API integration.
Autodesk Platform Services (APS) Overview
APS (formerly Forge) is Autodesk's cloud platform providing APIs for:
- Data Management API: Access BIM 360, ACC, and A360 data
- Model Derivative API: Convert 70+ CAD formats to SVF for viewing
- Viewer API: Embed 3D/2D viewers in web applications
- Design Automation API: Run Revit, AutoCAD, Inventor in the cloud
- Webhooks API: Event-driven automation
- Reality Capture API: Process photos into 3D models
APS Documentation
- Developer Portal: https://aps.autodesk.com/
- API Documentation: https://aps.autodesk.com/en/docs/data/v2/developers_guide/overview/
- Tutorials: https://aps.autodesk.com/tutorials
- GitHub Samples: https://github.com/Autodesk-Forge
Authentication Methods
1. Two-Legged OAuth (Client Credentials)
For server-to-server authentication without user context.
import fetch from 'node-fetch';
interface APSConfig {
clientId: string;
clientSecret: string;
}
async function get2LeggedToken(config: APSConfig): Promise<string> {
const response = await fetch('https://developer.api.autodesk.com/authentication/v2/token', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: new URLSearchParams({
client_id: config.clientId,
client_secret: config.clientSecret,
grant_type: 'client_credentials',
scope: 'data:read data:write data:create bucket:create bucket:read',
}),
});
const data = await response.json();
return data.access_token;
}
2. Three-Legged OAuth (Authorization Code)
For user authentication with account access.
const APS_CLIENT_ID = process.env.APS_CLIENT_ID!;
const APS_CLIENT_SECRET = process.env.APS_CLIENT_SECRET!;
const REDIRECT_URI = 'http://localhost:3000/api/auth/callback';
function getAuthorizationUrl(state: string): string {
const params = new URLSearchParams({
response_type: 'code',
client_id: APS_CLIENT_ID,
redirect_uri: REDIRECT_URI,
scope: 'data:read data:write user-profile:read',
state,
});
return `https://developer.api.autodesk.com/authentication/v2/authorize?${params}`;
}
async function exchangeCodeForToken(code: string): Promise<TokenResponse> {
const response = await fetch('https://developer.api.autodesk.com/authentication/v2/token', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: new URLSearchParams({
grant_type: 'authorization_code',
code,
client_id: APS_CLIENT_ID,
client_secret: APS_CLIENT_SECRET,
redirect_uri: REDIRECT_URI,
}),
});
return response.json();
}
interface TokenResponse {
access_token: string;
refresh_token: string;
expires_in: number;
token_type: string;
}
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago First seen · 985 lines · 49 tokens per session scan B d576b538eba2
autodesk-aps-skill is a skill published in the GitHub repository darellchua2/opencode-config-template (6 stars, last pushed 3d ago), licensed Apache-2.0. It adds 49 tokens to every session and 6,204 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it B with 2 findings (sends data to an external url, makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
systematic-debugging
Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes.
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.
auto-perf-optimize
Run agent-driven VS Code performance or memory investigations. Use when asked to launch Code OSS, automate a VS Code scenario, run the Chat memory smoke runner, capture renderer heap snapshots, take workflow screenshots, compare run summaries, or drive a repeatable scenario before heap-snapshot analysis.
chat-perf
Run chat perf benchmarks and memory leak checks against the local dev build or any published VS Code version. Use when investigating chat rendering regressions, validating perf-sensitive changes to chat UI, or checking for memory leaks in the chat response pipeline.
chat-pet-sprite-creation
Use when creating or changing VS Code chat pet sprite art, sprite sheets, state animations, eye treatments, Stable/Insiders variants, or pet transitions under src/vs/workbench/contrib/chat/browser/widget/media/chatPet.
cpu-profile-analysis
Analyze V8/Chrome CPU profiles (.cpuprofile) and DevTools trace files (Trace-.json). Use when: profiling performance, investigating slow functions, comparing code paths, finding bottlenecks, analyzing timeToRequest, understanding call trees from sampling profiler data, analyzing layout/paint/rendering, investigating…