playbook/outfitter-agents/plugins/outfitter-stack/skills/stack-audit/templates/plan/01-foundation.md

1.8 KiB

Stage 1: Foundation

Status: Not Started Blocked By: None Unlocks: Handlers, Errors, Adapters

Objective

Install dependencies and create shared infrastructure (context, logger).

Tasks

1.1 Install Dependencies

  • Install core packages

    bun add @outfitter/contracts @outfitter/logging @outfitter/config
    
  • Install optional packages (as needed)

    bun add @outfitter/cli      # CLI commands
    bun add @outfitter/mcp      # MCP server
    bun add @outfitter/file-ops # File operations
    bun add @outfitter/daemon   # Background services
    bun add @outfitter/testing  # Test harnesses
    

1.2 Create Logger

  • Create src/logger.ts
    import { createLogger, createConsoleSink } from "@outfitter/logging";
    
    export const logger = createLogger({
      name: "{{PROJECT_NAME}}",
      level: process.env.LOG_LEVEL || "info",
      sinks: [createConsoleSink()],
      redaction: { enabled: true },
    });
    

1.3 Create Context Factory

  • Create src/context.ts
    import { createContext } from "@outfitter/contracts";
    import { logger } from "./logger";
    
    export const createAppContext = () => createContext({ logger });
    export type AppContext = ReturnType<typeof createAppContext>;
    

1.4 Verify Setup

  • Create smoke test

    import { describe, it, expect } from "bun:test";
    import { createAppContext } from "../context";
    
    describe("foundation", () => {
      it("creates context with logger", () => {
        const ctx = createAppContext();
        expect(ctx.logger).toBeDefined();
        expect(ctx.requestId).toBeDefined();
      });
    });
    
  • Run test: bun test

Completion Checklist

  • Core packages installed
  • Logger created with redaction enabled
  • Context factory created
  • Smoke test passing

Notes

{{FOUNDATION_NOTES}}