Squid Scaffold logo

Squid Scaffold

Community
iusztinpaul
squid-scaffold

Bootstrap a new repo or component from the opinionated spec library (mode=create), or audit an existing scaffolded repo for drift against the scaffold rules (mode=evaluate, report-only).

Overview

Publisheriusztinpaul
Repositorysquid
Skill namesquid-scaffold
Stars
207
Forks
34
Bundled files
48
LicenseApache-2.0
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 48 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by iusztinpaul on GitHub. Read the source before you install it.

Installation

Install the Squid Scaffold AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/iusztinpaul/squid/tree/main/skills/squid-scaffold
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/iusztinpaul/squid.git /tmp/squid
mkdir -p .claude/skills
cp -r /tmp/squid/skills/squid-scaffold .claude/skills/squid-scaffold
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Squid Scaffold in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Squid Scaffold on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Squid Scaffold is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Scaffold

Interactive bootstrap for a new repo (or a new component in an existing one): read only the specs under specs/ that apply, distil them into a tailored AGENTS.md, lay down an empty skeleton, hand back.

Modes

$ARGUMENTS may lead with mode=create (default) or mode=evaluate:

  • mode=create (default) — bootstrap a repo / component. The flow in "## Flow" below.
  • mode=evaluate — audit an existing scaffolded repo for drift (report-only). For mode=evaluate, read evaluate.md and follow E1–E4 instead of the Flow.

Every rule both modes honour lives in rules.md — the single source of truth; mode=create follows every P# + I# while composing, mode=evaluate audits the I#. Do not restate any rule in this file.

When to use

  • Bootstrapping a brand-new repo.
  • Adding a new runtime component (backend / frontend-web / frontend-tui) to an existing scaffolded repo.
  • Re-generating the root AGENTS.md after a major stack change (e.g. swapping Vue for React).

When NOT to use

  • Authoring application source or business logic (P1).
  • Adjusting opinions inside an existing project — edit the generated AGENTS.md directly.
  • Non-polyglot single-package projects where the full machinery is overkill. (You can still use a single spec as reference, but skip the scaffold flow.)

Flow

1. Gather requirements

