Agent skill

Add SQL Fields

by microbus-io in microbus-io/fabric

TRIGGER when user asks to add fields, properties, or columns to a SQL CRUD microservice's object.

Apache-2.0Auto-check passedBackend & APIs

Install Add SQL Fields

skills CLI
$ npx skills add microbus-io/fabric --skill add-sql-fields -a claude-code

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

GitHub CLI
$ gh skill install microbus-io/fabric add-sql-fields --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/microbus-io/fabric.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/sequel/add-sql-fields .claude/skills/add-sql-fields && 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
add-sql-fields
GitHub stars
172
Token cost
~3.5k tokens
SKILL.md length
1,045 words
Files
1
Skills in repo
33
Repo updated
First seen
Licence
Apache-2.0

At a glance

TRIGGER when user asks to add fields, properties, or columns to a SQL CRUD microservice's object.

  • Works in 8 steps: Read Local CLAUDE.md File → Update the Type Definition of the Object → Update the Type Definition of the Query → …
  • User asks to add fields
  • Calls go
  • Columns to a SQL CRUD microservices object

What it does

Add SQL Fields is an agent skill from microbus-io/fabric. TRIGGER when user asks to add fields, properties, or columns to a SQL CRUD microservice's object.

Its SKILL.md is about 3.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Backend & APIs, covering Microservices and SQL. It works with SQL. The repository describes itself as: Microbus is the only fabric where every agentic workflow runs on a true microservice substrate - giving your workflows security, scale, observability, and prompt-driven authoring. The licence is Apache-2.0.

When your agent uses it

  • User asks to add fields
  • Columns to a SQL CRUD microservices object

Example prompts

  • “/add-sql-fields”

Workflow steps

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

  1. Read Local CLAUDE.md File
  2. Update the Type Definition of the Object
  3. Update the Type Definition of the Query
  4. Update Database Schema
  5. Map Column Names to Object Fields
  6. Add Query Conditions
  7. Update Integration Tests
  8. Housekeeping

What it can do on your machine

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

    • go

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

  • Network

    No URLs in SKILL.md.

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

  • Credentials

    Names no API keys, tokens, secrets or passwords.

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

Context cost

Add SQL Fields loads about 3.5k tokens when it runs. Until then it costs about 28 tokens; SKILL.md has 1,045 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~28
When it runs · the whole SKILL.md, loaded when a task matches
~3.5k

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 microbus-io/fabric at commit fb98098, republished under its Apache-2.0 licence (© microbus-io). 1,045 words, ~3,473 tokens.

