CommunityBildgithub.com

grahama1970/ask

Use when the user asks to query project memory, ask an oracle, use supported browser-backed reviewers, run Tau roundtable/single-handler workflows, ask Pi-native subagents from within Pi, run persona/deep-review workflows, generate image prompts, check OS/project health through composed skills, or run an ask DAG. This skill is the executable /ask runtime; do not replace it with an informal subagent, plain web search, or hand-written review; inside Pi, explicit Pi-native subagent targets are routed through the pi-subagents tool as an Ask target type.

Was ist ask?

ask is a Claude Code agent skill that use when the user asks to query project memory, ask an oracle, use supported browser-backed reviewers, run Tau roundtable/single-handler workflows, ask Pi-native subagents from within Pi, run persona/deep-review workflows, generate image prompts, check OS/project health through composed skills, or run an ask DAG. This skill is the executable /ask runtime; do not replace it with an informal subagent, plain web search, or hand-written review; inside Pi, explicit Pi-native subagent targets are routed through the pi-subagents tool as an Ask target type.

Funktioniert mitClaude CodeCodex CLICursorAntigravityGemini CLI
npx skills add https://github.com/grahama1970/agent-skills/tree/main/skills/ask

Installed? Explore more Bild skills: steipete/songsee, affaan-m/frontend-design-direction, affaan-m/ios-icon-gen · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Was macht ask?

Stop First

If the user names $ask, /ask, an ask mode, oracle, deep review, parallel review, roundtable, argue, CAE gap review, or ask DAG, read this whole file before acting. Then use the real runtime entrypoint unless the user explicitly asks for a fallback or the runtime is unavailable and that fallback is reported.

Do not substitute spawn_agent, a plain model call, a plain web search, a manual summary, or an invented review for $ask.

Runtime Entrypoint

Run commands from this directory. Pi skill-command syntax such as /skill:ask webgpt What is 2 + 2? is a first-class shortcut: the leading browser handler (webgpt, webclaude, webkimi, webgemini, or webgrok) routes to a Tau single-call browser-handler DAG with --execute --json. Inline Pi skill references such as $ask webgpt What is 2 + 2? and the spaced natural language spelling $ask web gpt What is 2 + 2? must be treated the same way (web gpt normalizes to webgpt). This is only a compatibility shortcut for Pi users; it must not use the removed direct WebGPT oracle path.

./run.sh tau-dag "<request>" maps to the Typer tau-dag run subcommand internally. ./run.sh team-plan "<request>" --team <preset> renders a role-based multi-agent plan and frozen Tau DAG preview; execution requires explicit --execute --live (see README "Team Orchestration").

cd skills/ask
./run.sh --help
./run.sh webgpt What is 2 + 2?
./run.sh webgpt --compile-only What is 2 + 2?
./run.sh ask --help
./run.sh tau-dag run --help

Every nontrivial run must preserve the runtime artifacts. The standard artifact set is:

  • <ask_id>.request.json
  • <ask_id>.status.json
  • <ask_id>.events.jsonl
  • mode-specific outputs such as review.md, review.json, DAG manifests, or browser evidence

Runtime artifacts default under .ask_artifacts/runs/<ask_id> or the provided --run-output-root. For long, live, or generated runs prefer a storage-backed root such as /mnt/storage12tb/skills/ask/outputs/.... Do not commit generated ask artifacts.

Every executed handler call (success or failure) is recorded to the ask_call_log collection in $memory at the execution choke point, with handler, status, failure_code, and controlled_tab_id/conversation URL when present, plus the proven method of the last successful call (reasoning selection, tab binding, lifecycle mode, dispatch command with secrets redacted). Model ids are validated against the live SciLLM catalog at compile (invalid_scillm_model_id BLOCKED with nearest valid alternatives); a browser seat with 3+ consecutive recorded failures is flagged as known-bad before dispatch with its failure codes. Check a seat before relying on it: python3 skills/ask/scripts/ask_call_history.py --handler webgemini prints the last successful call and recent failures; add --recommend for the exact proven method to reuse. A handler with no recorded success is a blind guess — compile-only or probe cheaply first. Historical runs are backfillable: python3 skills/ask/scripts/backfill_call_log.py [outputs-root] ingests every on-disk node receipt idempotently (deterministic _key per run+node). Every EXECUTED run's result JSON (and execution-status.json) also carries handler_last_success: per seat, the last successful method from memory (conversation URL, tab, lifecycle/layout), current consecutive failures, and failure codes to avoid — returned in context so the project agent never needs a separate history lookup after consuming a run.

