Agent skill · research science · aradotso
learn-coding-agent
learn-coding-agent — an agent skill for coding agents.
Why this skill is useful
Adds deep knowledge of Claude Code's architecture, including internal patterns and implementation details that the AI wouldn't generate on its own.
What it needs
About 9k tokens when loaded. Last updated 2026-07-09. 70 stars on the source repository.
What this skill does
typescript // Minimal agent loop — the foundation everything else builds on async function agentLoop(userMessage: string) { const messages: Message[] = [ { role: "user", content: userMessage } ]; while (true) { const response = await claude.messages.create({ model: "claude-opus-4-5", maxtokens: 8096, tools: TOOLDEFINITIONS, messages, }); if (response.stopreason === "endturn") { // Final text response — return to user return extractText(response.content); } if (response.stopreason === "tooluse") { // Execute each tool the model requested const toolResults = await executeTools(response.content); // Append assistant response + tool results and loop messages.push({ role: "assistant", content: response.content }); messages.push({ role: "user", content: toolResults }); // → loop back to API call } } } typescript // Based on Claude Code's Tool.ts pattern interface Tool<TInput, TOutput> { name: string; description: string; inputSchema: JSONSchema; // Permission check before execution checkPermission(input: TInput, context: PermissionContext): PermissionResult; // Actual execution execute(input: TInput, context: ExecutionContext): Promise<TOutput>; // Whether this tool can run in parallel with others isReadOnly: boolean; } // buildTool factory pattern function buildTool<TInput, TOutput>(config: ToolConfig<TInput, TOutput>): Tool<TInput, TOutput> { return { name: config.name, description: config.description, inputSchema: config.inputSchema, checkPermission: config.checkPermission ?? defaultPermissionCheck, execute: config.execute, isReadOnly: config.isReadOnly ?? false, }; } // Example: a simple file-reading tool const readFileTool = buildTool({ name: "readfile", description: "Read the contents of a file", isReadOnly: true, inputSchema: { type: "object", properties: { path: { type: "string", description: "Absolute or relative file path" } }, required: ["path"] }, checkPermission: (input, ctx) => { if (isPathOutsideWorkdir(input.path, ctx.workdir)) { return { allowed: false, r …
How to use it
Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:
@skills aradotso/learn-coding-agent