Agent skill

Build Software Component

by GAIK-project in GAIK-project/gaik-toolkit

Creates a new GAIK software component as an installable Python package.

MITAuto-check passedAgent Workflows

Install Build Software Component

skills CLI
$ npx skills add GAIK-project/gaik-toolkit --skill build-software-component -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install GAIK-project/gaik-toolkit build-software-component --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/GAIK-project/gaik-toolkit.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/build-software-component .claude/skills/build-software-component && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
build-software-component
GitHub stars
100
Token cost
~3k tokens
SKILL.md length
1,313 words
Files
4 (incl. references)
Skills in repo
15
Repo updated
First seen
Licence
MIT

At a glance

Creates a new GAIK software component as an installable Python package.

  • Works in 6 steps: Context Gathering → Plan Creation → Plan Review (MANDATORY — never skip) → …
  • The user asks to create
  • SKILL.md covers When to use, Workflow — 6 phases (Phase 6…, Hard rules and References
  • Calls pip, python and uv; reaches pypi.org; needs OPENAI_API_KEY and AZURE_API_KEY

What it does

Build Software Component is an agent skill from GAIK-project/gaik-toolkit. Creates a new GAIK software component as an installable Python package. Accepts context from URLs, external codebases, or plain descriptions. Produces an implementation plan for user review, then executes the plan: creates component files, updates pyproject.toml, installs the package, and verifies with import smoke tests. For the full release-ready flow (more examples, docs, demo app integration, PyPI release tag) delegates to the gaik-add-examples skill instead of duplicating that workflow. Use when the user…

Its SKILL.md is about 3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files, including reference files (for example `references/conventions.md`, `references/file-templates.md` and `references/verification.md`).

It sits in Agent Workflows, covering QA and bug reports and Planning. It works with Python and OpenAI. The repository describes itself as: Python toolkit providing reusable AI/ML utilities: schema extraction, structured outputs, and production-ready components. The licence is MIT.

When your agent uses it

  • The user asks to create
  • Add a new GAIK software component
  • Turn a codebase
  • API into a reusable installable package

Example prompts

  • “Use the build-software-component skill to create a new GAIK software component as an installable Python package”
  • “/build-software-component”

Requirements

  • Python 3
  • A credential in OPENAI_API_KEY
  • A credential in AZURE_API_KEY

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Context Gathering
  2. Plan Creation
  3. Plan Review (MANDATORY — never skip)
  4. Execution
  5. Verification
  6. Full release workflow (optional)

What it can do on your machine

Read from SKILL.md and the folder at commit e516ece. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • pip
    • python
    • uv
    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • pypi.org

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • OPENAI_API_KEY
    • AZURE_API_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Build Software Component loads about 3k tokens when it runs, and up to ~8.3k if it reads all its reference files. Until then it costs about 170 tokens; SKILL.md has 1,313 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~170
When it runs · the whole SKILL.md, loaded when a task matches
~3k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~8.3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from GAIK-project/gaik-toolkit at commit e516ece, republished under its MIT licence (© GAIK-project). 1,313 words, ~2,951 tokens.

Download SKILL.mdSave it as .claude/skills/build-software-component/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.
name
build-software-component
description
Creates a new GAIK software component as an installable Python package. Accepts context from URLs, external codebases, or plain descriptions. Produces an implementation plan for user review, then executes the plan: creates component files, updates pyproject.toml, installs the package, and verifies with import smoke tests. For the full release-ready flow (more examples, docs, demo app integration, PyPI release tag) delegates to the gaik-add-examples skill instead of duplicating that workflow. Use when the user asks to create, build, or add a new GAIK software component, wrap a library, or turn a codebase or API into a reusable installable package.
argument-hint
[context: URLs, paths, PyPI package names, or description]

Build Software Component

Use this skill when the user wants to add a new GAIK software component under implementation_layer/src/gaik/software_components/. The user will provide context — URLs of a library's docs, a path to an external codebase to wrap, a PyPI package name, or a plain description of the functionality — and this skill turns that context into a working, installable component that follows GAIK's existing conventions.

When to use

Invoke this skill when the user asks to:

  • "Create/build/add a new software component …"
  • "Wrap library X as a GAIK component"
  • "Turn this codebase at <path> into a GAIK component"
  • "Make a component from <URL / API docs>"

Do not use this skill for non-component work (demo app changes, docs website edits, bug fixes in existing components, etc.).

Workflow — 6 phases (Phase 6 optional)

Follow these phases in order. Do not skip Phase 3.

Phase 1 — Context Gathering

Identify the context sources in the user's prompt and consume them:

  • URLs → use WebFetch on each URL to extract API and usage info.
  • PyPI package names → WebFetch https://pypi.org/pypi/<name>/json for metadata and latest version pin.
  • Local codebase paths → use Glob / Grep / Read to map structure, public API, and dependencies.
  • Plain description → treat the prompt text as the spec.

Before moving on, make sure you understand:

  1. What the component does (one sentence).

  2. What external library/APIs it wraps (if any).

  3. What Python dependencies it needs, with versions when available.

  4. Whether it is LLM-based and which config surface to use:

    • Chat / structured output / vision (the default for LLM components) → the constructor takes a config dict from either get_openai_config() or get_llm_config(provider) and builds its client with build_compat_client(config), as the extractor, classifier and FormUnderstander do. That keeps legacy OpenAI/Azure dicts on the raw SDK client and serves every other provider (Aitta, openai_compatible, Google, Anthropic, LiteLLM) through a ProviderClient.
    • Audio or another OpenAI-only endpoint → create_openai_client(config) guarded by assert_openai_or_azure(config, component=...), like TextToSpeech.
    • Provider-agnostic (pure Python / local library, no LLM call).
  5. Layout decision — top-level or nested?

    • Top-level — sibling of extractor/, transcriber/, doc_classifier/. Use for new independent capabilities.
    • Nested sub-component — lives inside an existing category like parsers/<name>/, RAG/<name>/, or transcriber/<name>/. Use when the new component is a variant of an existing category (e.g. another PDF parser belongs in parsers/, another vector store in RAG/). The shipped parsers/multimodal_parser/ is the canonical nested example.

    The two layouts follow the same conventions for pyproject.toml extras and shared config, but differ in which __init__.py gets edited — see the rules in Phase 4 and in references/conventions.md.

Phase 2 — Plan Creation

Read references/conventions.md first to ground the plan in GAIK patterns.

Write a component plan to .claude/skills/build-software-component/last_plan.md with these sections:

  1. Component identity — component_name (snake_case directory name), MainClassName (PascalCase), one-line description.
  2. Public API — classes, methods with signatures, any result dataclasses.
  3. Dependencies — Python packages with version pins, marked required vs optional.
  4. Config integration — build_compat_client(config) (multi-provider), create_openai_client(config) (OpenAI/Azure-only endpoint), or provider-agnostic.
  5. Layout — top-level (software_components/<name>/) or nested (software_components/<category>/<name>/).
  6. Files to create — full relative paths.
  7. Files to modify — additions to pyproject.toml and either software_components/__init__.py (top-level) or software_components/<category>/__init__.py (nested).
  8. Install extra name — the name used in pip install "gaik[<extra>]". Must be hyphenated, lowercase.
  9. Example usage — one working snippet the example file will demonstrate.
  10. Verification steps — the exact import test and smoke-test commands.
Phase 3 — Plan Review (MANDATORY — never skip)
  • Display the full plan to the user via text output (read the plan file back in full, do not summarize).
  • Ask: "Approve this plan, or describe changes?"
  • If the user requests changes: revise last_plan.md, re-display the full plan, re-ask. Loop until the user explicitly approves.
  • Do not execute any file creation, editing, or installation until approval.
Phase 4 — Execution

Only after explicit approval. Read references/file-templates.md for the literal file bodies to use. Execute in this order — if any step fails, stop and report the error to the user before continuing:

Let <dir> be:

  • implementation_layer/src/gaik/software_components/<component_name>/ for top-level
  • implementation_layer/src/gaik/software_components/<category>/<component_name>/ for nested
  1. Create <dir> directory.
  2. Write <component_name>.py — the main class file. Use the template from file-templates.md.
  3. Write __init__.py — module docstring, re-exports, __all__, __version__ = "0.1.0".
  4. Write README.md — description, install command, quick-start example.
  5. Edit pyproject.toml — add a new entry under [project.optional-dependencies] named <extra-name>. If the component belongs in all / all-cpu composite groups, add it there too.
  6. Register the component in the parent __init__.py:
    • Top-level: edit software_components/__init__.py — append the component_name string to __all__.
    • Nested: edit software_components/<category>/__init__.py — add a try/except ImportError: pass guard that imports and __all__.extend(...) the public classes (see parsers/__init__.py:81-87 for the canonical pattern). Do not touch the top-level software_components/__init__.py.
  7. Create the example at implementation_layer/examples/software_components/<component_name>/<component_name>_example.py (top-level) or implementation_layer/examples/software_components/<category>/demo_<component_name>.py (nested — mirrors how existing parser demos are organized) using the example template.
Show full SKILL.md (546 more words)Show less
Phase 5 — Verification

Read references/verification.md for exact commands. Steps:

  1. Run pip install -e ".[<extra-name>]" from the repo root.
  2. Run the import smoke test against the public import path:
    • Top-level: python -c "from gaik.software_components.<component_name> import <MainClassName>; print('OK')"
    • Nested: python -c "from gaik.software_components.<category> import <MainClassName>; print('OK')" (nested components are re-exported from the category's __init__.py).
  3. If the example file can be run without live credentials, run it. Otherwise, skip this step and note that running the example requires credentials.
  4. Report final status to the user:
    • Files created (paths).
    • Install result (success/failure + key lines if failed).
    • Smoke test result.
    • Example run result (or "skipped — requires credentials").
Phase 6 — Full release workflow (optional)

After Phase 5, ask the user: "Continue with the full release flow (more examples → docs → demo app → PyPI tag), or stop here?" Default: stop for quick prototypes; continue when the component is a user-facing capability worth shipping.

If the user continues, delegate to the gaik-add-examples skill Step 6 — it is the canonical publish flow and owns the gated 6a–6d prompts for:

  • 6a. Additional API docs (guidance_layer/docs/)
  • 6b. Fumadocs website (guidance_layer/website/content/docs/)
  • 6c. Demo app integration (toolkit_demo_app/api/routers/ + UI)
  • 6d. PyPI release tag

Phase 4 step 7 of this skill already created one initial example, so gaik-add-examples is typically invoked for additional examples (a pipeline-level example, a second variant, or an enriched README walkthrough).

Do not duplicate 6a–6d logic here — read from gaik-add-examples/SKILL.md so the publish flow stays in one place.

Component-specific release-readiness checklist

Before tagging (this is the build-side addition to the checklist in gaik-add-examples — verify the component shape first):

  • Source files + __init__.py exports under the component's directory.
  • Component README.md written.
  • pyproject.toml optional extra added (and named consistently).
  • Parent __init__.py (top-level or category) updated to list the component.
  • Local tests pass (uv run pytest).

Hard rules

  • Never skip Phase 3. Always present the plan and wait for approval.

  • Scope of edits during Phases 1–5 (source creation): only create/edit files inside

    • the component's own directory (top-level or nested),
    • the matching implementation_layer/examples/software_components/... directory,
    • pyproject.toml, and
    • exactly one parent __init__.py: either software_components/__init__.py (top-level) or software_components/<category>/__init__.py (nested) — never both.

    Never touch the demo app, docs website, or other components during source creation. Phase 6 is the only phase where those edits are allowed, and only after the user has explicitly opted in.

  • Shared config: for any component that calls an LLM, build the client from the caller's config with build_compat_client (from gaik.software_components.llm), or with create_openai_client (from gaik.software_components.config) plus assert_openai_or_azure for an OpenAI/Azure-only endpoint. Do not hand the caller's dict straight to create_llm_client: it resolves a bare legacy {"api_key": ...} dict through LLM_PROVIDER (default Azure), where that dict has always meant standard OpenAI. Never call load_dotenv() inside the component and never read OPENAI_API_KEY / AZURE_API_KEY directly.

  • Never commit during Phases 1–5. Leave source changes uncommitted so the user can review with git diff. Phase 6d is the only place that commits or pushes, and only after the user approves the PyPI release step.

  • No unit tests unless the user's context explicitly demands them. The example file is the proof-of-life artifact.

References

  • references/conventions.md — GAIK component directory layout, __init__.py pattern, constructor pattern, result dataclass pattern, extras naming.
  • references/file-templates.md — literal templates for every file to create plus the exact edits to pyproject.toml and the parent __init__.py.
  • references/verification.md — install command, smoke test, common failure modes and fixes.

© GAIK-project, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 3 other files (references) in .claude/skills/build-software-component of GAIK-project/gaik-toolkit.

  • SKILL.md
  • references/conventions.md
  • references/file-templates.md
  • references/verification.md

Open the folder on GitHubat commit e516ece

Compare with similar skills

Build Software Component next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Build Software Component compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Build Software Component this skillGAIK-project/gaik-toolkit100—~3kAutomated safety check: PassMIT
Dev PlanFHIR/fhir-codegen154—~6.1kAutomated safety check: PassMIT
Install and Run Cogneetopoteretes/cognee32k1 repos~1kAutomated safety check: NotesApache-2.0
LLM Councilgcpdev/llm-council-skill4611 repos~1kAutomated safety check: NotesMIT
Codex with ChatGPT Planning LoopXiaoDuoYa/codex-with-chatgpt7.1k—~11kAutomated safety check: NotesMIT
Plan Previewu-ichi/reviewable-html-workbench2981 repos~1.8kAutomated safety check: PassMIT

Similar skills

  • Dev Plan

    FHIR/fhir-codegen

    Builds and iterates on a detailed implementation plan in the role of a staff-level Engineering Lead, working from either a featurerequest.md (from dev-request) or a bugreport.md (from dev-report).

    154 GitHub stars~6.1k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Install and Run Cognee

    topoteretes/cognee

    Installs the cognee AI memory library in a Python environment, sets the LLM key and gets a first remember and recall script running with the Python SDK.

    32k GitHub starsUsed in 1 repo~1k tokens
    Agent WorkflowsAuto-check: notes
  • LLM Council

    gcpdev/llm-council-skill

    Multi-LLM collaborative brainstorming and planning. An agent skill from gcpdev/llm-council-skill.

    461 GitHub starsUsed in 1 repo~1k tokens
    Agent WorkflowsAuto-check: notes
  • Codex with ChatGPT Planning Loop

    XiaoDuoYa/codex-with-chatgpt

    Uses ChatGPT in the browser as the planning and review brain for a Codex session, with Codex keeping all execution and ChatGPT reading the workspace through a bridge.

    7.1k GitHub stars~11k tokensUpdated 7 days ago
    Agent WorkflowsAuto-check: notes
  • Plan Preview

    u-ichi/reviewable-html-workbench

    Plan Mode の <proposedplan を出す直前に、計画の段階・依存関係・検証観点を一時HTMLで視覚確認したい時に使う agent-internal skill。Use this agent-internal skill to create a temporary HTML preview for a plan just before presenting…

    298 GitHub starsUsed in 1 repo~1.8k tokens
    Agent WorkflowsAuto-check passed
  • Deep Research Plan

    MagicCube/helixent

    Enter "plan mode" for a deep-research or article-writing task — search the web, fetch sources, optionally run experiments in Python/Node, design one recommended outline and research strategy, then…

    680 GitHub stars~2.1k tokensUpdated 4 mo ago
    Agent WorkflowsAuto-check passed

More from GAIK-project/gaik-toolkit

All 15 skills in this repo
  • Brief To Slides

    GAIK-project/gaik-toolkit

    Builds a visual, editable PowerPoint (.pptx) deck with speaker-ready notes, exact timing, citations and a layout-checked design from a topic, an audience and a length, using only the user's own…

    100 GitHub stars~2.8k tokensUpdated today
    Auto-check passed
  • Gaik Toolkit

    GAIK-project/gaik-toolkit

    GAIK toolkit overview and reference. An agent skill from GAIK-project/gaik-toolkit.

    100 GitHub stars~5.7k tokensUpdated today
    Auto-check passed
  • Extracting Structured Data

    GAIK-project/gaik-toolkit

    Extracts structured data — fields, tables, line items — out of documents into a validated schema using the gaik toolkit, and designs schemas that stay inside provider limits and produce checkable…

    100 GitHub stars~3.2k tokensUpdated today
    Auto-check passed
  • Parsing Documents

    GAIK-project/gaik-toolkit

    Converts PDFs, scans, and Word documents into text or markdown with the gaik toolkit's parsers, choosing the parser that will not silently destroy the structure the downstream task depends on.

    100 GitHub stars~2.3k tokensUpdated today
    Auto-check passed
  • Searching Documents

    GAIK-project/gaik-toolkit

    Builds and debugs retrieval with the gaik toolkit — PgVectorStore, Ranker, FinnishTextProcessor, RelevanceGate — as hybrid search: pgvector similarity plus Postgres full-text, fused by rank, and the…

    100 GitHub stars~4.2k tokensUpdated today
    Auto-check passed
  • Construction Diary Creation

    GAIK-project/gaik-toolkit

    Extracts structured data from Finnish construction site daily diary audio recordings (Työmaapäiväkirja) and creates a formatted Word document with extracted fields.

    100 GitHub stars~3.6k tokensUpdated today
    Auto-check passed

Works with

Questions about Build Software Component

What does Build Software Component do?

Creates a new GAIK software component as an installable Python package. Build Software Component is an agent skill from GAIK-project/gaik-toolkit. Creates a new GAIK software component as an installable Python package.

When should I use Build Software Component?

Build Software Component fits situations like: the user asks to create; add a new GAIK software component; turn a codebase; API into a reusable installable package.

How do I install Build Software Component in Claude Code?

Run `npx skills add GAIK-project/gaik-toolkit --skill build-software-component -a claude-code`. Or copy the skill folder (.claude/skills/build-software-component in GAIK-project/gaik-toolkit) into .claude/skills/build-software-component in your project. Claude Code loads it when a task matches its description.

How do I install Build Software Component in Codex?

Run `npx skills add GAIK-project/gaik-toolkit --skill build-software-component -a codex`. Or copy the skill folder (.claude/skills/build-software-component in GAIK-project/gaik-toolkit) into .agents/skills/build-software-component in your project. Codex loads it when a task matches its description.

Can I use Build Software Component in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add GAIK-project/gaik-toolkit --skill build-software-component -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/build-software-component, .gemini/skills/build-software-component, .github/skills/build-software-component and .opencode/skills/build-software-component in your project.

What does Build Software Component need to run?

Going by SKILL.md and its folder, Build Software Component needs the command-line tools its instructions call (pip, python, uv and git) and credentials named OPENAI_API_KEY and AZURE_API_KEY. Our summary lists: Python 3; A credential in OPENAI_API_KEY; A credential in AZURE_API_KEY.

Does Build Software Component access the network?

SKILL.md names 1 domain. In commands or code: pypi.org; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Build Software Component safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Build Software Component use?

Build Software Component is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Build Software Component use?

About 3k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 5.3k tokens, read only when the agent opens those files.

What are the alternatives to Build Software Component?

Skills that share tags, products or a category with Build Software Component: Dev Plan (FHIR/fhir-codegen, 154 stars), Install and Run Cognee (topoteretes/cognee, 32k stars), LLM Council (gcpdev/llm-council-skill, 461 stars) and Codex with ChatGPT Planning Loop (XiaoDuoYa/codex-with-chatgpt, 7.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Build Software Component?

GAIK-project (a GitHub organization) maintains it in GAIK-project/gaik-toolkit, which has 100 GitHub stars. The repository holds 15 skills in this directory. The repository was last updated on October 7, 2026.

Source: GAIK-project/gaik-toolkit on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.