Research an engineering question well enough to support a decision: check a claim against primary sources, compare technologies or approaches, test whether an approach will work or scale, or find why something performs badly, using the repository, current documentation and small, reproducible experiments. Ends with a recommendation that names its evidence, tradeoffs and remaining uncertainty, which may be to keep what exists. Use it whenever the user asks whether to adopt, replace, upgrade or remove a dependency, technology or design, which option to choose, whether a switch is safe, or whether an approach will work or scale, even if they never say research, and whenever they ask to research, compare, evaluate or prototype. Not for quick lookups that one source answers, or for carrying out a change already decided.
90%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Low
Low-risk findings worth noting
Reduce uncertainty enough to make an engineering decision, and stop there. Follow the evidence even when it contradicts the user, a vendor, common practice or your own first answer. A sound conclusion can be to proceed, to proceed under conditions, to choose another approach, to run an experiment first, to keep what exists, or to wait because the evidence isn't there. Don't manufacture certainty, and don't force a recommendation the evidence doesn't support.
Size the work to the decision:
Read the repository before asking anything: instructions, architecture decisions, code, dependency versions from the manifests and lockfiles, configuration, tests, benchmarks, incident notes and deployment files. If knackpack's intent tracking keeps a record for this session, its Agreed entries are the confirmed requirements. Then pin down:
Don't invent workload, scale, budget, staffing, availability targets or future requirements. Ask for the one missing fact that would change the answer, and carry on with work that doesn't depend on it. If you propose a measurable target the requirements don't state, such as a latency limit, label it as proposed. For a consequential decision, write a short brief before searching: the question, the constraints, the few uncertainties that could change the decision, the candidates, the evidence each needs, and when you'll stop. Investigate those uncertainties, not everything interesting about a technology.
Each method establishes something different:
Reading a benchmark doesn't reproduce it, a working demo doesn't prove production readiness, and a plausible explanation isn't a root cause.
Match the source to the claim: specifications and standards for what's required; version-specific documentation for supported behavior; source code and tests for what the implementation does; release notes for changes and deprecations; issue trackers and maintainer discussions for known problems; original research for measured findings; firsthand engineering reports for operating experience. Use secondary summaries to find these, not to settle a consequential claim.
Check each source's date, version, configuration, method and incentives, and whether it supports the exact claim you're making. A vendor's documentation shows what it promises, not that the promise holds in this project. Ten articles repeating one announcement are one source. Missing documentation doesn't prove a capability is missing.
Label each claim that drives the decision:
These describe the kind of evidence, not a probability, so don't attach confidence percentages. Say exactly what's uncertain instead: "documented for version 4.2, not tested behind the project's proxy." When sources disagree, compare their dates, versions, configurations and definitions, explain the disagreement, look for decisive evidence, and leave the claim unresolved if there is none.
Experiment when the documentation doesn't settle the behavior, this project's setup could change the outcome, performance decides the question, a failure needs reproducing, or explanations can't be separated by inspection. Before running anything, write down the question and the decision it informs, the baseline, the environment and inputs, the one variable you change, what you'll measure, and what counts as success, failure or inconclusive. Choose the smallest experiment that can tell the possible answers apart; don't build an application to answer a narrow question.
npm install --ignore-scripts), and read any script before running it.For performance, account for warm-up, repeated runs and their spread, concurrency, payload and data shape, cache state, resource limits, dependencies, error rates and measurement overhead. Compare like with like. Report latency as a distribution, such as p50, p95 and p99, and throughput with the conditions that produced it. Keep measured results, extrapolations, theoretical limits and vendor claims apart, and never turn a laptop microbenchmark into a production capacity claim.
A failed experiment may mean a wrong hypothesis, a broken setup or an unsupported configuration; find out which before concluding anything. An inconclusive result is a valid result: say what evidence would settle it.
Before recommending, ask: What's the strongest reason this could be wrong? Which assumption carries the most risk? Which failure case hasn't been examined? Does the evidence represent the target environment? Would the simpler baseline do? Does the benefit depend on operational skills the team lacks? Could adoption cost more than it returns? Investigate the most consequential counterargument. Don't discard inconvenient results or explain them away without evidence. Change the recommendation when the evidence changes, not because someone pushes back.
Stop when the questions that drive the decision have enough evidence, the mandatory constraints are checked, and more research is unlikely to change the answer, not when the report looks comprehensive. If the time or effort budget runs out first, report what's established, what's still open that matters to the decision, and the next smallest investigation. Never present unfinished research as complete.
Scale it to the question; a short answer needs no headings. For a consequential decision, use:
Put each citation next to the claim it supports, using real URLs, file paths and commands, and quote the exact sentence when one sentence decides the matter. Never fabricate a source, a quote or a result. Leave logs and raw data in the experiment folder, not the brief.
Give the brief in the conversation, and save it as RESEARCH.md, or as RESEARCH-<short-name>.md if one for another question is already there, with each experiment in its own folder beside it. If the user asks for the brief in a file of their own, such as a document in the repository, write it only there and give that path, so there's one copy to edit; the experiments stay in the folder below. If the repository's guidance or docs name one document as the source of truth for requirements or decisions, say so, and offer to add the brief there as a section instead of keeping a separate file; a scratch brief kept for handing to other agents is a snapshot, so say that it is. Use the session scratchpad named in your system prompt, if there is one. Otherwise run printenv TMPDIR once (use /tmp if it prints nothing) and use the folder claude-${CLAUDE_SESSION_ID} inside it, writing the folder's full path literally in every later command. Create it with mkdir -p -m 700 <folder>, then check it with [ -d <folder> ] && [ ! -L <folder> ] && [ -O <folder> ] && chmod 700 <folder>; if the check fails, stop and tell the user. Never write into the repository unless the user asks.
Then give the user the brief's absolute path, and tell them the folder belongs to this session and the operating system may clean it up, so they should copy anything they want to keep.
A recommendation is a proposal, not an agreed requirement and not permission to build, buy or release. If knackpack's intent tracking is on, record it as not agreed until the developer accepts it. Suggest the next step instead of starting it:
/knackpack:challenge-requirements;/knackpack:plan-implementation Plan from the research at <absolute path>;knackpack:architecture-reviewer agent;knackpack:security-reviewer agent in plan mode.bezmoradi/knackpack
9fcf73c
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.