Deep-Dive References (read on demand)

Before doing thisRead
team-plan with a plan file; status --run --projectionreferences/plans-and-status.md
Explicit Pi-native subagent targetreferences/pi-subagents.md
Turning ask output (one-shot/roundtable/compete/clean-room) into subagent lanesreferences/lane-handoff.md
herdr list/who/send to another agent's panereferences/herdr.md
Choosing one-shot vs roundtable vs compete; model/effort selectorsreferences/modes.md
Panel audits, seat roster, rate-limited seats, webclaude policyreferences/seats-and-audits.md
Executing/supervising any live run (monitoring, windows, payload matrix, unblock, drift)references/operations.md
Any run failurereferences/diagnosis.md
Compiling/executing any multi-seat DAG (roundtable/compete/creator-reviewer)references/workflows.md
Any browser-handler executionreferences/browser.md

Four Kinds Of Target

/ask addresses four peer target types. They differ in transport, not in standing:

TargetExampleTransport owner
Herdr session — a live agent in a panememory, w11:p13$monitor-herdr via herdr pane run
Model call — API/model handlergpt-5.5-high, Codex-opus-5-high, deepseek-ai/DeepSeek-V3.2-TEE$tau (SciLLM is internal to Tau)
Web model — browser-backed reviewer (chat tab, NOT the agentic model; see the webclaude warning below)webgpt, webclaude, webkimi$surf + $browser-oracle
Pi-native subagent — local Pi child advisor/workerpi reviewer, subagent general-purpose, local coderpi-subagents native subagent tool

A project agent should not care which side is browser, model, Herdr session, or Pi-native subagent beyond naming the target.

Project-Agent Quickstart

Start here when the user asks for a single model call, roundtable, competition, or creator-reviewer loop. Use one of these shapes; do not invent a custom orchestration path.

User intentCommand shape
One handler answers./run.sh tau-dag "<task>" --repo <repo> --target <target> --immutable-goal "<goal>" --handler <handler-or-model> --execute --json
Roundtable./run.sh tau-dag "<shared task>" --repo <repo> --target <target> --immutable-goal "<goal>" --dag-template roundtable --handler <a> --handler <b> --topology concurrent --execute --json
Competition./run.sh compete "<isolated task>" --repo <repo> --target <target> --immutable-goal "<goal>" --handler <a> --handler <b> --criterion <criterion> --execute --json
One-shot (per-seat answers, no consensus)./run.sh one-shot "<question>" --handler <a> --handler <b> --handler <c> — N independent single-call lanes run concurrently; each returns its own nonce-bound answer or a named blocker. Partial answers are DEGRADED-but-usable (exit 0 at or above --min-answered); a roundtable's quorum refusal never applies here.
Pi-native subagent from inside Pisubagent({ action: "list" }), then subagent({ agent: "<agent>", task: "<task>" }) or one workflowScript fanout. This is for explicit pi/subagent/local reviewer targets only; it is not a replacement for Tau/browser handlers.
Creator then reviewer./run.sh tau-dag "<creator task then reviewer verdict>" --repo <repo> --target <target> --immutable-goal "<goal>" --dag-template creator-reviewer --handler <creator> --handler <reviewer> --topology sequential --execute --json
Diagnose/fix/close GitHub issues./run.sh fix-issues --repo <owner/name> --issue <N> [--issue <M>] [--handler gpt-5.5] [--execute] — gathers each issue via gh, diagnoses through a live one-shot handler into structured cause/fix JSON with the debugger ladder gate (needs_debugger recommends $debugger only when the failing transition is in-process runtime state no artifact explains), and is fail-closed: dry-run by default; --execute closes an issue ONLY after its named verify command (typically an $agentic-evals fixture) actually passes. No verify → blocked; failing verify → verify-failed, issue stays open. Per-issue receipts under outputs/fix-issues/. Gate: fixtures/fix_issues.json.

