reverse
Reverse-engineer software into product-level specifications and capability maps. Use when analyzing an OSS project, existing product, repo, docs, demos, or API surface to extract operator value, system capabilities, observable behavior, user flows, constraints, and non-goals — without implementation details. Triggers on "understand what this software does", "write a product spec from code", "extract requirements from this repo", "what does this project do as a product", "reverse-engineer this", "analyze this system", "describe this from the outside in", or any request to study software as a product rather than as an implementation.
What this skill does
# Reverse ## Overview Analyze software as a product, not as code. Extract the durable promises the system makes to operators, users, integrators, or dependent systems, then convert those observations into implementation-agnostic requirements. Produce outputs that separate product value from interface details and internal design. Prefer statements that remain true even if the product is reimplemented in a different stack. ## Workflow 1. Frame the system from the outside in. 2. Identify the actors and the jobs they are trying to accomplish. 3. Extract capabilities in product terms. 4. Describe externally observable behavior and failure modes. 5. Convert observations into testable product requirements. 6. Flag implementation leakage and move it out of the product layer. ## Frame The System Start by treating the source material as evidence, not truth. Reconstruct what the product appears to promise. Answer these questions: - What problem does this software solve? - Who uses or operates it? - What becomes possible because it exists? - What would be painful, manual, risky, or impossible without it? If the source is a repo, inspect readmes, docs, commands, public routes, config surfaces, demos, tests, and user-facing error handling before reading internals deeply. Favor black-box signals over code structure. ## Identify Actors Describe the people or systems that interact with the product. For each actor, capture: - What they want done - What they can trigger - What they can observe - What they depend on the system to preserve Typical actor types: - Operator - End user - Integrator - Admin - Device or node - External service - Automation client Use actor names that reflect responsibility rather than implementation. ## Extract Capabilities Write capabilities as durable system abilities, not modules or services. Good capability phrasing: - "The system allows an operator to..." - "The product can accept..." - "The agent maintains..." - "The platform exposes..." Avoid capability phrasing that mirrors the codebase: - "There is a manager for..." - "The app uses..." - "A worker class handles..." For each capability, capture: - The user or operator value - The triggering action - The core system promise - Any visible limits or prerequisites Group capabilities by outcome, not by source directory. ## Describe Observable Behavior Stay at black-box level. For each feature or capability, describe: - Trigger: what action starts the behavior - Response: what the caller or user immediately sees - Persistent effect: what changes after the interaction - Failure behavior: what happens when prerequisites fail or constraints are hit Focus on evidence that a tester, operator, or client could verify without knowing internals. Good examples: - "When a second run is submitted for the same caller while one is active, the system rejects or queues it with a descriptive conflict outcome." - "When the agent is restarted, durable knowledge remains available across sessions." Weak examples: - "The session manager stores records in memory." - "A background worker retries with Polly." ## Convert To Product Requirements Write requirements that are: - Testable - Implementation-agnostic - Focused on externally visible behavior or user-visible outcomes - Stable across language, framework, or architecture changes Use this pattern: - Actor or caller - Trigger or condition - Required outcome - Visible failure or constraint if relevant Example rewrite: - Too technical: "The service uses Redis to deduplicate webhook deliveries." - Product level: "The system MUST prevent duplicate processing of the same webhook delivery within the configured deduplication window." ## Separate The Layers Keep these layers distinct so the product spec stays durable — mixed-layer specs rot the moment the team swaps a database or framework, forcing a rewrite of requirements that should have been stable. - Product spec: user value, capabilities, observable behavior, constraints, non-goals - Interface spec: routes, events, payload contracts, protocol expectations - Technical spec: libraries, frameworks, runtimes, storage choices, process model If a statement names a library, SDK, class, framework, child process, database, or language runtime, it usually belongs outside the product spec. If a statement names an endpoint, event type, or payload shape, decide whether it is: - a compatibility promise that belongs in an interface spec, or - accidental protocol leakage that should be abstracted upward ## Drift Checks Run this check before finalizing: - Would this statement still be true if the system were rewritten in another language? - Can a black-box tester verify it? - Does it describe a user-visible promise rather than an internal mechanism? - Is it framed in terms of value, capability, behavior, or constraint? - Did I accidentally preserve source-project naming that matters only to that implementation? Move or rewrite any statement that fails these checks. ## Output Location Write all spec documents to `reverse-specs/` in the target repo root. Create the directory if it does not exist. For a single-product repo, produce one file: - `reverse-specs/product-spec.md` For larger systems with multiple capability areas, produce: - `reverse-specs/product-spec.md` — epic-level overview - `reverse-specs/<capability-area>.md` — one file per capability area ## Output Shape Use this structure unless the user asks for another format: 1. Problem statement 2. Actors and their goals 3. Operator value 4. Core capabilities 5. Observable behaviors 6. Edge cases and failure behavior 7. Non-functional constraints 8. Non-goals 9. Suspected implementation leakage For larger systems, produce one epic-level overview first, then split sub-specs by capability area. ## Prompt Pack Use the prompt pack in [prompts.md](references/prompts.md) when the user wants reusable prompts or when you need a clean decomposition pass. Use the heuristics and rewrite examples in [rubric.md](references/rubric.md) when checking whether a draft is really product-level. ## Style Rules - Prefer "what" and "why" over "how". - Use empirical or testable wording. - Avoid subjective terms like "seamless", "intuitive", "robust", or "modern". - Preserve exact source names only when they are part of the external product contract. - If provenance matters, mention that the spec is inferred from observed behavior or source review rather than claimed by the original authors. ## Default Operating Mode When asked to reverse-engineer a product from software artifacts: 1. Summarize the product problem in plain language. 2. Name the actors and their goals. 3. Extract capabilities by outcome. 4. Describe observable behavior and visible failure modes. 5. Draft requirements without implementation details. 6. End with a section called `Implementation Leakage` listing statements that should be moved to interface or technical specs.
Related in Backend & APIs
jfrog
IncludedInteract with the JFrog Platform via the JFrog CLI and REST/GraphQL APIs. Use this skill when the user wants to manage Artifactory repositories, upload or download artifacts, manage builds, configure permissions, manage users and groups, work with access tokens, configure JFrog CLI servers, search artifacts, manage properties, set up replication, manage JFrog Projects, run security audits or scans, look up CVE details, query exposures scan results from JFrog Advanced Security, manage release bundles and lifecycle operations, aggregate or export platform data, or perform any JFrog Platform administration task. Also use when the user mentions jf, jfrog, artifactory, xray, distribution, evidence, apptrust, onemodel, graphql, workers, mission control, curation, advanced security, exposures, or any JFrog product name.
cupynumeric-migration-readiness
IncludedPre-migration readiness assessor for porting NumPy to cuPyNumeric. Use BEFORE substantial porting work begins when the user asks whether code will scale on GPU, whether they should migrate to cuPyNumeric, which NumPy patterns transfer cleanly, what must be refactored before porting, or mentions pre-port assessment, scaling analysis, or refactor planning. Inspect the user's source code, look up NumPy usage, cross-reference the cuPyNumeric API support manifest, and distinguish distributed-scaling-friendly patterns from blockers such as unsupported APIs, scalar synchronization, host round-trips, Python/object-heavy control flow, shape/data-dependent branching, and in-place mutation hazards. Produce a verdict of READY, LIGHT REFACTOR, SIGNIFICANT REFACTOR, or NOT RECOMMENDED, with concrete refactor pointers.
alibabacloud-data-agent-skill
IncludedInvoke Alibaba Cloud Apsara Data Agent for Analytics via CLI to perform natural language-driven data analysis on enterprise databases. Data Agent for Analytics is an intelligent data analysis agent developed by Alibaba Cloud Database team for enterprise users. It automatically completes requirement analysis, data understanding, analysis insights, and report generation based on natural language descriptions. This tool supports: discovering data resources (instances/databases/tables) managed in DMS, initiating query or deep analysis sessions, real-time progress tracking, and retrieving analysis conclusions and generated reports. Use this Skill when users need to query databases, analyze data trends, generate data reports, ask questions in natural language, or mention "Data Agent", "data analysis", "database query", "SQL analysis", "data insights".
token-optimizer
IncludedReduce OpenClaw token usage and API costs through smart model routing, heartbeat optimization, budget tracking, and native 2026.2.15 features (session pruning, bootstrap size limits, cache TTL alignment). Use when token costs are high, API rate limits are being hit, or hosting multiple agents at scale. The 4 executable scripts (context_optimizer, model_router, heartbeat_optimizer, token_tracker) are local-only — no network requests, no subprocess calls, no system modifications. Reference files (PROVIDERS.md, config-patches.json) document optional multi-provider strategies that require external API keys and network access if you choose to use them. See SECURITY.md for full breakdown.
resend-cli
IncludedUse this skill when the task is specifically about operating Resend from an AI agent, terminal session, or CI job via the official resend CLI: installing/authenticating the CLI, sending/listing/updating/cancelling emails, batch sends, domains and DNS, webhooks and local listeners, inbound receiving, contacts, topics, segments, broadcasts, templates, API keys, profiles, or debugging Resend CLI/API failures. Trigger on mentions of Resend CLI, `resend`, `resend doctor`, `resend emails send`, `resend domains`, `resend webhooks listen`, `resend emails receiving`, or agent-friendly terminal automation.
alibabacloud-odps-maxframe-coding
IncludedUse this skill for MaxFrame SDK development and documentation navigation on Alibaba Cloud MaxCompute (ODPS). Helps answer MaxFrame API, concept, official example, and supported pandas API questions; create data processing programs; read/write MaxCompute tables; debug jobs (remote or local); and build custom DPE runtime images. Trigger when users mention MaxFrame, MaxCompute with MaxFrame, ODPS table processing, DPE runtime, MaxFrame docs/examples, DataFrame/Tensor operations, or GPU runtime setup. Works for both English and Chinese queries about Alibaba Cloud data processing with MaxFrame.