Agent skill

Gaik Toolkit

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

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

MITAuto-check passedDocuments & Office

Install Gaik Toolkit

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

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

GitHub CLI
$ gh skill install GAIK-project/gaik-toolkit gaik-toolkit --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/gaik-toolkit .claude/skills/gaik-toolkit && 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
gaik-toolkit
GitHub stars
100
Token cost
~5.7k tokens
SKILL.md length
1,733 words
Files
11 (incl. scripts, references)
Skills in repo
15
Repo updated
First seen
Licence
MIT

At a glance

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

  • Needing context on GAIK components (extractors
  • SKILL.md covers Related Skills, Quick Links, Repository Structure and Toolkit Demo App, plus 13 more sections
  • Runs Python scripts from its folder; calls bun, pnpm and pip; needs AITTA_API_KEY and ANTHROPIC_API_KEY
  • The repository structure

What it does

Gaik Toolkit is an agent skill from GAIK-project/gaik-toolkit. GAIK toolkit overview and reference. Use when needing context on GAIK components (extractors, parsers, transcribers, RAG, TTS, classifiers, pipelines), the repository structure, configuration pattern, environment variables, building-block API tables, the documentation update map, or the demo app and docs website setup. For CREATING a new component package use build-software-component; for ADDING EXAMPLES and running the canonical publish flow (docs → demo app → PyPI tag) use gaik-add-examples. Covers: structured…

Its SKILL.md is about 5.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 12 other files, including scripts and reference files (for example `references/building-blocks.md`, `references/demo-app.md` and `references/docs-website.md`).

It sits in Documents & Office, covering Text to speech and voice, Transcription and Speech recognition and synthesis. It works with PostgreSQL, DuckDB, Microsoft Excel and pgvector. 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

  • Needing context on GAIK components (extractors
  • The repository structure
  • Configuration pattern
  • Environment variables

Example prompts

  • “/gaik-toolkit”

Requirements

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

What it can do on your machine

Read from SKILL.md and the folder at commit e66fcca. 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

    Ships 1 file in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • bun
    • pnpm
    • pip
    • python

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

  • Network

    Links to these hosts (documentation or services it may open):

    • gaik-project.github.io
    • gaik-demo.2.rahtiapp.fi
    • 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:

    • AITTA_API_KEY
    • ANTHROPIC_API_KEY
    • GOOGLE_API_KEY
    • AZURE_API_KEY
    • OPENAI_API_KEY

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

Context cost

Gaik Toolkit loads about 5.7k tokens when it runs, and up to ~32k if it reads all its reference files. Until then it costs about 194 tokens; SKILL.md has 1,733 words of instructions outside code blocks.

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

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); the scripts in this folder are not scanned.

SKILL.md

The full file from GAIK-project/gaik-toolkit at commit e66fcca, republished under its MIT licence (© GAIK-project). 1,733 words, ~5,655 tokens.

Download SKILL.mdSave it as .claude/skills/gaik-toolkit/SKILL.md (or your agent's skills folder). This skill also uses 10 other files; get the full folder from GitHub.
name
gaik-toolkit
description
GAIK toolkit overview and reference. Use when needing context on GAIK components (extractors, parsers, transcribers, RAG, TTS, classifiers, pipelines), the repository structure, configuration pattern, environment variables, building-block API tables, the documentation update map, or the demo app and docs website setup. For CREATING a new component package use build-software-component; for ADDING EXAMPLES and running the canonical publish flow (docs → demo app → PyPI tag) use gaik-add-examples. Covers: structured data extraction, document parsing, audio transcription (Whisper/local), transcript enhancement, text-to-speech, RAG pipelines (pgvector/Chroma), document classification, text-to-SQL agents (PostgreSQL, CSV/Excel via DuckDB), end-to-end pipelines.
argument-hint
[component-name]

GAIK Toolkit

Current PyPI version: !python ${CLAUDE_SKILL_DIR}/scripts/fetch_pypi_readme.py --version

Python toolkit for knowledge extraction, capture, and generation. Use when working with:

  • Structured data extraction from documents, PDFs, images, or audio
  • Schema generation from natural language requirements
  • Document parsing (PDF, DOCX, images)
  • Audio/video transcription with Whisper + local Whisper backends (Finnish fine-tuned model)
  • Transcript enhancement — two-pass LLM error correction
  • Parallel transcription with FFmpeg chunking
  • Text-to-speech generation
  • Document classification
  • Text-to-SQL: natural-language querying of PostgreSQL databases and CSV/Excel/Parquet files (DuckDB)
  • RAG pipelines: embedder, vector store (Chroma / PostgreSQL), retriever, answer generator
  • End-to-end pipelines: AudioToStructuredData, DocumentsToStructuredData, RAGWorkflow

This skill is the overview / reference. Two sibling skills handle workflows:

TaskSkill
Create a new installable component package (source + pyproject.toml + extras)build-software-component
Add an example, then optionally publish (docs → demo app → PyPI tag)gaik-add-examples
Understand the toolkit: components, config, repo layout, docs update mapthis skill

Repository Structure

PathDescription
implementation_layer/src/gaik/Python package source (building blocks + software modules)
implementation_layer/toolkit_demo_app/Next.js + FastAPI interactive demo app (bun + uv)
guidance_layer/website/Documentation website (Fumadocs/Next.js, deployed to GitHub Pages)
guidance_layer/website/content/docs/Documentation source (.mdx files)
implementation_layer/no-code-assets/Prompt templates and agent skills for no-code usage
strategy_layer/Value evaluation framework, AI maturity assessment
business_layer/GenAI product canvas templates

Toolkit Demo App

Interactive web app at implementation_layer/toolkit_demo_app/. Next.js 16 + FastAPI (bun + uv).

Documentation Website

Fumadocs/Next.js site at guidance_layer/website/. Content in .mdx files under content/docs/.

Installation

Install via pip with optional extras: pip install "gaik[extract]", pip install "gaik[all-cpu]", etc. See Installation Reference for all available extras and setup.

Environment Variables

Azure OpenAI (recommended):

bash
AZURE_API_KEY=your-key
AZURE_ENDPOINT=https://your-resource.openai.azure.com/
AZURE_DEPLOYMENT=gpt-6-luna        # default when unset
AZURE_API_VERSION=2025-03-01-preview

OpenAI:

bash
OPENAI_API_KEY=your-key
OPENAI_MODEL=gpt-6-luna            # default when unset

Other providers read their own variables (AITTA_API_KEY, ANTHROPIC_API_KEY, GOOGLE_API_KEY, LITELLM_MODEL …); LLM_PROVIDER is the default for get_llm_config() called without a provider. See Building Blocks Reference.

Configuration Pattern

Two parallel surfaces. Pick the simpler one for OpenAI/Azure-only use cases; pick the multi-provider one for any other provider or when the same code must switch providers. Components take either dict in their config argument (config, api_config, openai_config …).

Legacy surface (OpenAI/Azure only — keeps working unchanged):

python
from gaik.software_components.config import get_openai_config, create_openai_client

config = get_openai_config(use_azure=True)   # Azure OpenAI
config = get_openai_config(use_azure=False)  # Standard OpenAI
client = create_openai_client(config)        # OpenAI/AzureOpenAI client

Multi-provider surface:

python
from gaik.software_components.llm import get_llm_config, create_llm_client

config = get_llm_config("aitta")   # openai, azure, aitta, openai_compatible, google, vertex,
                                   # anthropic, anthropic_foundry, litellm
client = create_llm_client(config) # ProviderClient with chat/chat_parsed/chat_stream/embed
  • No extra: openai, azure, aitta (CSC's OpenAI-compatible API; default model google/gemma-4-31b-it, 600 s timeout for cold starts) and openai_compatible (explicit base_url and model, e.g. vLLM or Ollama).
  • Extras: gaik[llm-anthropic], gaik[llm-google]; gaik[llm-litellm] for the optional litellm backend, which needs a provider-prefixed model such as azure/<deployment>. Native adapters stay the default; gaik[llm-all] installs all three.
  • Audio (Transcriber, ParallelTranscriber, TextToSpeech) accepts only OpenAI/Azure and raises NotImplementedError for every other provider, Aitta and openai_compatible included.
  • Vision (VisionParser, MultimodalParser, VisionExtractor) accepts any provider config; the model must accept images.
  • Legacy dicts win: a config with use_azure keeps its backend whatever LLM_PROVIDER says, and a bare dict without provider or use_azure keeps its pre-0.8 routing (resolution rules).
  • gpt-6-* are reasoning models: sampling options (temperature, top_p) work only with reasoning_effort="none", which gpt-6-astra does not offer, and the token limit is max_completion_tokens. Components translate this themselves; when calling a raw SDK client, pass the options through normalize_chat_kwargs from gaik.software_components.llm.parameters.

Building Blocks

Core classes in gaik.software_components.*. For detailed API and constructor parameters, see Building Blocks Reference.

ComponentImportKey Method
SchemaGeneratorfrom gaik.software_components.extractor import SchemaGeneratorgenerate_schema(user_requirements)
DataExtractorfrom gaik.software_components.extractor import DataExtractorextract(extraction_model, requirements, ...)
VisionExtractorfrom gaik.software_components.vision_extractor import VisionExtractorextract(file_paths, user_requirements, extraction_model=None, requirements=None, schema_dir=None) → VisionExtractionResult (single-pass PDF/image → structured data; OpenAI / Claude / Google)
VisionParserfrom gaik.software_components.parsers import VisionParserconvert_pdf(path) → list[str] per page
PyMuPDFParserfrom gaik.software_components.parsers import PyMuPDFParserparse_pdf(path) → str · parse_document(path) → dict
DocxParserfrom gaik.software_components.parsers import DocxParserparse_docx(path) → str · parse_document(path) → dict
DoclingParserfrom gaik.software_components.parsers import DoclingParserparse_document(path) → dict
VisionPlusParserfrom gaik.software_components.parsers import VisionPlusParserparse_document(path) → dict (markdown + per-element metadata)
DoclingApiClientParserfrom gaik.software_components.parsers import DoclingApiClientParserparse_document(path) → dict (remote Docling result)
MultimodalParserfrom gaik.software_components.parsers import MultimodalParserparse(pdf_path) → ParseResult (OpenAI / Claude / Gemini)
Transcriberfrom gaik.software_components.transcriber import Transcribertranscribe(path) → TranscriptionResult
TranscriptEnhancerfrom gaik.software_components.enhance_transcript import TranscriptEnhancerenhance_text(text) / enhance_file(path)
ParallelTranscriberfrom gaik.software_components.parallel_transcriber import ParallelTranscribertranscribe(path) → TranscriptionResult
TextToSpeechfrom gaik.software_components.text_to_speech import TextToSpeechsynthesize(text) → SpeechSynthesisResult
DocumentClassifierfrom gaik.software_components.doc_classifier import DocumentClassifierclassify(file_or_dir, classes)
JevClassifierfrom gaik.software_components.jev_classifier import JevClassifierclassify(text, classes, min_confidence=...)
FormUnderstanderfrom gaik.software_components.form_understander import FormUnderstanderclean_labels(fields, language_hint="fi") → dict[str, str] (cryptic ASP.NET / generated form ids → readable labels)
PostgresAgentfrom gaik.software_components.postgres_agent import PostgresAgentask(question) → AnswerResult (text-to-SQL agent: introspects schema, generates validated read-only SQL, runs it, answers; also get_schema() / generate_sql() / query() / run_sql(); install gaik[postgres-agent])
TabularAgentfrom gaik.software_components.tabular_agent import TabularAgentask(question) → AnswerResult (text-to-SQL agent for files: loads CSV/Excel/Parquet/JSON into DuckDB, profiles columns, generates validated read-only SQL, answers; cleans up messy report sheets — title rows, subtotals, Nordic comma-decimals; one table per Excel sheet so cross-sheet joins work; same get_schema() / run_sql() tool surface as PostgresAgent; install gaik[tabular-agent])
LLMJudgefrom gaik.software_components.validators import LLMJudgevalidate(source_pages, extracted, rubric) → ValidationResult (rubric scoring; Likert 1-5 via rubric.scoring_mode="likert_1_5") / detect_hallucinations(source, extracted) → schema-agnostic post-validator / judge_text_pair(a, b) → text-vs-text equivalence (multi-provider)
LLMJudgePanelfrom gaik.software_components.validators import LLMJudgePanelvalidate(source_pages, extracted, rubric) → JudgePanelResult (3+ judges, majority vote, agreement metric)
compare_pairwisefrom gaik.software_components.validators import compare_pairwisecompare_pairwise(judge, pages, a, b, swap_and_average=True) → PairwiseResult (A/B with position-bias mitigation)
calibrate_against_human_labelsfrom gaik.software_components.validators import calibrate_against_human_labelscalibrate_against_human_labels(judge, dataset) → CalibrationReport (Pearson r vs. human raters)
FinnishTextProcessorfrom gaik.software_components.RAG.finnish_text_processor import FinnishTextProcessorlemmatize(text) / to_tsvector_text(text) / expand_query(text) (Finnish lemmatization + compound splitting; backends: voikko / spacy / uralic / simple)
ExtractionEvaluatorfrom gaik.software_components.evaluators import ExtractionEvaluatorevaluate_dataset(dataset, extracted_outputs) → ExtractionEvaluationResult (field-level P/R/F1 + hallucination rate; optional semantic mode via LLMJudge)
RAGEvaluatorfrom gaik.software_components.evaluators import RAGEvaluatorevaluate_dataset(items) → RAGEvaluationResult (RAGAS-style faithfulness / answer_relevance / context_precision / context_recall via LLMJudge)
BatchEvaluationRunnerfrom gaik.software_components.evaluators import BatchEvaluationRunnerrun(dataset) → RunnerResult (applies a pipeline callable over a dataset; on_error="skip" tolerates failures)
Parser notes

Every parser ships a class and a module-level convenience function, and the two do not agree on return type — the class method gives you the text, the function gives you a metadata dict. Reaching for the shorter name is the easy mistake:

python
parser = PyMuPDFParser()
text = parser.parse_pdf("doc.pdf")        # -> str
result = parse_pdf("doc.pdf")             # -> dict, text lives under result["text_content"]

The same split applies to DocxParser.parse_docx / parse_docx, and every parse_document variant returns a dict on both the class and the function.

Transcriber notes
  • Models: "whisper", "whisper-1", "gpt-4o-transcribe", "whisper_local"
  • enhanced_transcript=True runs output through TranscriptEnhancer (two-pass LLM correction)
  • whisper_local requires local_api_base + local_api_key; language="fi" selects Finnish fine-tuned model
  • ParallelTranscriber uses FFmpeg chunking; requires ffmpeg + ffprobe on $PATH
SRT/VTT Utilities
python
from gaik.software_components.transcriber import segments_to_srt, segments_to_vtt, parse_srt, chunk_segments
Video Search Helpers
python
from gaik.software_components.RAG.pg_vector_store import PgVectorStore, ingest_video_segments, format_search_results
Show full SKILL.md (718 more words)Show less

RAG Building Blocks

Core RAG classes in gaik.software_components.RAG.*. For full API, see RAG Reference.

ComponentImportKey Method
Embedderfrom gaik.software_components.RAG.embedder import Embedderembed(docs), embed_query(text)
VectorStorefrom gaik.software_components.RAG.vector_store import VectorStoreadd(docs, embeddings), search(vec, top_k)
PgVectorStorefrom gaik.software_components.RAG.pg_vector_store import PgVectorStoresearch_hybrid(vec, text, top_k)
Retrieverfrom gaik.software_components.RAG.retriever import Retrieversearch(query, top_k, hybrid_search, re_rank)
Rankerfrom gaik.software_components.RAG.ranker import Rankerfuse(*lists, weights) → weighted RRF; also rerank(query, results), order_by(results, field, direction) for asc/desc, to_documents(results); reorders lists you already have, no IO; install gaik[ranker] (cross-encoder needs gaik[ranker-rerank])
AnswerGeneratorfrom gaik.software_components.RAG.answer_generator import AnswerGeneratorgenerate(query, documents, stream)
VisionRagParserfrom gaik.software_components.RAG.rag_parser_vision import VisionRagParserconvert_doc_to_chunks_with_vision(path)
DoclingRagParserfrom gaik.software_components.RAG.rag_parser_docling import DoclingRagParserconvert_pdf_to_chunks_with_metadata(path)

End-to-End Pipelines

Composed pipelines in gaik.software_modules.*. For full API, see Software Components Reference.

PipelineFlowImport
AudioToStructuredDataAudio → Transcript → Schema → JSONfrom gaik.software_modules.audio_to_structured_data import AudioToStructuredData
DocumentsToStructuredDataPDF/DOCX → Parse → Schema → JSONfrom gaik.software_modules.documents_to_structured_data import DocumentsToStructuredData
RAGWorkflowPDF → Parse → Embed → Store → Retrieve → Answerfrom gaik.software_modules.RAG_workflow import RAGWorkflow
MultiSourceReportGeneratorMixed files (PDF/DOCX/Excel/audio/images) → Normalize → Sectioned Markdown reportfrom gaik.software_modules.multi_source_report_generator import MultiSourceReportGenerator
  • AudioToStructuredData / DocumentsToStructuredData: pipeline = Pipeline(use_azure=True) → result = pipeline.run(file_path=..., user_requirements=...) (keyword-only arguments).
  • RAGWorkflow has no run(): workflow.index_documents([path, ...]) → IndexResult, then workflow.ask(query) → RAGWorkflowResult.
  • MultiSourceReportGenerator.run(input_paths=..., sections=...) takes source files plus a report structure (section titles + per-section instructions) and returns the assembled Markdown report with a per-section breakdown.

Each stage can use its own provider; an omitted stage config falls back to the shared api_config (or the legacy use_azure default). Constructor arguments: DocumentsToStructuredData(parser_config=, extraction_config=), AudioToStructuredData(transcription_config=, extraction_config=) (transcription stays OpenAI/Azure), RAGWorkflow(parser_config=, embedding_config=, answer_config=). MultiSourceReportGenerator takes them per run as api_config inside parser_options, image_options, writer_options, review_options, and transcriber_options={"ctor": {"api_config": ...}}.

Architecture Overview

LevelConceptExamples
ServiceLogical capabilityspeech_to_text, document_parsing, information_extraction, rag
Building blockAtomic toolkit class/functionTranscriber, ParallelTranscriber, TranscriptEnhancer, TextToSpeech, SchemaGenerator, DataExtractor, VisionParser, Embedder, VectorStore, PgVectorStore, Retriever, AnswerGenerator
Software componentComposed, workflow-ready unitAudioToStructuredData, DocumentsToStructuredData, RAGWorkflow, MultiSourceReportGenerator

Observability

Token usage, execution time, and provider-specific pricing for all LLM calls. A shared UsageRecord type ensures all components report data in the same format regardless of provider (OpenAI / Azure / Anthropic / Google).

python
from gaik.observability import (
    UsageRecord, build_usage_record,         # uniform usage shape
    compute_cost_usd, lookup_price,          # cost from prompt/completion tokens
    measure_duration,                        # context-manager timing helper
    openai_usage_to_dict,                    # OpenAI-shape → dict normalizer
    OPENAI_PRICING_PER_M, ANTHROPIC_PRICING_PER_M, GEMINI_PRICING_PER_M,
)

Use when building a dashboard, logging pipeline, or compliance reporter that needs a unified cost/duration report across providers.

Use Cases

Documented in guidance_layer/website/content/docs/use-cases/: incident reporting, dental transcription & captioning, semantic dental video search, construction diary, dental learning assistant, purchase order processing, report writing, sales proposal generation, customer onboarding.

When to Update Documentation

When adding or modifying a component, update both documentation locations:

What changedUpdate
New/modified building block or pipelineguidance_layer/docs/software_components/ or guidance_layer/docs/software_modules/
New/modified building block or pipelineguidance_layer/website/content/docs/toolkit/software-components.mdx or software-modules.mdx
New use case or exampleguidance_layer/website/content/docs/use-cases/ (new .mdx file)
New examples addedimplementation_layer/examples/ + README updated
  • guidance_layer/docs/: Technical Markdown docs (API-level details, constructor params)
  • guidance_layer/website/content/docs/: User-facing MDX for the Fumadocs website
  • Run pnpm dev from guidance_layer/website/ to preview website changes
  • For the gated, step-by-step publish flow (docs → demo app → PyPI tag), use the gaik-add-examples skill Step 6 — the canonical follow-up workflow

Gotchas

Non-obvious things that cause real mistakes in this repo. Check here before assuming.

  • Docs website uses pnpm, not bun. Everything else in toolkit_demo_app/ uses bun. Running bun dev inside guidance_layer/website/ silently installs a second lockfile and breaks Fumadocs build.
  • Fumadocs needs meta.json updates. When adding a new .mdx page under content/docs/, also add it to the parent directory's meta.json, or it will not appear in the navigation.
  • ParallelTranscriber requires ffmpeg + ffprobe on $PATH. On Windows that means installing ffmpeg and adding its bin/ to PATH — there is no Python wheel fallback.
  • whisper_local model needs local_api_base + local_api_key. language="fi" switches to the Finnish fine-tuned model. Leaving local_api_base unset fails with an unhelpful OpenAI-style error.
  • Never edit __version__ strings by hand. The package version is derived from the git tag by setuptools-scm. Manual edits desync the wheel and break the PyPI publish workflow's version validation.
  • CORS_ORIGINS must be valid JSON, not "*". In the OpenShift API deployment, CORS_ORIGINS='["*"]' works; plain * crashloops (pydantic-settings parses the env var as a list[str]).
  • OpenAI structured outputs can't use additionalProperties. Prefer an explicit list-of-entries model (see FormUnderstander.LabelEntry) over a free-form dict.

Detailed References

  • Building Blocks API - Constructor params, return types, all options
  • RAG Building Blocks - RAG components: Embedder, stores, Retriever, AnswerGenerator
  • Software Components - Pipeline patterns, schema persistence, batch processing
  • Evaluators - ExtractionEvaluator, RAGEvaluator, BatchEvaluationRunner (LLMJudge v2 -based)
  • Examples - Complete working examples (invoice extraction, RAG, parallel transcription, etc.)
  • Demo App - Demo app architecture, routes, env vars, deployment
  • Docs Website - Documentation site structure and editing guide
  • Installation - All pip install extras and system dependencies
  • Maintenance - Skill maintenance and PyPI fetch script

© 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 10 other files (scripts, references) in .claude/skills/gaik-toolkit of GAIK-project/gaik-toolkit.

  • SKILL.md
  • references/building-blocks.md
  • references/demo-app.md
  • references/docs-website.md
  • references/evaluators.md
  • references/examples.md
  • references/installation.md
  • references/maintenance.md
  • references/rag.md
  • references/software-components.md
  • scripts/fetch_pypi_readme.py

Open the folder on GitHubat commit e66fcca

Compare with similar skills

Gaik Toolkit 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.

Gaik Toolkit compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Gaik Toolkit this skillGAIK-project/gaik-toolkit100—~5.7kAutomated safety check: PassMIT
Doclingzhuzhaoyun/Molio433—~2.6kAutomated safety check: PassCustom licence
Markitdownjimmc414/Kosmos5952 repos~1.7kAutomated safety check: PassNone
Excel and CSV Data Analysisbytedance/deer-flow84k4 repos~2.2kAutomated safety check: PassMIT
MarkitdownImCa0/just-laws78114 repos~3.2kAutomated safety check: NotesMIT
MineruNebutra/MinerU-Skill123—~1.4kAutomated safety check: PassMIT

Similar skills

  • Docling

    zhuzhaoyun/Molio

    PRIMARY skill for converting .pdf, .docx, .pptx, .xlsx, .doc, .ppt, .xls, images, and audio/video files (.mp3, .wav, .m4a, .mp4, .mov, etc.) to Markdown.

    433 GitHub stars~2.6k tokensUpdated today
    Documents & OfficeAuto-check passed
  • Markitdown

    jimmc414/Kosmos

    Convert various file formats (PDF, Office documents, images, audio, web content, structured data) to Markdown optimized for LLM processing.

    595 GitHub starsUsed in 2 repos~1.7k tokens
    Documents & OfficeAuto-check passed
  • Excel and CSV Data Analysis

    bytedance/deer-flow

    Analyzes uploaded Excel and CSV files with SQL through DuckDB, producing schema inspections, statistical summaries and exports to CSV, JSON or Markdown.

    84k GitHub starsUsed in 4 repos~2.2k tokens
    Data & AnalyticsAuto-check passed
  • Markitdown

    ImCa0/just-laws

    Convert files and office documents to Markdown. An agent skill from ImCa0/just-laws.

    781 GitHub starsUsed in 14 repos~3.2k tokens
    Documents & OfficeAuto-check: notes
  • Mineru

    Nebutra/MinerU-Skill

    An AI-Native skill for parsing PDF / Office / image files into clean Markdown with MinerU — a fast, zero-config document parser for AI agents.

    123 GitHub stars~1.4k tokensUpdated 16 days ago
    Documents & OfficeAuto-check passed
  • Markdown Converter

    Team-Commonly/commonly

    Convert binary documents (PDF, DOCX, XLSX, PPTX, HTML, EPUB, images) to clean LLM-friendly Markdown using Microsoft's markitdown Python tool.

    1.4k GitHub stars~557 tokensUpdated today
    Documents & OfficeAuto-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 yesterday
    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 yesterday
    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 yesterday
    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 yesterday
    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 yesterday
    Auto-check passed
  • Gaik Add Examples

    GAIK-project/gaik-toolkit

    Adds or updates working code examples for GAIK toolkit components and pipelines in implementationlayer/examples/.

    100 GitHub stars~2.4k tokensUpdated yesterday
    Auto-check: notes

Questions about Gaik Toolkit

What does Gaik Toolkit do?

GAIK toolkit overview and reference. An agent skill from GAIK-project/gaik-toolkit. Gaik Toolkit is an agent skill from GAIK-project/gaik-toolkit. GAIK toolkit overview and reference.

When should I use Gaik Toolkit?

Gaik Toolkit fits situations like: needing context on GAIK components (extractors; the repository structure; configuration pattern; environment variables.

How do I install Gaik Toolkit in Claude Code?

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

How do I install Gaik Toolkit in Codex?

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

Can I use Gaik Toolkit 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 gaik-toolkit -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/gaik-toolkit, .gemini/skills/gaik-toolkit, .github/skills/gaik-toolkit and .opencode/skills/gaik-toolkit in your project.

What does Gaik Toolkit need to run?

Going by SKILL.md and its folder, Gaik Toolkit needs Python for the scripts in its folder, the command-line tools its instructions call (bun, pnpm, pip and python) and credentials named AITTA_API_KEY, ANTHROPIC_API_KEY, GOOGLE_API_KEY and AZURE_API_KEY. Our summary lists: Python 3; A credential in AZURE_API_KEY; A credential in OPENAI_API_KEY.

Does Gaik Toolkit access the network?

SKILL.md names 3 domains. As links in the text: gaik-project.github.io, gaik-demo.2.rahtiapp.fi and pypi.org. This is read from the text; nothing was executed.

Is Gaik Toolkit 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Gaik Toolkit use?

Gaik Toolkit 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 Gaik Toolkit use?

About 5.7k tokens (SKILL.md is roughly 23k 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 26k tokens, read only when the agent opens those files.

What are the alternatives to Gaik Toolkit?

Skills that share tags, products or a category with Gaik Toolkit: Docling (zhuzhaoyun/Molio, 433 stars), Markitdown (jimmc414/Kosmos, 595 stars), Excel and CSV Data Analysis (bytedance/deer-flow, 84k stars) and Markitdown (ImCa0/just-laws, 781 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Gaik Toolkit?

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 9, 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.