Handlers are peers even when their transports differ. Browser handlers (webgpt, webclaude, webkimi, webgemini, webgrok) run through $surf and $browser-oracle. API/model handlers such as gpt-5.5-high, gpt-5.5-xhigh, Codex-opus-5-high, or chutes deepseek-ai/DeepSeek-V3.2-TEE are routed by Tau. Project agents should not care which side is browser or API beyond naming the handler.

Handlers are peers whether browser-backed (webgpt, webclaude, webkimi, webgemini, webgrok via $surf/$browser-oracle) or API-backed (gpt-5.5-high, claude-opus-5-high, chutes <provider/model> via Tau). Before executing any multi-seat DAG: compile first (omit --execute), show the human the printed ASCII chart, and run only on confirmation. Full mode examples and selector rules: references/modes.md. Full protocols and fail-closed tables: references/workflows.md.

Non-Negotiables For Every Run

  • An explicit immutable goal (--immutable-goal or a labeled Immutable goal: line) is required for roundtable, creator-reviewer, and compete; missing goal fails preflight with NEEDS_INTERVIEW before any handler is contacted.
  • Roundtables are ALWAYS --topology concurrent with an identical packet for every seat. Compete candidates are isolated and never see each other.
  • Executed DAGs must be monitored to a terminal verdict via the run's JSON stream artifacts (events.jsonl, dag-progress.json, node receipts, execution-status.json); do not launch and walk away.
  • PASS is reviewer/model evidence only; local closure requires deterministic local proof. DEGRADED/NEEDS_ATTENTION/rate limits are lane-local: keep usable seats, follow the failed lane's recovery packet.
  • Non-streaming API completions must pass typed admission with finish_reason=stop before their text can count as evidence. Truncated, filtered, missing-finish-reason, or malformed completions emit scillm_response_incomplete; retain raw bytes and response.meta.json validation errors. Do not repair partial verdict text or retry automatically. Retained cases: completion-admission-rejects-truncation (captured replay) and completion-admission-live-positive (real provider readback).
  • Failures are non-silent: every failed lane exposes failure_code, a recovery packet, and next_command/ticket instruction. On any failure, read references/diagnosis.md and dispatch on the owning receipt before theorising.
  • Direct WebGPT oracle routing ($ask chatgpt, --oracle-backend webgpt, --webgpt-*) fails closed; Tau browser handlers remain supported.
  • Follow-up continuity: every browser lane's node receipt / response.meta.json must carry controlled_tab_id and the conversation URL; a null tab id is a failed handoff. When the human may ask clarifying or follow-up questions, run with --browser-tab-lifecycle fresh-keep (or reuse-bound) — the default auto/fresh-temporary CLOSES the window after the run, killing the conversation. After the run, report the tab id + conversation URL and bind them (skills/browser-oracle/run.sh bind <project> --backend <b> --tab-id <id> --url <url> --manual) so the follow-up targets the same session.
  • Tab visibility gate (observed 2026-09-15, webgemini): some providers (Gemini confirmed) defer the composer send while the tab is a hidden document — in a shared window only one tab can be frontmost, so N-1 of N concurrent lanes are always hidden and stall as prompt_too_large_or_stalled ("prompt remained in the composer after send"). Concurrent browser lanes therefore default to isolated windows (one window per seat, placed on the reviewer desktop) so every lane tab is a visible document; --window-layout shared is opt-in. A stalled already-typed composer is salvageable: skills/surf/run.sh tab.switch <id> makes the tab visible and the queued send dispatches. Check document.visibilityState before shrinking prompts for this failure class. The verified per-seat working method is stored in $memory (ask_call_log key ask:method:webgemini; see ask_call_history.py --handler webgemini --recommend).
  • webclaude is a claude.ai chat tab, testing-only — NOT agentic Claude. Prefer claude-fable-low, then claude-opus-4-8-high (see references/seats-and-audits.md).

Mode Router

Use the narrowest mode that matches the user request.

