From tentaqles
View and modify client workspace settings — cloud provider, database, git identity, stack, language, blocked commands, and any other manifest field. Use when the user says "change email", "update cloud", "set database", "add to stack", "change git provider", "update settings", "configure client", "show settings", "what's my config", or wants to modify any part of the .tentaqles.yaml manifest. Also triggers when the user says they just learned something about the client's infrastructure ("oh they actually use AWS not Azure") or wants to add technologies to the stack.
How this skill is triggered — by the user, by Claude, or both
Slash command
/tentaqles:client-settingsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
View and modify any field in the current client's `.tentaqles.yaml` manifest. This is the single place to configure cloud, database, git, stack, language, and everything else about a client workspace.
View and modify any field in the current client's .tentaqles.yaml manifest. This is the single place to configure cloud, database, git, stack, language, and everything else about a client workspace.
python -c "
import sys, os
sys.path.insert(0, os.environ.get('CLAUDE_PLUGIN_ROOT', '.'))
from tentaqles.manifest.loader import load_manifest
manifest = load_manifest(os.getcwd())
if manifest:
print('PATH=' + manifest['_manifest_path'])
print('CLIENT=' + manifest['client'])
else:
print('NO_CLIENT')
"
If NO_CLIENT: "You're not inside a client workspace. Run /tentaqles:add-client first."
Read the .tentaqles.yaml and display it as a clean table:
Client: Acme Corp (en)
Cloud: azure (acme-prod subscription)
Database: postgresql via mcp [postgres]
Git: github as alice-dev ([email protected])
PM: asana
Stack: python, flask, postgresql, n8n
Blocked: gh repo delete, git push --force main, az group delete
Then say: "To change anything, just tell me — e.g., 'change email to [email protected]' or 'add fastapi to stack'."
Parse the user's request and map it to the manifest field. Common patterns:
| User says | Manifest field | Action |
|---|---|---|
| "change email to [email protected]" | git.email | Update |
| "set cloud to aws" | cloud.provider | Update + regenerate preflight |
| "change database to snowflake" | database.provider + database.dialect | Update both |
| "add fastapi to stack" | stack | Append |
| "remove django from stack" | stack | Remove |
| "set language to pt-BR" | language | Update |
| "change git user to newuser" | git.user + git.expected_user | Update both |
| "switch to gitlab" | git.provider + git.host + git.preflight | Update + regenerate |
| "add rate limit to blocked" | git.blocked_commands or cloud.blocked_commands | Append |
| "set subscription to X" | cloud.subscription_name | Update |
| "set pm to jira" | project_management.provider | Update |
| "set snowflake account to X" | database.connection_info | Update |
| "set database access to cli" | database.access | Update |
Read the current .tentaqles.yaml, modify the relevant field(s), write it back. Use Python with PyYAML to preserve structure:
python -c "
import sys, os, yaml
sys.path.insert(0, os.environ.get('CLAUDE_PLUGIN_ROOT', '.'))
from tentaqles.manifest.loader import find_manifest
manifest_path = find_manifest(os.getcwd())
with open(manifest_path, 'r') as f:
data = yaml.safe_load(f)
# Apply the change — examples:
# data['git']['email'] = '[email protected]'
# data['cloud']['provider'] = 'aws'
# data['stack'].append('fastapi')
with open(manifest_path, 'w') as f:
yaml.dump(data, f, default_flow_style=False, sort_keys=False, allow_unicode=True)
print('Updated: {field} = {value}')
"
When certain fields change, related fields should update too:
Cloud provider changes:
| New provider | Set preflight to | Set blocked_commands to |
|---|---|---|
| azure | az account show --query name -o tsv | ["az group delete", "az keyvault delete", "az storage delete"] |
| aws | aws sts get-caller-identity --query Account --output text | ["aws iam delete", "aws s3 rb"] |
| digitalocean | doctl account get --format Email --no-header | [] |
| none | remove preflight | [] |
Git provider changes:
| New provider | Set host to | Set preflight to |
|---|---|---|
| github | github | gh auth status |
| gitlab | gitlab | glab auth status |
| azure-devops | azure-devops | (remove — use email check only) |
Database provider changes:
| New provider | Set dialect to |
|---|---|
| postgresql | postgresql |
| snowflake | snowflake |
| databricks | spark-sql |
| supabase | postgresql |
Ask the user to confirm the auto-updated fields: "I also updated the preflight command and blocked commands for AWS. Look right?"
If git email or provider changed, update .claude/rules/identity.md to match:
# Read, update, write the identity rule file
Run preflight checks to verify the new settings work:
python -c "
import sys, os
sys.path.insert(0, os.environ.get('CLAUDE_PLUGIN_ROOT', '.'))
from tentaqles.manifest.loader import load_manifest, run_preflight_checks, format_context_summary, get_client_context
manifest = load_manifest(os.getcwd())
ctx = get_client_context(os.getcwd())
checks = run_preflight_checks(manifest or ctx)
print(format_context_summary(ctx, checks))
"
Report what changed and whether the new configuration passes preflight checks.
If the user provides multiple changes at once ("set cloud to aws, database to snowflake, email to [email protected]"), apply them all in one write to avoid multiple file rewrites.
cloud section is missing): create it.custom: key.npx claudepluginhub tentaqles/tentaqles-pluginGuides completion of development work by verifying tests, detecting environment, and presenting structured options for merge, PR, or cleanup.
Enforces test-driven development: write failing test first, then minimal code to pass. Use when implementing features or bugfixes.
Guides creation and editing of skills using test-driven development with pressure scenarios and subagents to verify agent compliance.