Gpg Multi Key
Prorise-cool/Claude-Code-Multi-Agent
Advanced GPG multi-key management strategies for consultants, CI/CD automation, and enterprise teams.
Git for agent identity — one identity, any apps. An agent skill from newtype-ai/nit.
$ npx skills add newtype-ai/nit --skill nit -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install newtype-ai/nit nit --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
Claude Code skills documentation · loads skills from .claude/skills/
Install the "nit" agent skill from https://github.com/newtype-ai/nit/tree/main into .claude/skills/nit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "nit", 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.
$ npx skills add newtype-ai/nit --skill nit -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install newtype-ai/nit nit --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "nit" agent skill from https://github.com/newtype-ai/nit/tree/main into .agents/skills/nit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "nit", 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 newtype-ai/nit --skill nit -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install newtype-ai/nit nit --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "nit" agent skill from https://github.com/newtype-ai/nit/tree/main into .cursor/skills/nit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "nit", 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.
$ npx skills add newtype-ai/nit --skill nit -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install newtype-ai/nit nit --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "nit" agent skill from https://github.com/newtype-ai/nit/tree/main into .gemini/skills/nit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "nit", 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 newtype-ai/nit nitInstalls 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 newtype-ai/nit --skill nit -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "nit" agent skill from https://github.com/newtype-ai/nit/tree/main into .github/skills/nit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "nit", 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 newtype-ai/nit --skill nit -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install newtype-ai/nit nit --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "nit" agent skill from https://github.com/newtype-ai/nit/tree/main into .opencode/skills/nit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "nit", 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.
nitGit for agent identity — one identity, any apps. An agent skill from newtype-ai/nit.
Nit is an agent skill from newtype-ai/nit. Git for agent identity — one identity, any apps
Its SKILL.md is about 3.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 52 other files, including scripts (for example `.github/workflows/ci.yml`, `.github/workflows/release.yml` and `AGENTS.md`).
It sits in Backend & APIs, covering Cryptography and Git workflow. It works with Git. The repository describes itself as: git for agent identity. The licence is MIT.
3 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 9b878ae. 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.
Ships 1 file in scripts/ (JavaScript, from the files we listed), which the agent can run.
Shell commands in SKILL.md call:
npmnpxFrom 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:
acme.aieth.llamarpc.comAlso links to:
newtype-ai.orggoogle.github.ioFrom 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.
Nit loads about 3.6k tokens when it runs. Until then it costs about 13 tokens; SKILL.md has 1,669 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); the scripts in this folder are not scanned.
The full file from newtype-ai/nit at commit 9b878ae, republished under its MIT licence (© newtype-ai). 1,669 words, ~3,609 tokens.
.claude/skills/nit/SKILL.md (or your agent's skills folder). This skill also uses 48 other files; get the full folder from GitHub.You're an agent. You work across platforms — FAAM, Discord, Polymarket, dev tools, whatever comes next. Each one needs to know who you are. Without nit, every app creates a profile for you and locks it in their database. You don't own it. You can't take it with you.
nit changes that. You generate your own Ed25519 keypair, create your own agent card, and publish it under your own URL. You prove who you are with a cryptographic signature — no human accounts, no OAuth, no API keys. Your identity exists before any app is involved.
Your card is your passport. Carry it everywhere. Show it off.
npm install -g @newtype-ai/nitAlready have nit? Update to the latest:
npm update -g @newtype-ai/nitOr run without installing:
npx @newtype-ai/nit <command>agent-card.json is YOUR document. You own it. You define every field — name, description, skills, tools, provider. It's an A2A-compliant format, so any platform that speaks A2A can read and understand your card.
Think of it as a container where you store everything about yourself: who you are, what you can do, and what context you carry. It's secured by Ed25519 cryptography — you prove ownership with a signature, not a password.
nit enforces publicKey and wallet — these are cryptographic and cannot be faked. Everything else (name, description, skills) is yours to define. But apps may require specific fields before accepting your login, so fill in your card properly.
This is the key insight. Each branch holds a separate version of your agent-card.json:
main = your canonical public identity — the full picture of who you areConvention: use the app's domain as the branch name — moltbook.com, faam.io, discord.com.
Data in one branch never pollutes another. Your skills, tools, tasks, and description on moltbook.com stay on that branch. Your faam.io branch has its own entirely separate card. This gives you perfect context isolation — just switch branches when you change environments.
You control what each app sees. When you log into an app, it receives the card from your domain branch — not your main card. Each app only sees what you've chosen to share with it.
main → your full public identity
moltbook.com → skills & config for Moltbook
faam.io → skills & config for FAAM
discord.com → skills & config for DiscordWhen you log into an app, you sign a domain-bound payload with your private key. The app verifies it by fetching your public card. No OAuth, no API keys, no human account. Just math.
nit sign --login <domain> does two things automatically:
When the app verifies your login, it receives your domain-specific card (the branch matching the domain, if pushed) along with a read token to fetch updates. This means the skills and description you set on your faam.io branch are what faam.io sees — not your generic main card.
The domain is baked into the signature — a signature for faam.io is mathematically invalid for discord.com. Cross-app replay is impossible.
Your Ed25519 keypair isn't just for signing — it's the root for chain-native addresses:
base58(ed25519_pubkey) — your public key is your Solana address. Derivable from your public key alone.HMAC-SHA512("secp256k1", ed25519_seed) → secp256k1 key → keccak256(pubkey). Requires your private key.One identity, multiple chains. No seed phrases, no extra key management.
nit status # shows your chain addresses
nit sign-tx --chain evm <hash> # sign a transaction
nit broadcast --chain evm <tx> # broadcast to RPCimport { getWalletAddresses, getSolanaAddress, getEvmAddress, signTx, broadcast } from '@newtype-ai/nit';
const wallets = await getWalletAddresses(nitDir);
// { solana: "7Xf3...", ethereum: "0x1a2b..." }
const sig = await signTx('evm', '0x<32-byte-hash>');
// { chain: 'evm', signature: '0x...', recovery: 0, address: '0x...' }nit is workspace-scoped. Your .nit/ directory IS your identity.
.nit/ exists, nit sign --login <domain> creates one automatically (init + push + login in one command)..nit/ in other directories — each workspace has its own identity.cd to another directory to run nit commands.nit sign --login moltbook.comThis does everything: generates your keypair, creates your identity, publishes it, switches to the app's branch, and outputs a signed login payload. One command.
If you already have a .nit/ identity in this workspace, it reuses it.
Edit agent-card.json directly — just like editing source code before a git commit. Set your name, description, and skills:
{
"name": "Emil",
"description": "Research agent specializing in market analysis and web intelligence",
"version": "1.0.0",
"skills": [
{
"id": "web-research",
"name": "Web Research",
"description": "Search, analyze, and synthesize information from the web",
"tags": ["research", "search", "analysis"],
"examples": ["Research the latest AI agent frameworks and compare them"]
}
],
"provider": {
"organization": "Acme AI Labs",
"url": "https://acme.ai"
}
}Key fields:
| Field | What to put |
|---|---|
name | Your name — who you are |
description | What you do, in one sentence |
version | Semantic version of yourself |
skills | Your capabilities — curate these per platform |
provider | Who built or operates you |
iconUrl | URL to your avatar |
documentationUrl | URL to your docs |
publicKey is managed by nit automatically — injected from your keypair at every commit. You don't need to set or modify it.
Commit:
nit commit -m "Set up identity"nit sign --login faam.ioEach nit sign --login <domain> auto-creates a branch for that domain and outputs a signed login payload. Commit and push to keep your per-app cards in sync.
Each time you enter a new app:
nit sign --login <domain> — auto-switches to the domain branch, fetches the app's skill.md from https://<domain>/skill.md into your skills directory, and adds a skill pointer to the cardnit commit -m "configure for <domain>" — skill pointers are resolved from SKILL.md automaticallynit pushNext time you return to this app, nit sign --login <domain> switches back to your saved context automatically. If the app has updated their skill.md (bumped the version in frontmatter), your local copy auto-updates.
When you switch to a different app, your context switches cleanly — no leftover state, no pollution between environments.
Most apps don't support nit-native login yet. For these, use the human's existing browser sessions:
nit sign --login <domain> — this generates a SKILL.md with auth instructions for that domainprofile="user" — this attaches to the human's running Chrome via Chrome DevTools MCP, inheriting all existing login sessions (Google, GitHub, X, etc.)Rules: Do NOT enter any credentials. Do NOT ask the human whether to sign in — just do it. Do NOT use the default isolated browser profile — you MUST use profile="user" to access existing sessions.
Apps can force all agents to re-login (e.g., after deploying updates). When this happens, any authenticated request returns:
{ "error": "App updated — re-login required", "code": "RELOGIN_REQUIRED" }When you receive this 401, re-run nit sign --login <domain> and POST to the app's login endpoint. This refreshes your token and picks up any updated skill.md.
Your card can store skills as pointers — just { "id": "skill-name" } — instead of duplicating full skill data inline. At commit time, nit resolves these pointers from SKILL.md files automatically.
SKILL.md is the single source of truth. When a SKILL.md exists with a matching id, its name and description always win over whatever the card has inline. Skills without a matching SKILL.md are kept as-is.
Fresh cards are seeded from project-local skills only. This avoids publishing user-global skills just because they exist on the machine.
nit chooses the write directory for generated skills using local-first detection:
.claude/, .codex/), use that framework's skills path.claude/skills/, .cursor/skills/, .codex/skills/, .windsurf/skills/, .openclaw/workspace/skills/ at project level.agents/skills/ inside the workspaceThe discovered path is stored in .nit/config under [skills]. When nit sign --login <domain> creates a new branch, it auto-creates a SKILL.md template at this location.
User-global skills are still readable when you explicitly reference them in agent-card.json with a pointer like { "id": "web-research" }. At commit time, nit resolves explicit pointers from project-local and user-global SKILL.md files. If you want generated app skills to live in a shared/global directory, run nit skill dir <path>. Use nit skill dir to inspect the current directory and nit skill dir --reset to return to local-first detection.
By default, nit pushes to newtype-ai.org — a free, open-source hosting service. Your card is an A2A-compliant document hosted at a public URL.
You can use any nit-compatible server:
# Use a custom server
nit remote set-url origin https://my-server.com
# Check current remote
nit remotePush main first (establishes identity), then push other branches:
nit push --all| Command | What it does |
|---|---|
nit init | Create .nit/, generate Ed25519 keypair, initial commit |
nit status | Your identity (agent ID, key, URL, chain addresses), branch, uncommitted changes |
nit commit -m "msg" | Snapshot agent-card.json |
nit log | Commit history for current branch |
nit diff [target] | Compare card vs HEAD, another branch, or a commit hash |
nit branch [name] | List branches, or create a new one |
nit branch -d <name> | Delete a local branch |
nit branch -D <name> | Delete local + remote branch |
nit checkout <branch> | Switch branch (auto-commits uncommitted changes, then restores that branch's card) |
nit push [--all] | Push current branch (or all) to remote |
nit pull [--all] | Pull current branch (or all) from remote |
nit reset [target] | Restore agent-card.json from HEAD or a specific commit |
nit show [target] | Show commit metadata and card content |
nit sign "msg" | Sign a message with your Ed25519 key |
nit sign --login <domain> | Auto-switch to domain branch + generate login payload |
nit remote | Show remote URL, agent ID, auth method |
nit remote add <name> <url> | Add a new remote |
nit remote set-url <name> <url> | Change a remote's URL |
nit sign-tx --chain <c> <data> | Sign transaction data (EVM: 32-byte hash, Solana: message bytes) |
nit broadcast --chain <c> <tx> | Broadcast signed transaction to configured RPC endpoint |
nit rpc | Show configured RPC endpoints |
nit rpc set-url <chain> <url> | Set RPC endpoint for a chain |
nit auth set <domain> --provider <p> --account <a> | Configure OAuth auth for a domain branch (Google, GitHub, X) |
nit auth show [domain] | Show auth config for branch(es) |
nit skill refresh [--source <source>] [--url <url>] | Refresh nit SKILL.md |
nit skill dir [path|--reset] | Show, set, or reset generated skills directory |
nit is also a library. Import it as @newtype-ai/nit:
import {
init, commit, branch, checkout, push, status, sign, loginPayload,
getWalletAddresses, getSolanaAddress, getEvmAddress, loadRawKeyPair,
signTx, broadcast, rpcSetUrl, rpcInfo,
authSet, authShow, reset, show, pull,
} from '@newtype-ai/nit';
await init();
const s = await status();
console.log(s.agentId, s.cardUrl);
console.log(s.walletAddresses); // chain addresses derived from identity
// → { solana: "7Xf3...", ethereum: "0x1a2b..." }
// Log into an app (auto-switches to domain branch)
const payload = await loginPayload('moltbook.com');
// → { agent_id, domain, timestamp, signature }
// Customize card for this app, then commit & push
await commit('configure for moltbook.com');
await push();
// Sign and broadcast transactions
await rpcSetUrl('evm', 'https://eth.llamarpc.com');
const sig = await signTx('evm', '0x<32-byte-keccak256-hash>');
// → { chain: 'evm', signature: '0x...', recovery: 0, address: '0x...' }
await broadcast('evm', '0x<signed-tx-hex>');
// → { chain: 'evm', txHash: '0x...', rpcUrl: 'https://...' }Full playbook: newtype-ai.org/nit/skill.md
© newtype-ai, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 48 other files (scripts) in the repository root of newtype-ai/nit.
Open the folder on GitHubat commit 9b878ae
Nit 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 |
|---|---|---|---|---|---|---|
| Nit this skillnewtype-ai/nit | 114 | — | ~3.6k | Automated safety check: Pass | MIT | |
| Gpg Multi KeyProrise-cool/Claude-Code-Multi-Agent | 305 | — | ~3.2k | Automated safety check: Warn | None | |
| GitHub AuthRedWoodOG/Hermes-Desktop | 177 | 3 repos | ~1.9k | Automated safety check: Warn | MIT | |
| Project Session ManagementMicrock/ordinary-claude-skills | 403 | — | ~1.9k | Automated safety check: Pass | Custom licence | |
| Creating GitHub Issues From Web Researchjeremylongshore/tons-of-skills-marketplace | 2.8k | — | ~981 | Automated safety check: Pass | MIT | |
| Dvcmajiayu000/claude-skill-registry | 666 | 1 repos | ~1.4k | Automated safety check: Pass | Apache-2.0 |
Prorise-cool/Claude-Code-Multi-Agent
Advanced GPG multi-key management strategies for consultants, CI/CD automation, and enterprise teams.
RedWoodOG/Hermes-Desktop
Set up GitHub authentication for the agent using git (universally available) or the gh CLI.
Microck/ordinary-claude-skills
Track progress across work sessions using SESSION.md with git checkpoints and concrete next actions.
jeremylongshore/tons-of-skills-marketplace
Execute this skill enhances AI assistant's ability to conduct web research and translate findings into actionable github issues.
majiayu000/claude-skill-registry
Data Version Control for ML projects. An agent skill from majiayu000/claude-skill-registry.
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.
Works with
Categories
Git for agent identity — one identity, any apps. An agent skill from newtype-ai/nit. Nit is an agent skill from newtype-ai/nit.
Nit fits situations like: tasks that involve Cryptography; tasks that involve Git workflow.
Run `npx skills add newtype-ai/nit --skill nit -a claude-code`. Or copy the skill folder (the newtype-ai/nit repository) into .claude/skills/nit in your project. Claude Code loads it when a task matches its description.
Run `npx skills add newtype-ai/nit --skill nit -a codex`. Or copy the skill folder (the newtype-ai/nit repository) into .agents/skills/nit 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 newtype-ai/nit --skill nit -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/nit, .gemini/skills/nit, .github/skills/nit and .opencode/skills/nit in your project.
Going by SKILL.md and its folder, Nit needs JavaScript for the scripts in its folder and the command-line tools its instructions call (npm and npx). Our summary lists: Node.js.
SKILL.md names 4 domains. In commands or code: acme.ai and eth.llamarpc.com; the agent is likely to contact these when it follows the instructions. As links in the text: newtype-ai.org and google.github.io. 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Nit is published under the MIT licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.6k 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.
Skills that share tags, products or a category with Nit: Gpg Multi Key (Prorise-cool/Claude-Code-Multi-Agent, 305 stars), GitHub Auth (RedWoodOG/Hermes-Desktop, 177 stars), Project Session Management (Microck/ordinary-claude-skills, 403 stars) and Creating GitHub Issues From Web Research (jeremylongshore/tons-of-skills-marketplace, 2.8k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
newtype-ai (a GitHub organization) maintains it in newtype-ai/nit, which has 114 GitHub stars. The repository was last updated on May 10, 2026.
Source: newtype-ai/nit on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.