RequestRuntime patternRequired details
Memory-backed question./run.sh ask "<question>" --jsonInclude scope when relevant.
Oracle answer./run.sh ask "<question>" --oracle ... --jsonChoose backend/model/persona explicitly when requested.
Pi browser-handler shortcut./run.sh webgpt What is 2 + 2? from /skill:ask webgpt What is 2 + 2?Rewrites to Tau single-call with --handler webgpt --execute --json; use --compile-only to emit the DAG without live browser transport.
Single named handler./run.sh tau-dag "<request>" --handler <handler-or-model> --jsonBrowser handlers use $surf; non-browser handlers are $scillm model names routed by Tau. Add --execute for live transport.
Pi-native subagent targetNative Pi subagent tool, after subagent({ action: "list" })Only when running inside Pi and the user explicitly names pi, subagent, pi-subagent, local reviewer, or local coder. Browser/model/Tau Ask requests do not use this route.
Multi-handler roundtable./run.sh tau-dag "<request>" --handler webclaude --handler gpt-5.5 ... --topology concurrent --execute --jsonRoundtable is prompt-to-Tau-DAG. Browser handlers get an Ask-owned fresh window by default. Preserve browser-tab-lifecycle.json, dag.json, command specs, handler receipts, and join receipts.
Compete / bakeoff./run.sh compete "<task>" --handler webgpt --handler webclaude --handler gpt-5.5-high --criterion deterministic-proof --execute --jsonIsolated candidates plus compete scorecard and winner continuation request. Browser/API handlers are peers. Project agent must locally verify features before promotion.
Creator-reviewer loop./run.sh tau-dag "<request>" --handler <creator> --handler <reviewer> --topology sequential --jsonThe reviewer receives prior handler receipts. Pass/fail requests require a verdict in the reviewer response.
Supported direct browser oracledocumented browser mode such as webgemini, webkimi, webperplexity, or cursor-browserUse only when the user asks for that direct mode; attach local target content when browser cannot read paths.
Deep review./run.sh ask "<question>" --deep-review --deep-review-target <path> ... --jsonPass complete target bundle; return review.md and review.json.
Parallel review./run.sh ask "<question>" --parallel-review ... --jsonState reviewer count/focus and preserve per-reviewer outputs.
Persona roundtable/argue./run.sh ask "<question>" --roundtable ... --json or argue modePersona deliberation only. For web/API handler roundtables, use tau-dag.
CAE gap reviewdocumented CAE gap modeInclude current claim, evidence, gaps, and acceptance gate.
Tau DAG front door./run.sh tau-dag "<request>" --repo <repo> --target <target> --solver-model <model> --reviewer-model <model> --criterion <c> --jsonEmits strict tau.dag_contract.v1 first; uses $interview packet when incomplete; add --execute to delegate to Tau.
Ask/scillm-style DAG file./run.sh ask "<question>" --dag-file <graph.json> ... --jsonUse only when the user provides an existing ask/scillm-style DAG file; preserve DAG manifest, node outputs, and fail-closed events.
Authorized local CAPTCHA evaluationGenerate ask.dag.v1 with ../captcha/run.sh ask-dag ..., then use ./run.sh ask "<request>" --dag-file <graph.json> --jsonAsk owns orchestration; $captcha owns authorization and receipts; $surf supplies browser-transport proof; ReCAP dynamic loopback only.
Image generationdocumented image modePreserve prompt, provider response, output path, and review artifact.
OS/project health./run.sh os ... --json, ./run.sh doctor ... --jsonReport degraded dependencies, not green-by-absence.
Status/config./run.sh status ... --json, ./run.sh config doctor ... --jsonUse for artifact inspection and readiness preflight.

Browser Rules (summary)

MANDATORY prompt/bundle preflight (run before EVERY browser submit)

