Analyze proof states in Isabelle or Coq and suggest applicable tactics to make progress. Use when users need help with: (1) Choosing the next tactic in an interactive proof, (2) Understanding what tactics apply to their current goal, (3) Getting unstuck in a proof, (4) Learning which tactics work for specific goal structures (conjunctions, implications, induction, etc.). Provides 3-5 ranked tactic suggestions with explanations for intermediate-level proofs in both Isabelle/Isar and Coq.
npx skills add https://github.com/ArabelaTso/Skills-4-SE --skill tactic-suggestion-assistant
Analyze proof states and suggest applicable tactics to make progress in Isabelle or Coq.
This skill helps you navigate interactive proofs by analyzing the current proof state and suggesting 3-5 ranked tactics that can make progress. It works with both Isabelle/Isar and Coq, providing system-specific suggestions with explanations.
Provide the current proof state including:
The assistant will analyze the state and suggest tactics ranked by likelihood of success.
Determine whether you're working in Isabelle or Coq based on syntax:
⟹, ∧, ∨, ∀, ∃, 'a list, etc.->, /\, \/, forall, exists, list A, etc.Examine the goal's logical form:
P ∧ Q / P /\ Q → Split tacticsP ⟹ Q / P -> Q → Introduction tactics∀x. P / forall x, P → Variable introductiont1 = t2 → Simplification or rewritingLook at available hypotheses:
Type information guides tactic choice:
Provide 3-5 tactics ranked by:
For each suggested tactic, provide:
Proof state:
goal (1 subgoal):
1. ⋀xs ys. length xs = length ys ⟹ length (xs @ ys) = 2 * length xs
Analysis:
length xs = length ysxs and ysSuggestions:
by simp (High likelihood)length (xs @ ys) to length xs + length ys, then uses hypothesisapply (subst length_append) (Medium likelihood)length (xs @ ys) to length xs + length ysusing assms by auto (Medium likelihood)Proof state:
1 subgoal
n : nat
IHn : even n -> even (n + 2)
============================
even n -> even (S (S n))
Analysis:
IHnnSuggestions:
intro H. (High likelihood)H: even n to context, goal becomes even (S (S n))intros. simpl. apply IHn. assumption. (High likelihood)S (S n) simplifies to n + 2intro H. rewrite <- plus_n_Sm. rewrite <- plus_n_O. apply IHn. exact H. (Medium likelihood)S (S n) to n + 2 form to use IHauto. (Low likelihood)Isabelle: ⊢ P ∧ Q
apply (rule conjI) - Split into two goalsby auto - If both parts are trivialby simp - If simplification proves bothCoq: P /\ Q
split. - Split into two goalsauto. - If both parts are trivialintuition. - Propositional reasoningIndicators: Goal about all elements of a list/nat, recursive structure
Isabelle:
proof (induction xs) - List inductionproof (induction n) - Nat inductionproof (induction t) - Custom type inductionCoq:
induction l as [|x l' IH]. - List inductioninduction n as [|n' IH]. - Nat inductioninduction t. - Custom type inductionIndicators: Goal or hypothesis with conditional, pattern match
Isabelle:
proof (cases xs) - Case analysis on variableproof (cases "condition") - Case split on booleanby (auto split: if_split) - Auto with case splitCoq:
destruct l as [|x l']. - Case analysis on variabledestruct (condition). - Case split on booleancase_eq term. - Case analysis with equationIndicators: Goal with +, -, *, <, ≤
Isabelle:
by arith - Arithmetic decision procedureby linarith - Linear arithmeticby simp - SimplificationCoq:
lia. - Linear integer arithmeticnia. - Non-linear arithmeticring. - Ring solverIndicators: Many connectives, nested structure
Isabelle:
by auto - Full automationby fastforce - Aggressive automationsledgehammer - External proversCoq:
auto. - Automationintuition. - Propositional reasoningfirstorder. - First-order reasoningtauto. - Tautology solverDetailed tactic references and patterns:
Load these references when you need:
auto, simp) before manual tacticsIntegration with protocols.io API for managing scientific protocols. This skill should be used when working with protocols.io to search, create, update, or publish protocols; manage protocol steps and materials; handle discussions and comments; organize workspaces; upload and manage files; or integrate protocols.io functionality into workflows. Applicable for protocol discovery, collaborative protocol development, experiment tracking, lab protocol management, and scientific documentation.
Analyzes job descriptions and generates tailored resumes that highlight relevant experience, skills, and achievements to maximize interview chances
Generate Excalidraw diagrams from natural language descriptions. Use when asked to "create a diagram", "make a flowchart", "visualize a process", "draw a system architecture", "create a mind map", or "generate an Excalidraw file". Supports flowcharts, relationship diagrams, mind maps, and system architecture diagrams. Outputs .excalidraw JSON files that can be opened directly in Excalidraw.
Build and distribute Expo development clients locally or via TestFlight
Use when you have a written implementation plan to execute in a separate session with review checkpoints
Data structure for annotated matrices in single-cell analysis. Use when working with .h5ad files or integrating with the scverse ecosystem. This is the data format skill—for analysis workflows use scanpy; for probabilistic models use scvi-tools; for population-scale queries use cellxgene-census.
Benchling R&D platform integration. Access registry (DNA, proteins), inventory, ELN entries, workflows via API, build Benchling Apps, query Data Warehouse, for lab data management automation.
Comprehensive molecular biology toolkit. Use for sequence manipulation, file parsing (FASTA/GenBank/PDB), phylogenetics, and programmatic NCBI/PubMed access (Bio.Entrez). Best for batch processing, custom bioinformatics pipelines, BLAST automation. For quick lookups use gget; for multi-service integration use bioservices.
Take arabelatso/tactic-suggestion-assistant from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.