Use AskUserQuestion to collect answers. Consolidate where possible — one or two prompts, not a twelve-step interview. Minimum set:

  1. Project identity — name, short description, license (MIT / Apache-2.0 / proprietary). Name becomes the repo / root AGENTS.md title; slug is derived.
  2. Layout — monorepo (packages/<c>/ tree) or standalone single-package?
  3. Components (multi-select; at least one required):
    • backend — Python service / pipeline / library
    • frontend-web — TypeScript browser SPA
    • frontend-tui — Go terminal UI
  4. Backend variant (if backend chosen): fastapi-service / fastmcp-server / cli-tool-python / library-only.
  5. Frontend-web framework (if frontend-web chosen): react / vue / svelte / vanilla.
  6. Frontend-tui framework (if frontend-tui chosen): bubbletea (default) / tview.
  7. Shared OpenAPI contracts (only if backend + ≥1 frontend): yes / no.
  8. Infra (multi-select): docker, github-actions, pre-commit-hooks.
  9. Agent team + tracker? yes (recommended) / no. Also: file-based tracker or GitHub Issues?
  10. Process & documentation (multi-select, optional): adr (Architecture Decision Records under docs/adr/), ubiquitous-language (project glossary at docs/glossary.md). Recommend adr for any project expected to live > 6 months; recommend ubiquitous-language for backend services with named domain entities.
  11. External services (optional, multi-select — skip any category that doesn't apply). Each selection pulls a specs/<category>-<choice>.md stub and emits a one-line bullet into the generated AGENTS.md, wrapped per I9:
  • Datastore: mongodb / postgresql / redis / sqlite / other / none
  • Orchestrator: prefect / dagster / temporal / other / none
  • Observability & evals: opik / opentelemetry / sentry / other / none
  • LLM API: anthropic / openai / gemini / other / none
  • Embedding API: voyageai / openai / sentence-transformers / other / none
  • Model serving: modal / replicate / other / none
  • Web scraping: firecrawl / playwright / requests-bs4 / other / none

Ask this as ONE consolidated question: "Which external services will you use? (deselect anything you don't need)." none skips the category entirely — no stub read, no bullet emitted. other keeps an AGENT: fill in placeholder so the SWE can document the real choice on first use.

  1. Reference docs (llms.txt) — which tools / frameworks / services publish an llms.txt, and each one's index URL (e.g. Pydantic AI → https://pydantic.dev/docs/ai/llms.txt)? Governed by P5; fully skippable.

Before proceeding to step 2, echo the picked configuration back to the user in a two-line summary and confirm.

2. Select specs

Always include:

Conditionally include (from answers):

AnswerSpecs to read
backend (any variant)python-backend.md + uv-python.md + pyproject.md + ruff-python.md
backend = fastapi-service+ fastapi-service.md
backend = fastmcp-server+ fastmcp-server.md
backend = cli-tool-python+ cli-tool-python.md
frontend-webtypescript-frontend.md + the chosen framework spec (react-app.md / vue-app.md / svelte-app.md / vanilla-ts-app.md)
frontend-tuigo-tui.md (already covers both bubbletea and tview)
shared OpenAPI contractsopenapi-contracts.md
dockerdocker.md
github-actionsgithub-actions.md
pre-commit-hookspre-commit-hooks.md
agent team + trackertracker-workflow.md
process: adradr.md
process: ubiquitous-languageubiquitous-language.md
datastore = mongodb / postgresql / redis / sqlite+ datastore-<choice>.md
orchestrator = prefect / dagster / temporal+ orchestrator-<choice>.md
observability = opik / opentelemetry / sentry+ observability-<choice>.md
llm-api = anthropic / openai / gemini+ llm-<choice>.md
embeddings = voyageai / openai / sentence-transformers+ embeddings-<choice>.md
model-serving = modal / replicate+ model-serving-<choice>.md
scraping = firecrawl / playwright / requests-bs4+ scraping-<choice>.md

Skip any row where the user picked none / other. Read each selected spec end-to-end.

3. Compose AGENTS.md

Write the project's root memory file from the canonical template in AGENTS_TEMPLATE.md (the template body and section structure). Compose it following the I# artifact invariants in rules.md. Read both end-to-end, then emit a tailored AGENTS.md at the target project root (or wherever /squid-scaffold was invoked).

Optional — compress with caveman. If the caveman plugin is installed, offer to run /caveman-compress AGENTS.md on the composed file (ask first — the result is terser to hand-edit). Skip silently when caveman isn't installed.

4. Create the folder skeleton

Create these files / directories, empty or with minimal placeholders (P1).

Always:

  • AGENTS.md — from step 3.
  • CLAUDE.md — relative symlink to AGENTS.md (I4).
  • .agents/skills/ (seeded with .gitkeep) and .claude/skills — relative symlink to it (I12).
  • README.md — one-paragraph project-facing intro pointing at AGENTS.md.
  • .gitignore — language-appropriate (.venv/, node_modules/, dist/, bin/, .DS_Store, .env). Do not ignore .claude/skills or .agents/ — the symlink and its target are committed.
  • .env.example — cross-cutting placeholder keys (one commented sample var).

If monorepo:

  • Root Makefile and per-component packages/<c>/Makefile — generate from makefile-delegator.md for the chosen components (I10). Write a working first-pass Makefile, not AGENT: fill in stubs: the verbs are mechanical, the tooling is standard per language, and make install && make test must work on the fresh scaffold. Real-code placeholders still apply to src/, not to the Makefile.

  • Each packages/<c>/ also gets:

    • AGENTS.md — one-paragraph component brief + "see root AGENTS.md for conventions"; plus a CLAUDE.md symlink to it (I4).
    • .env.example — component-local placeholder.
    • No source files (P1).
  • If shared OpenAPI chosen: packages/shared/openapi/api.yaml with a minimal /health endpoint seed.

If docker chosen:

  • docker-compose.yml — one service block per runtime component with AGENT: fill in placeholders for image / ports / healthcheck.
  • Component-level Dockerfile stub with AGENT: fill in multi-stage build.

If github-actions chosen:

  • .github/workflows/ci.yml — umbrella workflow with dorny/paths-filter routing.
  • .github/workflows/ci-<c>.yml — one reusable workflow stub per component.
  • .github/dependabot.yml — one ecosystem per component.

If agent team + tracker chosen:

If adr chosen (Process & documentation):

  • docs/adr/0001-record-architecture-decisions.md — drop the canonical ADR-0001 boilerplate verbatim from adr.md's Bootstrap section, with {YYYY-MM-DD} replaced by today's date. This is the only ADR scaffold writes — subsequent ADRs are authored by the PA during /squid-plan grooming as decisions arise. Do not emit a docs/adr/.gitkeep (ADR-0001 already keeps the directory non-empty).

If ubiquitous-language chosen (Process & documentation):

  • docs/glossary.md — this seed, verbatim. Do not invent domain terms — the SWE / PA populate it as the first feature lands.

    markdown
    # Glossary
    
    The canonical vocabulary for {project name}. When code, docs, specs, or conversation use a domain concept, use the term as it appears here. PRs that introduce or rename a domain concept update this file in the same change.
    
    | Term | Definition | Notes |
    |---|---|---|
    <!-- | **OrderLine** | One line item within an Order, identified by `order_line_id`. | Distinct from "Item" (the catalogue entry). | -->

5. Report back

Summarise for the user:

  • File tree created (full list, relative paths).
  • Which specs informed the AGENTS.md (named).
  • Exact next step — e.g. /squid-implement-task "bootstrap packages/backend with a minimal FastAPI app and a /health endpoint". The SWE agent will read AGENTS.md and the spec references, and write the first real code.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Squid Scaffold AI skill do?

Bootstrap a new repo or component from the opinionated spec library (mode=create), or audit an existing scaffolded repo for drift against the scaffold rules (mode=evaluate, report-only).

Why use Squid Scaffold on TypingMind?

Because you install it once and use it with any model. Squid Scaffold is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Squid Scaffold in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/iusztinpaul/squid/tree/main/skills/squid-scaffold. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Squid Scaffold?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Squid Scaffold?

As many as you like. As long as a model supports skills, you can use Squid Scaffold with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Squid Scaffold AI skill free?

Yes. It is published on GitHub by iusztinpaul under the Apache-2.0 license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