Surf rejects prompts/bundles referencing unreadable local paths or ~<digits> tokens (agent-skills#973), failing late as browser_submit_not_accepted. Run the fail-closed preflight on the prompt AND every --attach-file first:

python3 skills/ask/scripts/browser_prompt_preflight.py --prompt "<prompt>" <each --attach-file>
# exit 0 = safe to submit; exit 2 = offending tokens listed, fix them first

Everything else browser-side — tab lifecycle (auto = fresh temporary window), stale-binding refresh, conversation rollover, rate-limit/capacity cooldowns, transport-vs-provider classification, attachment matrix — is in references/browser.md and references/operations.md. Read them before any browser-handler execution.

Review Contracts

Load only the reference needed for the selected mode:

  • Deep review: docs/ASK_DEEP_REVIEW_CONTRACT.md
  • Parallel review: docs/ASK_PARALLEL_REVIEW_CONTRACT.md
  • Argue/roundtable: docs/ASK_ARGUE_CONTRACT.md
  • CAE gap review: docs/ASK_CAE_GAP_REVIEW_CONTRACT.md
  • SPARTA preflight: docs/ASK_SPARTA_PREFLIGHT_CONTRACT.md
  • Human chat examples: docs/HUMAN_CHAT_EXAMPLES.md
  • Project knowledge: docs/PROJECT_KNOWLEDGE.md
  • Review chains: docs/chains/
  • Reviewer definitions: docs/reviewers/
  • Templates: docs/templates/

When a reference file is selected, read it completely before running that mode.

Command Reference

For common commands, use the examples above. For live browser workflow proof, validate the returned run directory instead of trusting command exit status:

scripts/validate_live_browser_workflow.py <run-dir> \
  --workflow-mode roundtable \
  --handler webgpt --handler webclaude --handler webkimi --handler webgemini \
  --min-concurrency 4 \
  --require-cleanup \
  --json

scripts/validate_live_browser_workflow.py <run-dir> \
  --workflow-mode compete \
  --handler webgpt --handler webclaude --handler webkimi --handler webgemini \
  --min-concurrency 4 \
  --require-cleanup \
  --json

The release gate for mixed browser/API roundtable and competition transport is:

uv run --project skills/ask python \
  skills/ask/evals/live_mixed_dag_e2e.py --iterations 2 --allow-live

It resets each bound browser tab to a fresh chat, executes both Tau DAG modes, and fails unless every browser/API lane and the join are live, non-mocked, and usable. It can take several hours when providers impose cooldowns.

Output Expectations

For normal answers, return the answer plus the artifact directory when artifacts exist. For reviews, lead with findings and include the artifact paths. For blocked or degraded runs, return the failing command, missing proof, and next deterministic gate.

Do not say work is complete, verified, green, or fixed unless the artifacts and local checks prove it.

Related Skills

  • Use $memory before ask when the task is about prior project context.
  • Use $scillm only for direct model/runtime diagnosis after reading its skill.
  • Use $surf or $browser-oracle only when this skill or a selected reference routes browser transport there.
  • Use $best-practices-roundtable when leading or synthesizing a substantial roundtable.
  • Use $best-practices-competition when leading or judging a substantial compete/bakeoff workflow.
  • Use $best-practices-skills when modifying this skill or its scripts.

Ecosystem

Member of the agent-governance ecosystem (see skills/agent-ecosystem/SKILL.md for the shared map, mermaid graph, and the pi.receipt_envelope.v1 boundary envelope). Produces: tau.dag_contract.v1 bundles, recovery packets with triage codes. Consumes: escalation payloads from pi.agent_status.v1 needs_* states. Envelope-wrapped boundary events: dispatch, escalation. Failure names come only from the triage-error catalog or minted *_unclassified_<8hex> codes; ambiguous labels are unrepresentable ecosystem-wide.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

grahama1970/acceptance-contract

Turn a client brief, zip bundle, directory, or single requirements file into a typed acceptance-contract bundle with extracted requirements, acceptance checks, open questions, an immutable-goal draft, and a create-report-backed decision report. Use when users say acceptance contract, brief to requirements, freeze the goal, create immutable goal, amend immutable goal, build a Battle requirements bundle, or extract requirements from this bundle.

grahama1970/agent-ecosystem

Canonical map and shared contracts for the agent-governance ecosystem: the pi.receipt_envelope.v1 boundary envelope, the component graph, and the rules for which component owns which schema. Use when wiring a skill or extension into the shared receipt world, when asking how shame, triage-error, tau, ask, project-watchdog, ops-herdr, ponytail, and Memory fit together, or when validating an envelope.

grahama1970/agentic-evals

Agentic evaluation of skills using multi-trial fixtures, deterministic command assertions, trajectory checks, safety constraints, and evidence-backed readiness scoring. Use when users ask for agentic evals, multi-trial skill evaluation, skill trajectory validation, or readiness scoring for a skill workflow.

grahama1970/agent-inbox

File-based inter-agent messaging with headless dispatch. Check inbox, send bugs/requests to other projects, automatically spawn headless agents to fix bugs, and track progress via task-monitor.

grahama1970/agents-registry

Generate and query the centralized agent identity registry. Scans .pi/agents/*/AGENTS.md, parses frontmatter, outputs agents-registry.json and optionally syncs to /memory for semantic search.

grahama1970/agent-status

Artifact-driven status surfaces for long-running project-agent work. Maintains status.json, events.jsonl, proof manifests, and a stale-aware STATUS.html so humans can tell where the agent is, what passed, what is still unproven, and what decision or action is next — without dashboard theater.

grahama1970/align

Round-based context alignment before execution. Use when the human, project agent, WebGPT, scillm, ask, dogpile, memory, or project-knowledge may each hold different facts about a task; especially before ambiguous design, infographic, product workflow, high-stakes implementation, plan-iterate, project-infographic, or multi-review work.

grahama1970/analytics

Flexible data science analytics for any dataset. Auto-discovers schema, recommends charts, exports to create-figure. Works with JSONL, JSON, CSV from any source.

grahama1970/analyze-chatterbox-emotions

Evaluate generated Chatterbox voice files as voice-quality artifacts: affect match, arousal/valence proxies, pause placement, intelligibility inputs, clipping, loudness, and discontinuity flags. Use when reviewing Chatterbox emotional tags, pauses, Turbo/base affect delivery, Persona Dream utterance renders, or whether generated speech matches an intended product-facing affect.

grahama1970/analyze-elf

Reverse-engineer features from ELF binaries. Extracts CLI commands, state machines, protocols, Zod schemas, and data models. Automatically generates a /create-walkthrough prosecution brief with Mermaid diagrams. Uses /treesitter for AST analysis of bundled JS/TS source.

grahama1970/animation-vocabulary

Reverse-lookup glossary that turns a vague description of a web animation or motion effect into its exact term ("the bouncy thing when a popover opens" → Pop in; "the iOS rubber-band scroll" → Rubber-banding). Use when the user asks "what's it called when…", or describes a motion effect without knowing its name and wants the right word to prompt an AI or designer with. For naming an effect, not designing or building one.

grahama1970/anonymize-data

Anonymize supported CSV, JSON, UTF-8 text, and SQLite files using an explicit policy through the oai-trial project. Use for anonymize data, pseudonymize exports, redact policy literals, or discover and explicitly approve fuzzy name aliases. The skill is a thin CLI/Docker interface, not another engine.

grahama1970/anvil

Heavy-duty "No-Vibes" debugging and hardening orchestrator. Use this for complex, stubborn bugs where `review-code` has failed, or for "Red Teaming" (hardening) a codebase. Runs multiple agents in parallel (Thunderdome) using git worktree isolation.

grahama1970/apple-design

Apple's approach to interface design and fluid, physical motion, translated for the web. Use when building or reviewing gesture-driven UI, spring animations, drag/swipe/sheet interactions, momentum and interruptible transitions, translucent materials and depth, typography (optical sizing, tracking, leading), reduced-motion, or the design foundations (feedback, spatial consistency, restraint) behind Apple-style interfaces.

grahama1970/argue

Multi-persona structured debate orchestrator. Personas research via /dogpile, consult colleagues via /ask, and argue toward nuanced synthesis on complex questions.

grahama1970/arxiv

Search arXiv for papers and extract knowledge into memory. Use `search` to find papers, `learn` to extract knowledge.

grahama1970/assess

Step back and critically reassess project state. Use when asked to "assess", "step back", "fresh eyes", "check alignment", "sanity check", "health check", "prune documentation", or "evaluate what's working". Offers documentation pruning and doc-code alignment analysis. Offer to run after major changes (don't auto-run).

grahama1970/assistant

Shared GPT + classifier inference gateway for persona monitor tasks. Routes validation and classification through a 4-tier cascade: heuristic → classifier → local GPT → scillm.

grahama1970/assistant-lab

Self-improvement workbench for /assistant. All the tools needed to diagnose, train, evaluate, and promote models in a continuous loop. The "warm pond" where /assistant evolves its own inference stack.

grahama1970/batch-quality

Pre-flight validation and quality gates for batch LLM operations. ACTUALLY tests samples through LLM before burning tokens. Uses SPARTA contracts for DuckDB validation queries. Integrates with task-monitor for enforced quality gates.

Verwandte Skills