Download SKILL.mdSave it as .claude/skills/add-sql-fields/SKILL.md (or your agent's skills folder).
name
add-sql-fields
description
TRIGGER when user asks to add fields, properties, or columns to a SQL CRUD microservice's object.

CRITICAL: Read and analyze this microservice before starting. Do NOT explore or analyze other microservices unless explicitly instructed to do so. The instructions in this skill are self-contained to this microservice.

IMPORTANT: MyNoun, MyNounKey, mynoun, and mynounapi are placeholders for the actual object, its key, directory, and API package of the microservice.

IMPORTANT: Do not remove the Example field or code related to it from the code since it is required by various tests.

Workflow

Copy this checklist and track your progress:

Adding fields to the object:
- [ ] Step 1: Read Local CLAUDE.md File
- [ ] Step 2: Update the Type Definition of the Object
- [ ] Step 3: Update the Type Definition of the Query
- [ ] Step 4: Update Database Schema
- [ ] Step 5: Map Column Names to Object Fields
- [ ] Step 6: Add Query Conditions
- [ ] Step 7: Update Integration Tests
- [ ] Step 8: Housekeeping
Step 1: Read Local CLAUDE.md File

Read the local CLAUDE.md file in the microservice's directory. It contains microservice-specific instructions that should take precedence over global instructions.

Step 2: Update the Type Definition of the Object

Find the type definition of the object in mynounapi/object.go. Add the new fields to the type definition of the struct. Fields can be primitive or complex types that serialize to JSON. Be sure to include a JSON tag. Use camelCase for the JSON name, and specify to omitzero.

When referring to an object persisted by another microservices, use its respective key.

Express field-level constraints (trimming, length limits, value ranges, required values) as dv8 tags on the fields; they are enforced automatically when the object is validated (see the add-type skill).

go
type MyNoun struct {
	Key MyNounKey `json:"key,omitzero"`

	// HINT: Define the fields of the object here, with dv8 tags for field-level constraints
	MyFieldString   string             `json:"myFieldString,omitzero" dv8:"trim,len<=256"`
	MyFieldInteger  int                `json:"myFieldInteger,omitzero" dv8:"val>=0"`
	MyFieldNullable string             `json:"myFieldNullable,omitzero" dv8:"trim,len<=256"`
	MyFieldTime     time.Time          `json:"myFieldTime,omitzero"`
	MyFieldTags     map[string]string  `json:"myFieldTags,omitzero" dv8:"each len<=256"`
	
	MyOtherObjectKey otherobjectapi.OtherObjectKey `json:"myOtherObjectKey,omitzero" dv8:"notzero"`
}

Constraints that the dv8 tag grammar cannot express - comparisons against the current time, invariants that span multiple fields - go in the object's Validate method, which is called automatically after the tags are enforced.

go
// Validate validates invariants that span multiple fields of the object.
// It is called automatically when the object is validated, after the dv8 field tags are enforced.
func (obj *MyNoun) Validate(ctx context.Context) error {
	// ...

	// HINT: Validate invariants that span multiple fields here as required
	if obj.MyFieldTime.After(time.Now()) {
		return errors.New("MyFieldTime must not be in the future")
	}
	return nil
}
Step 3: Update the Type Definition of the Query

Find the type definition of the Query in mynounapi/query.go. To allow filtering by the new fields, add them to the type definition of the struct. Fields can be primitive or complex types that serialize to JSON. Be sure to include a JSON tag. Use camelCase for the JSON name, and specify to omitzero.

When referring to a parent object that is persisted by another SQL CRUD microservices, use its respective key as the field type.

Express field-level constraints as dv8 tags on the fields, matching the constraints of the object fields they filter by (e.g. the same length limit).

go
type Query struct {
	Key MyNounKey `json:"key,omitzero"`

	// HINT: Define the fields of the object here, with dv8 tags for field-level constraints
	MyFieldInteger  int       `json:"myFieldInteger,omitzero" dv8:"val>=0"`
	MyFieldNullable string    `json:"myFieldNullable,omitzero" dv8:"trim,len<=256"`
	MyFieldTimeGTE  time.Time `json:"myFieldTimeStart,omitzero"`
	MyFieldTimeLT   time.Time `json:"myFieldTimeEnd,omitzero"`
	
	ParentKey parentapi.ParentKey `json:"parentKey,omitzero" dv8:"notzero"`
}

Constraints that the dv8 tag grammar cannot express go in the Query's Validate method, which is called automatically after the tags are enforced.

go
// Validate validates the filtering options of the query that cannot be expressed as dv8 field tags.
// It is called automatically when the query is validated, after the dv8 field tags are enforced.
func (q *Query) Validate(ctx context.Context) error {
	// ...

	// HINT: Validate filtering options that cannot be expressed as dv8 tags here as required
	if q.MyFieldTimeGTE.After(time.Now()) {
		return errors.New("MyFieldTimeGTE must not be in the future")
	}
	if q.MyFieldTimeLT.After(time.Now()) {
		return errors.New("MyFieldTimeLT must not be in the future")
	}
	if q.MyFieldTimeGTE.After(q.MyFieldTimeLT) {
		return errors.New("MyFieldTimeGTE must not be after MyFieldTimeLT")
	}
	return nil
}
Step 4: Update Database Schema

Create a new migration script file in resources/sql with an incremental file name. IMPORTANT: Do not edit an existing migration file.

Append ALTER TABLE statements to define the schema of the new columns. Define a DEFAULT value for all new columns that are NOT NULL in order to avoid the migration from failing on tables already populated with data. Columns holding IDs of parent objects should be named after the table they refer to with an _id suffix, e.g. parent_table_id.

sql
-- DRIVER: mysql
ALTER TABLE my_noun
	ADD my_field_integer BIGINT NOT NULL DEFAULT 0,
	ADD my_field_nullable TEXT NULL,
	ADD my_field_time DATETIME NULL,
	ADD my_field_tags MEDIUMBLOB NULL,
	ADD parent_table_id BIGINT NOT NULL DEFAULT 0;

-- DRIVER: pgx
ALTER TABLE my_noun
	ADD COLUMN my_field_integer BIGINT NOT NULL DEFAULT 0,
	ADD COLUMN my_field_nullable TEXT NULL,
	ADD COLUMN my_field_time TIMESTAMP WITH TIME ZONE NULL,
	ADD COLUMN my_field_tags BYTEA NULL,
	ADD COLUMN parent_table_id BIGINT NOT NULL DEFAULT 0;

-- DRIVER: mssql
ALTER TABLE my_noun ADD
	my_field_integer BIGINT NOT NULL DEFAULT 0,
	my_field_nullable NVARCHAR(MAX) NULL,
	my_field_time DATETIME2 NULL,
	my_field_tags VARBINARY(MAX) NULL,
	parent_table_id BIGINT NOT NULL DEFAULT 0;

-- DRIVER: sqlite
ALTER TABLE my_noun ADD COLUMN my_field_integer INTEGER NOT NULL DEFAULT 0;
-- DRIVER: sqlite
ALTER TABLE my_noun ADD COLUMN my_field_nullable TEXT;
-- DRIVER: sqlite
ALTER TABLE my_noun ADD COLUMN my_field_time DATETIME;
-- DRIVER: sqlite
ALTER TABLE my_noun ADD COLUMN my_field_tags BLOB;
-- DRIVER: sqlite
ALTER TABLE my_noun ADD COLUMN parent_table_id INTEGER NOT NULL DEFAULT 0;

IMPORTANT: SQLite only supports adding one column per ALTER TABLE statement. Each column must be a separate statement prefixed with -- DRIVER: sqlite.

Append CREATE INDEX or CREATE UNIQUE INDEX statements to add indices for columns that will be heavily searchable. Always include the tenant_id as the first column in a composite index. Name the index by concatenating the name of the table, followed by idx and the columns it includes (excluding the tenant_id column). For example, my_noun_idx_my_field_integer is a composite index of (tenant_id, my_field_integer) in the my_noun table. If you are not sure what columns are worth indexing, ask the user for guidance.

sql
-- DRIVER: mysql
CREATE INDEX my_noun_idx_my_field_integer ON my_noun (tenant_id, my_field_integer);

-- DRIVER: pgx
CREATE INDEX my_noun_idx_my_field_integer ON my_noun (tenant_id, my_field_integer);

-- DRIVER: mssql
CREATE INDEX my_noun_idx_my_field_integer ON my_noun (tenant_id, my_field_integer);

-- DRIVER: sqlite
CREATE INDEX my_noun_idx_my_field_integer ON my_noun (tenant_id, my_field_integer);

Production tables on Postgres: plain CREATE INDEX takes an ACCESS EXCLUSIVE lock that blocks writes for the duration of the build - fine for small tables, painful for large hot ones. If the target pgx table has significant production write traffic, ask the user whether to use CREATE INDEX CONCURRENTLY IF NOT EXISTS instead. It builds without blocking writes (sequel runs each migration statement outside a transaction, so CONCURRENTLY is allowed), at the cost of: (a) two table scans instead of one, and (b) non-atomic failure mode - if interrupted, Postgres leaves an INVALID index that must be DROP-ed manually before the migration can be retried. Plain CREATE INDEX is the safer default for prototyping and for tables that are still small.

Show full SKILL.md (366 more words)Show less
Step 5: Map Column Names to Object Fields

Update the mapping of the database column names to their corresponding object fields in service.go. IMPORTANT : Do not remove the mappings of the example column to the Example field since they are required by various tests.

In mapColumnsOnInsert, map the column names that can be set during the initial insertion of the object. For nullable columns, wrap the value in sequel.Nullify to store the Go zero value as NULL in the database. To use a SQL statement as value, wrap a string in sequel.UnsafeSQL.

go
func (svc *Service) mapColumnsOnInsert(ctx context.Context, obj *serviceapi.Obj) (columnMapping map[string]any, err error) {
	tags, err := json.Marshal(obj.Tags)
	if err != nil {
		return errors.Trace(err)
	}
	columnMapping := map[string]any{
		"my_field_integer":  obj.MyFieldInteger,
		"my_field_nullable": sequel.Nullify(obj.MyFieldNullable),
		"my_field_time":     sequel.UnsafeSQL(svc.db.NowUTC()),
		"my_field_tags":     tags,
		"parent_table_id":   obj.ParentKey.ID,
	}
	return columnMapping, nil
}

In mapColumnsOnUpdate, map the columns that can be modified after the initial insertion of the object. For nullable columns, wrap the value in sequel.Nullify to store the Go zero value as NULL in the database. To use a SQL statement as value, wrap a string in sequel.UnsafeSQL.

go
func (svc *Service) mapColumnsOnUpdate(ctx context.Context, obj *serviceapi.Obj) (columnMapping map[string]any, err error) {
	tags, err := json.Marshal(obj.Tags)
	if err != nil {
		return errors.Trace(err)
	}
	columnMapping := map[string]any{
		"my_field_integer":  obj.MyFieldInteger,
		"my_field_nullable": sequel.Nullify(obj.MyFieldNullable),
		"my_field_time":     sequel.UnsafeSQL(svc.db.NowUTC()),
		"my_field_tags":     tags,
		"parent_table_id":   obj.ParentKey.ID,
	}
	return columnMapping, nil
}

In mapColumnsOnSelect, map the columns that can be read. For nullable columns, wrap the reference to the variable in sequel.Nullable in order to interpret a database NULL value as the zero value of the Go data type. Use sequel.Bind to transform and apply the value manually to the object.

go
func (svc *Service) mapColumnsOnSelect(ctx context.Context, obj *serviceapi.Obj) (columnMapping map[string]any, err error) {
	columnMapping := map[string]any{
		"my_field_integer":  &obj.MyFieldInteger,
		"my_field_nullable": sequel.Nullable(&obj.MyFieldNullable),
		"my_field_time":     &obj.MyFieldTime,
		"my_field_tags": sequel.Bind(func(value []byte) (err error) {
			return json.Unmarshal(value, &obj.Tags)
		}),
		"parent_table_id": &obj.ParentKey.ID,
	}
	return columnMapping, nil
}
Step 6: Add Query Conditions

Prepare appropriate query conditions in prepareWhereClauses in service.go for new Query fields. Only add a condition if the Query field is not its zero value. Add the names of any textual and searchable columns to the searchableColumns array.

go
func (svc *Service) prepareWhereClauses(ctx context.Context, query serviceapi.Query) (conditions []string, args []any, err error) {
	if strings.TrimSpace(query.Q) != "" {
		searchableColumns := []string{
			"my_field_nullable",
		}
		// ...
	}
	// ...
	if query.MyFieldInteger != 0 {
		conditions = append(conditions,"my_field_integer=?")
		args = append(args, query.MyFieldInteger)
	}
	query.MyFieldNullable = strings.TrimSpace(query.MyFieldNullable)
	if query.MyFieldNullable != "" {
		conditions = append(conditions,"my_field_nullable=?")
		args = append(args, query.MyFieldNullable)
	}
	if !query.MyFieldTimeGTE.IsZero() {
		conditions = append(conditions,"my_field_time>=?")
		args = append(args, query.MyFieldTimeGTE)
	}
	if !query.MyFieldTimeLT.IsZero() {
		conditions = append(conditions,"my_field_time<?")
		args = append(args, query.MyFieldTimeLT)
	}
	if !query.ParentKey.IsZero() {
		conditions = append(conditions,"parent_table_id=?")
		args = append(args, query.ParentKey.ID)
	}
	return conditions, args, nil
}
Step 7: Update Integration Tests

The NewObject function in service_test.go is used by tests to construct a new object to pass to Create. Adjust the constructor function to initialize all required fields so that they pass validation. You may introduce a measure of randomness.

Extend the integration tests to take into account the schema changes. Look for the HINTs to guide you. In particular:

  • Set, modify and verify the new fields in TestMyNoun_ColumnMappings in service_test.go
  • Add validation test cases for new object fields in TestMyNoun_ValidateObject in mynounapi/object_test.go
  • Add validation test cases for new query fields in TestMyNoun_ValidateQuery in mynounapi/query_test.go
Step 8: Housekeeping

Follow the housekeeping skill. Adding fields changes only the hand-written domain code (object.go, query.go, service.go, resources/sql), not definition.go, so the boilerplate regeneration is a no-op; the Version bump and go vet still apply.

© microbus-io, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/sequel/add-sql-fields of microbus-io/fabric.

Open the folder on GitHubat commit fb98098

Compare with similar skills

Add SQL Fields 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.

Add SQL Fields compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Add SQL Fields this skillmicrobus-io/fabric172—~3.5kAutomated safety check: PassApache-2.0
Google BigqueryLeoYeAI/openclaw-master-skills2.2k—~4.1kAutomated safety check: PassMIT
Debug Using Debugbarhexlet-volunteers/hexlet-sicp1141 repos~1.5kAutomated safety check: PassAGPL-3.0
Databricksrocky-data/rocky304—~2kAutomated safety check: PassApache-2.0
Datajunction QueryDataJunction/dj161—~2kAutomated safety check: PassMIT
Aurora Dsqlaws/agent-toolkit-for-aws2.8k—~9.6kAutomated safety check: PassApache-2.0

Similar skills

  • Google Bigquery

    LeoYeAI/openclaw-master-skills

    Google BigQuery API integration with managed OAuth. An agent skill from LeoYeAI/openclaw-master-skills.

    2.2k GitHub stars~4.1k tokensUpdated 2 mo ago
    Backend & APIsAuto-check passed
  • Debug Using Debugbar

    hexlet-volunteers/hexlet-sicp

    Inspect what a Laravel request actually did — queries, exceptions, timing, cache, auth, views — by reading the profiling data Laravel Debugbar already captured, via Artisan commands.

    114 GitHub starsUsed in 1 repo~1.5k tokens
    Backend & APIsAuto-check passed
  • Databricks

    rocky-data/rocky

    Databricks REST API and SQL reference for Rocky's warehouse adapter.

    304 GitHub stars~2k tokensUpdated today
    Backend & APIsAuto-check passed
  • Datajunction Query

    DataJunction/dj

    Activate this skill for querying DataJunction (DJ) — finding nodes, generating SQL, fetching metric data, exploring lineage, visualizing results — via the DJ UI, MCP tools, or REST/GraphQL APIs.

    161 GitHub stars~2k tokensUpdated today
    Backend & APIsAuto-check passed
  • Aurora Dsql

    aws/agent-toolkit-for-aws

    Official

    Provisions and manages Aurora DSQL clusters, connects via psql or DSQL Connectors, manages schemas, runs queries, migrates from MySQL, diagnoses query plans, and develops apps on serverless…

    2.8k GitHub stars~9.6k tokensUpdated today
    Backend & APIsAuto-check passed
  • Pp Jobber

    mvanhorn/printing-press-library

    Read-only Jobber CLI for offline analysis — every GraphQL surface synced to SQLite, every relationship queryable.

    2.1k GitHub stars~3k tokensUpdated today
    Backend & APIsAuto-check: notes

More from microbus-io/fabric

All 32 skills in this repo
  • Add Config

    microbus-io/fabric

    TRIGGER when user asks to add or modify a configuration property or setting, or to make a value configurable.

    172 GitHub stars~2.3k tokensUpdated 10 days ago
    Auto-check passed
  • Add Function

    microbus-io/fabric

    TRIGGER when user asks to add, create, or modify an API endpoint, function, or RPC, or a route that accepts typed arguments and returns typed results.

    172 GitHub stars~2.4k tokensUpdated 10 days ago
    Auto-check passed
  • Add Inbound Event

    microbus-io/fabric

    TRIGGER when user asks to listen for, subscribe to, or handle an event emitted by another microservice.

    172 GitHub stars~1.4k tokensUpdated 10 days ago
    Auto-check passed
  • Add Metric

    microbus-io/fabric

    TRIGGER when user asks to add or modify a metric, counter, gauge, or histogram, or to track/measure an operation.

    172 GitHub stars~1.5k tokensUpdated 10 days ago
    Auto-check passed
  • Add Outbound Event

    microbus-io/fabric

    TRIGGER when user asks to fire, emit, or publish an event that other microservices can subscribe to.

    172 GitHub stars~1.7k tokensUpdated 10 days ago
    Auto-check passed
  • Add Python Function

    microbus-io/fabric

    TRIGGER when user asks to add a Python-backed function endpoint to an existing Python-backed microservice.

    172 GitHub stars~1.3k tokensUpdated 10 days ago
    Auto-check passed

Works with

Questions about Add SQL Fields

What does Add SQL Fields do?

TRIGGER when user asks to add fields, properties, or columns to a SQL CRUD microservice's object. Add SQL Fields is an agent skill from microbus-io/fabric. TRIGGER when user asks to add fields, properties, or columns to a SQL CRUD microservice's object.

When should I use Add SQL Fields?

Add SQL Fields fits situations like: user asks to add fields; columns to a SQL CRUD microservices object.

How do I install Add SQL Fields in Claude Code?

Run `npx skills add microbus-io/fabric --skill add-sql-fields -a claude-code`. Or copy the skill folder (.claude/skills/sequel/add-sql-fields in microbus-io/fabric) into .claude/skills/add-sql-fields in your project. Claude Code loads it when a task matches its description.

How do I install Add SQL Fields in Codex?

Run `npx skills add microbus-io/fabric --skill add-sql-fields -a codex`. Or copy the skill folder (.claude/skills/sequel/add-sql-fields in microbus-io/fabric) into .agents/skills/add-sql-fields in your project. Codex loads it when a task matches its description.

Can I use Add SQL Fields 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 microbus-io/fabric --skill add-sql-fields -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/add-sql-fields, .gemini/skills/add-sql-fields, .github/skills/add-sql-fields and .opencode/skills/add-sql-fields in your project.

What does Add SQL Fields need to run?

Going by SKILL.md and its folder, Add SQL Fields needs the command-line tools its instructions call (go).

Does Add SQL Fields access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Add SQL Fields 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 Add SQL Fields use?

Add SQL Fields is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Add SQL Fields use?

About 3.5k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Add SQL Fields?

Skills that share tags, products or a category with Add SQL Fields: Google Bigquery (LeoYeAI/openclaw-master-skills, 2.2k stars), Debug Using Debugbar (hexlet-volunteers/hexlet-sicp, 114 stars), Databricks (rocky-data/rocky, 304 stars) and Datajunction Query (DataJunction/dj, 161 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Add SQL Fields?

microbus-io (a GitHub organization) maintains it in microbus-io/fabric, which has 172 GitHub stars. The repository holds 33 skills in this directory. The repository was last updated on September 28, 2026.

Source: microbus-io/fabric on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.