Vercel Composition Patterns
supabase/supabase
React composition patterns that scale. An agent skill from supabase/supabase.
Build, change, run, and test Altinn Studio apps. An agent skill from Altinn/altinn-studio.
$ npx skills add Altinn/altinn-studio --skill altinn-studio-app-development -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Altinn/altinn-studio altinn-studio-app-development --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/Altinn/altinn-studio.git skills-src && mkdir -p .claude/skills && cp -r skills-src/src/cli/resources/agent/skills/app-development .claude/skills/altinn-studio-app-development && rm -rf skills-srcUse ~/.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/
Install the "altinn-studio-app-development" agent skill from https://github.com/Altinn/altinn-studio/tree/main/src/cli/resources/agent/skills/app-development into .claude/skills/altinn-studio-app-development/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "altinn-studio-app-development", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Altinn/altinn-studio/tree/main/src/cli/resources/agent/skills/app-developmentType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Altinn/altinn-studio --skill altinn-studio-app-development -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Altinn/altinn-studio altinn-studio-app-development --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Altinn/altinn-studio.git skills-src && mkdir -p .agents/skills && cp -r skills-src/src/cli/resources/agent/skills/app-development .agents/skills/altinn-studio-app-development && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "altinn-studio-app-development" agent skill from https://github.com/Altinn/altinn-studio/tree/main/src/cli/resources/agent/skills/app-development into .agents/skills/altinn-studio-app-development/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "altinn-studio-app-development", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Altinn/altinn-studio --skill altinn-studio-app-development -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Altinn/altinn-studio altinn-studio-app-development --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Altinn/altinn-studio.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/src/cli/resources/agent/skills/app-development .cursor/skills/altinn-studio-app-development && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "altinn-studio-app-development" agent skill from https://github.com/Altinn/altinn-studio/tree/main/src/cli/resources/agent/skills/app-development into .cursor/skills/altinn-studio-app-development/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "altinn-studio-app-development", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Altinn/altinn-studio.git --path src/cli/resources/agent/skills/app-development--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Altinn/altinn-studio --skill altinn-studio-app-development -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Altinn/altinn-studio altinn-studio-app-development --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Altinn/altinn-studio.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/src/cli/resources/agent/skills/app-development .gemini/skills/altinn-studio-app-development && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "altinn-studio-app-development" agent skill from https://github.com/Altinn/altinn-studio/tree/main/src/cli/resources/agent/skills/app-development into .gemini/skills/altinn-studio-app-development/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "altinn-studio-app-development", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Altinn/altinn-studio altinn-studio-app-developmentInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Altinn/altinn-studio --skill altinn-studio-app-development -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Altinn/altinn-studio.git skills-src && mkdir -p .github/skills && cp -r skills-src/src/cli/resources/agent/skills/app-development .github/skills/altinn-studio-app-development && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "altinn-studio-app-development" agent skill from https://github.com/Altinn/altinn-studio/tree/main/src/cli/resources/agent/skills/app-development into .github/skills/altinn-studio-app-development/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "altinn-studio-app-development", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Altinn/altinn-studio --skill altinn-studio-app-development -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Altinn/altinn-studio altinn-studio-app-development --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Altinn/altinn-studio.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/src/cli/resources/agent/skills/app-development .opencode/skills/altinn-studio-app-development && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "altinn-studio-app-development" agent skill from https://github.com/Altinn/altinn-studio/tree/main/src/cli/resources/agent/skills/app-development into .opencode/skills/altinn-studio-app-development/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "altinn-studio-app-development", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
altinn-studio-app-developmentBuild, change, run, and test Altinn Studio apps. An agent skill from Altinn/altinn-studio.
Altinn Studio App Development is an agent skill from Altinn/altinn-studio. Build, change, run, and test Altinn Studio apps. Use for app configuration, data models, layouts, texts, process flows, authorization, backend logic, and local testing with studioctl and localtest.
Its SKILL.md is about 2k 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 Development. The repository describes itself as: Next generation open source Altinn platform and applications. The licence is MIT.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit dd14325. It shows what the files ask for, not the result of running them.
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.
No scripts in the folder and no shell commands in SKILL.md (its code samples are bash).
From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
local.altinn.cloudFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Altinn Studio App Development loads about 2k tokens when it runs. Until then it costs about 57 tokens; SKILL.md has 958 words of instructions outside code blocks.
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.
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.
The full file from Altinn/altinn-studio at commit dd14325, republished under its MIT licence (© Altinn). 958 words, ~2,022 tokens.
.claude/skills/altinn-studio-app-development/SKILL.md (or your agent's skills folder).Use studioctl as the entry point for local Altinn Studio app development. The installed command's help is authoritative;
inspect studioctl --help and the relevant studioctl <command> --help before relying on flags or behavior.
An Altinn Studio app is a .NET ASP.NET Core application.
Since Altinn Studio is a low-code platform, lots of features/capabilities are built around configuration.
Most behavior lives in App/; the repository root holds the solution, container build, and deployment configuration:
<app-root>/
|-- App/
| |-- App.csproj Backend project and Altinn.App package versions
| |-- Program.cs Service registration and app startup
| |-- config/
| | |-- applicationmetadata.json App identity, data types, and allowed parties
| | |-- process/process.bpmn Tasks, events, and transitions
| | |-- authorization/policy.xml Authorization rules
| | `-- texts/resource.<lang>.json User-facing texts by language
| |-- models/ Data-model schemas and generated C# types
| |-- ui/ Layout sets, pages, components, and UI settings
| |-- options/ Static option lists, when present
| |-- logic/, services/, Actions/ Custom backend behavior, when present
| `-- wwwroot/ App-specific static assets, when present
|-- deployment/ Helm values and deployment configuration
|-- Dockerfile
`-- App.slnThe shape varies by app version and enabled features. Follow the identifiers that connect files:
config/process/process.bpmn select the UI for each process task. Newer apps commonly use matching
ui/<task-id>/ directories; older apps map tasks through ui/layout-sets.json.config/applicationmetadata.json connect tasks, models, and UI settings. Layout components bind
fields from the selected model.ui/<layout-set>/Settings.json defines page order and settings. Files in layouts/ define pages and components.config/texts/resource.<lang>.json. Keep supported
languages aligned when changing user-facing text.Program.cs registers custom C# implementations. Apps usually group them under logic/, services/, or similar.Read the closest AGENTS.md, then inspect the relevant slice of this graph.
You may be directed to an existing checkout, if not, use studioctl to checkout an app. Relevant commands:
studioctl auth status --json
studioctl auth login
studioctl apps search --json "<query>"
studioctl app clone <org>/<repo> [destination]Ask the user to log in if auth status reports no valid login. Search when no specific repository was given; select
from apps[] using appId or cloneUrl. --env accepts prod, dev, staging, or local and defaults to prod;
Altinn Studio platform developers may use dev or staging.
$schema declared by JSON files when present. Preserve the app's existing version and conventions instead
of copying structures from a different template version.Program.cs; follow the app's existing organization.studioctl app upgrade v9 migrates the app and reports what it will not change for you. Read its output before
changing anything yourself; it names every file and configuration path it found.
Maskinporten needs deliberate handling. A v9 app has one Maskinporten identity and never configures its own
credentials: it reads whatever the platform provisions for it. Deployed, that is the client Studio provisions. On a
local run studioctl is the platform, and it cannot yet hand over the credentials Studio issues - so to test against a
real external API you supply a client for studioctl to provision in their place, with
studioctl app maskinporten set. That is a gap in the local harness, not a second identity for the app.
The consequence that matters is about scopes. Maskinporten grants scopes per client registration, and the client a local run uses is not the registration the deployed app uses. So a scope selected in Studio is not thereby available locally, and a scope on your local client is not thereby available once deployed. The same scopes have to be in place in both spots.
When the upgrade reports Maskinporten configuration:
Scope value read out of the sections it is telling you to delete. Once the section is gone, that
record is gone.studioctl app maskinporten set and make sure that client already has
the same scopes in Maskinporten. studioctl doctor reports whether one is stored for the detected app.appsettings.json. v9 does not read them from there in any environment.
A section that configures the external Altinn.ApiClients.Maskinporten package is the exception and is still read
by that package.Do not add the altinn:serviceowner scopes anywhere on the app's behalf: Studio adds them to the provisioned
credentials automatically when a v9 app is built, and a local run does not need them.
From the app root:
studioctl env up
studioctl env status --json
studioctl run --detach --json
studioctl app ps --jsonFor investigating failures, use studioctl app logs and studioctl env logs.
studioctl doctor can be used if there are problems with studioctl (or there are missing capabilities).
If local hostnames do not resolve, inspect studioctl env hosts status. studioctl env hosts add changes the system
hosts file, so explain that effect before running it with the host's normal privilege mechanism.
Open the url from the run result; logPath identifies its log file. app ps reports status in running and
apps[], but does not return the app URL. The http://local.altinn.cloud:8000 root page contains the login form,
not the app.
This is mostly for internal Altinn Studio/platform developers, not service owner app developers.
Mostly used within the Altinn/altinn-studio monorepo.
Useful when testing changes to e.g. localtest, pdf3, frontend, workflow-engine-app or other
Altinn Studio platform components.
STUDIOCTL_INTERNAL_DEV=true studioctl env up builds supported LocalTest/runtime service images from the current
monorepo checkout.studioctl env up --dev-workflow-engine routes the workflow-engine component to a host process, normally at
http://localhost:9090.studioctl run --dev-frontend serves frontend assets from the current monorepo checkout while the app frontend
development server is running.studioctl app stop
studioctl env downDo not reset state, remove credentials, delete files, or broadly terminate processes unless requested and precisely targeted.
© Altinn, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in src/cli/resources/agent/skills/app-development of Altinn/altinn-studio.
Open the folder on GitHubat commit dd14325
Altinn Studio App Development 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Altinn Studio App Development this skillAltinn/altinn-studio | 169 | — | ~2k | Automated safety check: Pass | MIT | |
| Vercel Composition Patternssupabase/supabase | 111k | 58 repos | ~726 | Automated safety check: Pass | MIT | |
| Finishing a Development Branchobra/superpowers | 297k | 5 repos | ~1.9k | Automated safety check: Pass | MIT | |
| Typescript Advanced Typesrolling-scopes/rsschool-app | 10k | 25 repos | ~4.2k | Automated safety check: Pass | MPL-2.0 | |
| PR Babysitteropeninterpreter/openinterpreter | 69k | 3 repos | ~4.2k | Automated safety check: Pass | Apache-2.0 | |
| Code Review ChecklistshareAI-lab/learn-claude-code | 78k | 5 repos | ~1.1k | Automated safety check: Pass | MIT |
supabase/supabase
React composition patterns that scale. An agent skill from supabase/supabase.
obra/superpowers
Walks the last step of a branch: confirm tests pass, detect the git environment, ask how to integrate, carry out your choice and clean up the worktree.
rolling-scopes/rsschool-app
Master TypeScript's advanced type system including generics, conditional types, mapped types, template literals, and utility types for building type-safe applications.
openinterpreter/openinterpreter
Watches an open GitHub pull request until it merges, handling review comments, diagnosing CI failures and retrying flaky checks along the way.
shareAI-lab/learn-claude-code
Reviews code against a five-part checklist covering security, correctness, performance, maintainability and testing, and reports findings in a fixed format.
onyx-dot-app/onyx
Iteratively improves a PR (GitHub), MR (GitLab), or shelved changelist (Perforce) until Greptile gives it a 5/5 confidence score with zero unresolved comments.
Altinn/altinn-studio
Write and edit CHANGELOG.md entries in this repository as release notes for the people who use the product.
Altinn/altinn-studio
Drive the Agent's graphical desktop with the desktop helper — look at the screen, point, type, and control native applications.
Altinn/altinn-studio
Help pull request reviewers understand what changed and the resulting user or developer experience through screenshots or recordings.
Altinn/altinn-studio
Rebase a stacked PR onto main after its parent was squash-merged, using git rebase --onto to skip already-merged commits.
Altinn/altinn-studio
Norsk tekstforfatter og redaktør for Digdir: klarspråk, AI-markører, anglisismer, fagtermer, mikrotekst.
Altinn/altinn-studio
Skill for reviewing text content - error messages, labels, help texts and tone of voice.
Categories
Build, change, run, and test Altinn Studio apps. An agent skill from Altinn/altinn-studio. Altinn Studio App Development is an agent skill from Altinn/altinn-studio. Build, change, run, and test Altinn Studio apps.
Altinn Studio App Development fits situations like: app configuration; local testing with studioctl and localtest.
Run `npx skills add Altinn/altinn-studio --skill altinn-studio-app-development -a claude-code`. Or copy the skill folder (src/cli/resources/agent/skills/app-development in Altinn/altinn-studio) into .claude/skills/altinn-studio-app-development in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Altinn/altinn-studio --skill altinn-studio-app-development -a codex`. Or copy the skill folder (src/cli/resources/agent/skills/app-development in Altinn/altinn-studio) into .agents/skills/altinn-studio-app-development in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Altinn/altinn-studio --skill altinn-studio-app-development -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/altinn-studio-app-development, .gemini/skills/altinn-studio-app-development, .github/skills/altinn-studio-app-development and .opencode/skills/altinn-studio-app-development in your project.
SKILL.md names no scripts, command-line tools or credentials: Altinn Studio App Development is instructions for the agent only.
SKILL.md names 1 domain. In commands or code: local.altinn.cloud; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
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.
Altinn Studio App Development is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2k tokens (SKILL.md is roughly 8.1k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Altinn Studio App Development: Vercel Composition Patterns (supabase/supabase, 111k stars), Finishing a Development Branch (obra/superpowers, 297k stars), Typescript Advanced Types (rolling-scopes/rsschool-app, 10k stars) and PR Babysitter (openinterpreter/openinterpreter, 69k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Altinn (a GitHub organization) maintains it in Altinn/altinn-studio, which has 169 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on October 9, 2026.
Source: Altinn/altinn-studio on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.