SkillForge: Self-Distilling Agents for Project-Specific Issue Resolution1Silin Chen and Han Li contributed equally to this work.2Corresponding author: Xiaodong Gu.
Abstract
Large language model (LLM) based agents have demonstrated remarkable proficiency in automated software issue resolution, yet they often struggle to resolve issues in a specific repository because they lack project-specific knowledge. Existing self-evolving approaches acquire such knowledge from repository history or online repair trajectories, but they either depend on available historical issue-resolution signals or incur substantial per-issue test-time exploration cost. In this paper, we propose SkillForge, a self-distillation framework that proactively acquires project-specific knowledge from the repository itself. Instead of waiting for real issues to expose project-specific knowledge gaps, SkillForge synthesizes project-specific issues by re-implementing test-covered core functionalities of the repository. By resolving these synthetic issues, SkillForge distills reusable project-specific knowledge into entity-grounded skills and associates them with relevant repository entities for future issue resolution. Extensive experiments using both open-source and closed-source models show that SkillForge consistently improves issue resolution performance over strong baselines. These results demonstrate that proactively acquiring project-specific knowledge before solving real issues substantially improves downstream software issue resolution11 1 Our code and data are available at https://github.com/cslsolow/SkillForge.
Index Terms:
Software engineering agents, software issue resolution, large language modelsI Introduction
Large language model (LLM) based agents have demonstrated remarkable capabilities in software issue resolution [2, 5, 24, 30, 10, 25, 22, 23, 8, 13, 14, 21, 31, 37, 27]. By autonomously navigating repositories, invoking tools, and iteratively proposing patches, modern software engineering (SWE) agents—such as SWE-agent [49] and OpenHands [44]—can resolve complex, real-world bugs that previously required expert human intervention. Driven by increasingly powerful foundation models and better scaffolding designs, these agents have achieved impressive results on standard benchmarks such as SWE-bench [24, 33, 45, 1, 51, 52, 12], demonstrating strong generalization across diverse codebases and issue types.
Despite these advances, a critical bottleneck emerges when agents are deployed on a specific project: they typically must solve issues from scratch, without project-specific knowledge. Real-world projects often exhibit structural regularities: recurring failures may involve the same brittle modules, correct patches may need to preserve repository-specific API contracts, and related APIs are often coupled through implicit execution paths. Agents that lack such project-specific knowledge must repeatedly rediscover these conventions during issue resolution. This limitation creates a cold-start problem: before project-specific knowledge has been acquired, even a highly capable agent is reduced to a generic repository explorer and can repeatedly fall into the same project-specific pitfalls.
To address this knowledge gap, recent works have explored self-evolving SWE agents that acquire project-specific knowledge from prior issue-resolution signals [5, 28, 43, 32, 16, 26, 47]. History-driven methods such as EvoCoder [28] and SWE-Exp [5] distill reusable knowledge from historical issues, commits, or agent trajectories. Online methods instead refine the agent during test-time exploration by generating additional trajectories on the current issue. While effective, both paradigms acquire project-specific knowledge reactively. History-driven methods are bounded by the richness and coverage of past issues: repository behaviors, API combinations, and long-tail components that have not been exercised by historical trajectories provide little learning signal. Online methods reduce this dependence on history, but they pay substantial trajectory, token, and time costs for each target issue [9], and the acquired guidance becomes available only after the issue has already arrived.
In this paper, we propose SkillForge, a proactive self-distillation framework for addressing the cold-start problem in project-specific issue resolution. Rather than waiting for real issue-resolution history to accumulate, SkillForge synthesizes project-specific issues from the current repository. Given a repository snapshot, SkillForge starts from test-covered core functionalities, follows execution traces to identify the code regions that jointly implement the same functionality, and rewrites these coordinated segments under constrained context. The resulting synthetic issues are executable and behaviorally grounded by the repository tests. A SWE agent then resolves these synthetic issues, producing trajectories from which SkillForge distills project-specific knowledge.
SkillForge organizes the distilled knowledge as a dual-level skill repository. The global diagnostic skill set () captures reusable project-level knowledge for diagnosis and navigation, including entity roles, reasoning playbooks, and related APIs. The local intervention skill set () records entity-specific modification guidance and pitfall-avoidance lessons distilled from successful and failed resolution trajectories. During downstream issue resolution, SkillForge first retrieves relevant global diagnostic skills as initial project-specific context, and then injects local intervention skills just in time whenever the agent accesses corresponding repository entities. This design treats skills as one concrete representation of project-specific knowledge, while keeping retrieval aligned with the agent’s current code interaction context.
We implement SkillForge with Mini-SWE-Agent and evaluate it on SWE-bench Verified [34] and SWE-bench Pro [7] using both DeepSeek-V3.2 and GPT-5-mini. On SWE-bench Verified, SkillForge achieves 72.2% and 60.6% Pass@1, improving over Mini-SWE-Agent by +5.8 and +5.6 percentage points, respectively. On SWE-bench Pro, SkillForge further improves over Mini-SWE-Agent by +5.8 and +4.1 percentage points. Across both benchmarks, SkillForge outperforms all evaluated history-driven and online project-specific knowledge acquisition baselines available for each benchmark, showing that proactive project-specific knowledge acquisition can improve issue resolution without relying on rich historical issue trajectories or heavy per-issue online exploration.
The main contributions of this paper are summarized as follows:
- •
We propose a novel self-distillation paradigm for addressing the cold-start problem in project-specific issue resolution. SkillForge proactively acquires project-specific knowledge from a repository’s own tests and code, without relying on rich historical issue-resolution trajectories or costly per-issue online exploration.
- •
We design a dual-level skill repository that represents project-specific knowledge as global diagnostic skills and local intervention skills, enabling entity-grounded retrieval and just-in-time guidance during downstream issue resolution.
- •
Empirically, SkillForge improves over Mini-SWE-Agent by +5.8%/+5.6% on SWE-bench Verified and +5.8%/+4.1% on SWE-bench Pro for DeepSeek-V3.2 and GPT-5-mini, respectively, outperforming all evaluated history-driven and online project-specific knowledge acquisition baselines available for each benchmark.
II Methodology
SkillForge is a self-distillation framework for addressing the cold-start problem in project-specific issue resolution. The key idea is to proactively derive project-specific knowledge directly from the repository itself, rather than waiting for real-world issue-resolution trajectories to accumulate. To achieve this, SkillForge synthesize project-specific issues, resolves them with a SWE agent, and distills the resulting project-specific knowledge into reusable skills that can be retrieved during subsequent real-world issue resolution.
Figure 1 presents an overview of SkillForge. Given a repository snapshot and its test suite, the framework consists of four stages: (1) generating project-specific synthetic issues by rewriting core functionalities; (2) resolving these issues with a SWE agent through iterative patch generation, tool execution, and test feedback; (3) distilling project-specific knowledge from the resulting resolution trajectories and organizing it as reusable skills in a dual-level skill repository, comprising a global diagnostic skill set that captures reusable project-level knowledge and a local intervention skill set that records entity-specific guidance; and (4) retrieving the relevant skills during downstream real-world issue resolution whenever the corresponding repository entities are encountered. Each stage is described in detail below.
II-A Project-Specific Issue Synthesis
To acquire project-specific knowledge without relying on historical issue reports, SkillForge synthesizes project-specific issues by rewriting functionality-critical code segments and treating the resulting test failures as resolution targets. Rather than explicitly injecting handcrafted bugs, the framework asks an LLM to reimplement repository functionality under constrained context, encouraging the rewritten code to naturally exhibit implementation mistakes similar to those introduced during real software development. More importantly, because the model must reconstruct functionality without access to the original implementation, the rewritten code reflects its general coding knowledge rather than the repository’s project-specific knowledge, thereby exposing the project-specific behaviors that the agent needs to learn. Throughout this process, supervision is derived solely from the repository’s codebase and test suite, without relying on historical issue reports or human-written bug descriptions.
Test-driven scope and trace. Given a code repository , SkillForge identifies test cases that exercise core repository functionalities, since these behaviors provide the most informative supervision for project-specific knowledge acquisition [3, 6]. For each passed test case, SkillForge executes it under coverage instrumentation to obtain an execution trace: the set of source files and line ranges that are exercised. This trace defines the candidate code regions for rewriting since modifications within executed regions are more likely to affect observable test outcomes. We then extract contiguous code segments from the traced regions—either complete functions or cohesive execution fragments, and attach surrounding context (e.g., preceding and following lines) for each segment.
Select critical segments. The number of traced segments can be large. We use an LLM to select a small set of critical segments that are most likely to represent the functionality of this test case. The LLM is given the test’s purpose and scenario (derived from the test code or description) along with summaries of the candidate segments (file, line range, and code content). It returns a ranked subset of top- segments with brief justifications. This step keeps the subsequent rewriting phase focused on high-impact regions. Unlike function-level rewriting approaches, SkillForge may select multiple critical segments exercised by the same test case, enabling synthetic issues that capture cross-component interactions within the repository.
Code rewriting. For each selected segment, we ask an LLM to rewrite the corresponding code by re-completing the local functionality. Crucially, the LLM is not provided with the original implementation; instead, it receives only limited contextual information: the lines before and after the segment, the segment’s location and indentation, and a high-level description of the test’s goal. The model is prompted to produce a plausible alternative implementation that preserves the intended API while potentially simplifying logic. Rather than explicitly injecting predefined faults, this “strict-mask” design exposes the gap between an agent’s general coding knowledge and the repository’s project-specific knowledge by inducing realistic implementation mistakes under constrained context.
Instance assembly and problem statement. Once the rewritten segments induce test failures, we construct a buggy repository snapshot and derive both a buggy patch and a reference patch. Following prior synthetic SWE task construction works [50, 39, 20], we execute the failing tests and use an LLM to convert the resulting failure evidence into a user-facing problem statement without exposing implementation details or repair hints. The resulting synthetic instance consists of a base commit, a buggy patch, a reference patch, a problem statement, and the associated test cases, matching the standard SWE-bench issue-resolution format. These synthetic instances serve as self-supervised tasks for acquiring project-specific knowledge before real issue resolution.
Issue Resolution Attempt For each synthesized instance, SkillForge follows the SWE-bench-style issue resolution protocol: the agent is placed in an isolated repository environment, receives the problem statement and buggy codebase, and attempts to produce a patch that resolves the failing tests. We record the resulting action trajectory (e.g., file edits, shell commands, and test runs) for subsequent skill distillation.
II-B Skill Distillation
The objective of this stage is to distill project-specific knowledge from synthetic issue-resolution trajectories and organize it as reusable skills. Formally, given a trajectory where and denote the agent’s action and the environment’s observation at step , our extraction pipeline transforms into two complementary skill sets within the dual-level skill repository: and .
Trajectory Normalization and Entity Alignment. Before skill distillation, we normalize the trajectories and align them with the repository’s entities. Given a target repository , we perform a structured analysis of the trajectory to identify code-access events. By parsing shell commands (e.g., grep, sed, cat) in the trajectory, we extract a set of accessed files, represented by coordinates and line ranges. We then align these coordinates with the repository’s structural index—an AST-derived mapping from source files to their class and function hierarchies—to resolve them into cohesive code scopes (e.g., frequently accessed files or core modules). Beyond trajectory-derived accesses, files surfaced in the agent’s submission diff, the golden patch, and the test patch are additionally incorporated to ensure coverage of ground-truth edit sites. The resulting collection is denoted as a set of candidate entities . This step ensures that the extracted skills are strictly grounded in the actual codebase structure, preventing the LLM from hallucinating non-existent interfaces during subsequent extraction.
Distilling Global Diagnostic Skills (). represents project-specific diagnostic knowledge as global diagnostic skills distilled from synthetic issue-resolution trajectories. Unlike repository summaries that describe what a module contains, captures how an agent should reason about a repository entity during issue resolution, including where to begin debugging, which APIs are jointly involved, and what repository-specific behaviors should be considered. These skills are organized as structured skill records and associated with the corresponding repository entities for future retrieval. For each candidate entity , an LLM analyzes the corresponding resolution trajectories together with the repository context to distill three complementary aspects of project-specific knowledge: (i) the entity’s functional role in issue resolution, (ii) reusable reasoning strategies repeatedly validated during issue resolution , and (iii) project-specific API interactions that emerge during problem solving. These are represented as the purpose, playbook, and related_apis fields, respectively. For example,
The design of each key is specifically tailored to enhance the agent’s autonomous capabilities: (1) The purpose field identifies the role an entity plays during issue resolution, helping the agent determine whether it is a relevant debugging entry point rather than merely summarizing its implementation. (2) The playbook field captures project-specific reasoning patterns distilled from trajectories. Rather than generic debugging advice, it records repository-specific knowledge that has been validated through interaction with the repository. (3) The related_apis field records APIs that are repeatedly co-involved during issue resolution. Unlike static dependency graphs, these relationships reflect repository-specific interaction patterns observed during problem solving, allowing the agent to navigate cross-module behaviors that are not evident from structural dependencies alone.
Unlike repository summarization, which captures static code semantics, our objective is to distill actionable project-specific knowledge that emerges only when an agent attempts to solve project-specific issues.
Distilling Local Intervention Skills (). In contrast, stores project-specific intervention knowledge that guides how a repository entity should be modified during issue resolution. Unlike , which supports repository navigation and diagnosis, captures concrete repair knowledge distilled from issue-resolution trajectories. This knowledge is represented as local intervention skills associated with individual repository entities. We distill this intervention knowledge from both successful and failed resolution trajectories. Successful trajectories reveal repair strategies that consistently lead to correct implementations, while failed trajectories expose repository-specific pitfalls by contrasting incorrect patches with the corresponding reference patches. The resulting knowledge is transformed into actionable intervention skills and indexed by repository entities. Combining successful and failed trajectories provides complementary supervision: the former reinforces effective repair patterns, whereas the latter helps the agent avoid recurring mistakes when modifying the same repository entities in future issue-resolution tasks. For example,
Conceptually, captures diagnostic skills for understanding repository entities and planning repository navigation, whereas captures intervention skills for modifying those entities based on project-specific knowledge distilled from synthetic issue resolution.
II-C Skill Adaptation
To utilize the acquired project-specific knowledge during downstream issue resolution, SkillForge retrieves the distilled skills associated with relevant repository entities and injects them into the agent’s reasoning process. This retrieval follows a two-stage, context-aware mechanism consisting of macro-level initialization and micro-level just-in-time (JIT) intervention.
Macro-level Initialization with Global Diagnostic Skills. Before the agent begins resolving a new issue, we first establish a global semantic context using the diagnostic knowledge represented by the global skill set (). Given the new issue description as a query, we employ a BM25 retriever to identify the top- most relevant skill records from . The selected records—comprising the API paths, their purposes, and the associated playbooks—are prepended to the agent’s initial prompt as project-specific priors. This equips the agent with an immediate, high-level understanding of the repository’s architecture and relevant previously distilled heuristics.
Micro-level JIT Injection of Local Intervention Skills. While the macro-level injection provides initial guidance, flooding the context with all local intervention skills () at once would introduce significant noise. Instead, SkillForge dynamically injects based on the agent’s real-time actions. At each interaction step, SkillForge monitors the agent’s executed shell commands to extract the specific file paths it is currently accessing. If an accessed file matches an entry in , the corresponding intervention cues and reflections are appended to the agent’s context as an auxiliary observation for the subsequent reasoning step. This dynamic mechanism ensures that the agent receives targeted, pitfall-avoidance guidance exactly when it navigates to a relevant codebase region, ensuring the injected skills are strictly aligned with the agent’s current code interaction context.
Unlike existing methods that retrieve semantically similar records from a centralized knowledge store, SkillForge grounds project-specific knowledge directly to repository entities. Consequently, retrieval is triggered by the agent’s interaction with the corresponding code entities rather than solely by semantic similarity. This entity-grounded design ensures that diagnostic and intervention knowledge is delivered precisely when the agent reaches the relevant repository context, reducing retrieval ambiguity while maintaining tight alignment between the injected knowledge and the code under inspection.
III Experimental Setup
III-A Research Questions
We aim to evaluate SkillForge by answering four research questions (RQs):
RQ1 (Effectiveness of SkillForge): What is the impact of SkillForge on issue resolution performance compared to other self-evolving methods?
RQ2 (Ablation Study): How do the different components of SkillForge individually affect its effectiveness?
RQ3 (Impact of Hyperparameters): How do the key hyperparameters influence the overall performance of SkillForge?
RQ4 (Efficacy across Diverse Repositories): Does SkillForge consistently demonstrate effectiveness across various repositories?
III-B Datasets
We evaluate SkillForge on SWE-bench Verified [34], a human-validated benchmark released by OpenAI, which has been widely adopted as the standard for evaluating software engineering agents. The benchmark consists of 500 tasks sourced from popular Python repositories on GitHub.
We additionally evaluate on the full SWE-bench Pro [7], consisting of 731 instances across Python, JavaScript, TypeScript, and Go repositories. This benchmark contains more challenging long-horizon software engineering tasks that better reflect realistic multi-file issue resolution.
III-C Baseline Methods
We compare SkillForge with representative approaches that acquire project-specific knowledge from different supervision sources.
History-driven project-specific knowledge acquisition. These methods acquire project-specific knowledge from historical issue-resolution issues, and reuse the distilled knowledge to assist future issue resolution.
- •
SWE-Exp [5]: A framework that distills diagnostic patterns and repair strategies from prior agent trajectories, utilizing a dual-agent architecture to provide actionable guidance for new tasks.
- •
EvoCoder [28]: A multi-agent continual learning framework that uses trajectory-based reflection to progressively refine problem-solving strategies based on previously resolved cases.
- •
MemGovern [43]: MemGovern converts human debugging traces from GitHub into structured memory, enabling code agents to leverage prior problem-solving knowledge for improved issue resolution.
Online project-specific knowledge acquisition. These approaches adapt agents during the resolution of the current issue by distilling project-specific knowledge from substantial online reasoning trajectories through test-time exploration:
- •
SAGE [16]: A plan-learning method that distills reusable problem-solving guidance from ongoing agent attempts to iteratively improve performance on the current instance.
- •
SWE-Debate [26]: A multi-agent competitive framework that evolves stronger fix strategies through structured debate over competing reasoning trajectories.
- •
Live-SWE-agent [47]: A live self-evolving software agent that autonomously updates its own scaffold during runtime while solving software engineering tasks.
Variants of SkillForge. To isolate the source of project-specific knowledge in SkillForge, we compare against two controlled variants while keeping the same downstream reused mechanism:
- •
SkillForge w/ SWE-Smith. A controlled synthesis variant that replaces our functionality-level repository probing with SWE-Smith single-function rewriting.
- •
SkillForge w/ LLM Summary. A static repository-understanding variant that replaces trajectory-distilled project-specific knowledge with LLM-generated repository summaries.
III-D Metrics
We evaluate SkillForge from both effectiveness and cost-efficiency perspectives.
Pass@1 denotes the percentage of issues successfully resolved on the first attempt, following the evaluation protocol of [2, 49]. It directly measures the framework’s ability to generate correct patches without relying on repeated repair iterations.
Avg Cost represents the average end-to-end monetary cost per evaluated issue, measured in U.S. dollars [9]. The reported cost amortizes offline pre-computation over the evaluated instances and includes all stages of the framework pipeline, including synthetic issue generation, trajectory collection, skill distillation, and online issue resolution. MemGovern [43] constructs a pre-constructed 150K-card experience base from public GitHub issues using GPT-5.1; since the associated preprocessing cost is unavailable, it is excluded from Avg Cost.
III-E Implementation Details
We implement SkillForge with Mini-SWE-Agent [40], a bash-based agent scaffold [15, 16, 46], and evaluate DeepSeek-V3.2 [29] and GPT-5-mini [38] with default inference settings.
For SWE-bench Verified, synthesis is temporally isolated. For each target instance, we first roll back the repository before both the golden patch and golden test patch; on this rolled-back snapshot, an LLM localizes semantically relevant tests because extracting the full test suite from every snapshot is time- and compute-intensive. We synthesize issues only from this filtered subset, yielding 577 synthesized issues. SkillForge itself does not require historical issue-resolution data; in the temporal evaluation protocol, the agent may retrieve only skills distilled from synthesized issues in the same repository whose source commits predate the target instance’s gold commit, ensuring that no current-instance or future information is used.
For the two variants, we extract relevant functions from the baseline agent’s trajectory, then apply either SWE-Smith-style single-function rewriting or an LLM summary of how those functions are jointly used; both keep SkillForge’s skill format and injection interface. Across all stages, temperature is 0, the action budget is 250 steps, BM25 retrieves top- skills, and Table I reports Pass@1 averaged over three runs.
| Method | Model | Pass@1 | Avg Cost |
|---|---|---|---|
| Mini-SWE-Agent | DeepSeek-V3.2 | 66.4% | $0.049 |
| GPT-5-mini | 55.0% | $0.031 | |
| History-driven project-specific knowledge acquisition | |||
| SWE-Exp | DeepSeek-V3.2 | 69.0%†2.6% | $0.090 |
| GPT-5-mini | 56.6%†1.6% | $0.065 | |
| EvoCoder | DeepSeek-V3.2 | 67.0% 0.6% | $0.064 |
| GPT-5-mini | 58.4% 3.4% | $0.052 | |
| MemGovern | DeepSeek-V3.2 | 69.2%†2.8% | – |
| GPT-5-mini | 58.0%†3.0% | – | |
| Online project-specific knowledge acquisition | |||
| SAGE | DeepSeek-V3.2 | 67.2% 0.8% | $0.081 |
| GPT-5-mini | 56.0%†1.0% | $0.052 | |
| SWE-Debate | DeepSeek-V3.2 | 68.2% 1.8% | $0.382 |
| GPT-5-mini | 56.4% 1.4% | $0.167 | |
| Live-SWE-agent | DeepSeek-V3.2 | 67.0% 0.6% | $0.050 |
| GPT-5-mini | 55.6% 0.6% | $0.042 | |
| Variants of SkillForge | |||
| SkillForge w/ SWE-Smith | DeepSeek-V3.2 | 68.0% 1.6% | $0.088 |
| GPT-5-mini | 56.4%†1.4% | $0.071 | |
| SkillForge w/ LLM Summary | DeepSeek-V3.2 | 68.7%†2.3% | $0.069 |
| GPT-5-mini | 54.4% 0.6% | $0.065 | |
| SkillForge | DeepSeek-V3.2 | 72.2%†5.8% | $0.074 |
| GPT-5-mini | 60.6%†5.6% | $0.066 | |
| †: . | |||
IV Results
IV-A RQ1: Effectiveness of SkillForge
Table I summarizes the main results on SWE-bench Verified. SkillForge achieves 72.2% and 60.6% Pass@1 with DeepSeek-V3.2 and GPT-5-mini, outperforming all baselines by absolute margins of +5.8% and +5.6% over Mini-SWE-Agent. Among history-driven project-specific knowledge acquisition methods, MemGovern is the strongest competitor (69.2%/58.0%), yet SkillForge still surpasses it by +3.0%/+2.6%. One possible reason is that history-driven project-specific knowledge acquisition methods are bounded by the coverage and quality of repository history: knowledge distilled from prior repository histories only reflects previously observed issue types, often remains coarse or instance-tied, and external debugging discussions improve coverage only by weakening repository specificity. Among online project-specific knowledge acquisition methods, SkillForge also surpasses SAGE (67.2%/56.0%) and SWE-Debate (68.2%/56.4%), with gains of +5.0%/+4.6% and +4.0%/+4.2%, respectively, while avoiding the high per-issue exploration cost of methods such as SWE-Debate. For DeepSeek-V3.2, it also outperforms Live-SWE-agent (67.0%, $0.050) by +5.2%. Compared with Mini-SWE-Agent and history-driven project-specific knowledge acquisition methods, the main cost difference of SkillForge lies in the offline pre-computation stage, where it synthesizes project-specific issues and distills skills from their resolution trajectories. Therefore, the reported Avg Cost includes amortized offline pre-computation; once this repository-level skill repository is built, the online cost of resolving each real issue remains close to that of the underlying agent.
Table II further reports results on SWE-bench Pro. SkillForge achieves 34.1% Pass@1 with DeepSeek-V3.2 and 51.7% with GPT-5-mini, improving over Mini-SWE-Agent by +5.8% and +4.1%, respectively, with both gains statistically significant (-value 0.05). It also outperforms the strongest available Pro baselines, exceeding Live-SWE-agent by +1.7%/+2.6% and SWE-Exp by +4.7%/+3.2% under the two backbones.
Among the controlled variants, SkillForge w/ SWE-Smith reaches 68.0%/$0.088 and 56.4%/$0.071 under DeepSeek-V3.2 and GPT-5-mini, respectively, while SkillForge w/ LLM Summary reaches 68.7%/$0.069 and 54.4%/$0.065. These results show that skill injection alone is insufficient: both simply summarizing trajectory-extracted functions and rewriting one function at a time underperform the full method. SWE-Smith rewrites one function at a time, whereas SkillForge starts from a repository functionality exposed by a core test, follows its execution trace, and rewrites multiple coordinated functions or code segments that are naturally composed to realize that functionality. This functionality-level synthesis captures inter-function coordination, API coupling, and project-specific repair pitfalls, while more naturally surfacing the current LLM’s repository-misaligned coding tendencies.
| DeepSeek-V3.2 | GPT-5-mini | |||
| Method | Pass@1 | Avg Cost | Pass@1 | Avg Cost |
| Mini-SWE-Agent | 28.3% | $0.047 | 47.6% | $0.063 |
| SWE-Exp | 29.4% 1.1% | $0.083 | 48.7% 0.9% | $0.089 |
| Live-SWE-agent | 32.4% 4.1% | $0.051 | 49.1%†1.5% | $0.072 |
| SkillForge | 34.1%†5.8% | $0.069 | 51.7%†4.1% | $0.087 |
| †: . | ||||
IV-B RQ2: Ablation Study
We investigate two questions: (1) whether both forms of project-specific knowledge are necessary for issue resolution, and (2) whether project-specific knowledge distilled for one LLM backbone transfers to another.
Component ablation.
Table III reports the effect of removing each type of project-specific knowledge. Removing leads to drops of 3.8% and 3.0%, demonstrating the importance of repository-level diagnostic knowledge for issue resolution. Removing causes slightly larger drops of 4.4% and 3.4%, showing that project-specific intervention knowledge distilled from synthetic issue-resolution trajectories is equally critical. These results indicate that effective use of project-specific knowledge requires both repository-level diagnostic knowledge and entity-level intervention knowledge, which provide complementary guidance throughout the issue-resolution process.
| Approach | DeepSeek-V3.2 | GPT-5-mini |
|---|---|---|
| w/o Global Diagnostic Skills | 68.4% (3.8%) | 57.6% (3.0%) |
| w/o Local Intervention Skills | 67.8% (4.4%) | 57.2% (3.4%) |
| SkillForge | 72.2% | 60.6% |
| Resolver LLM | Knowledge-source LLM | Pass@1 |
|---|---|---|
| GPT-5-mini | GPT-5-mini | 60.6% |
| DeepSeek-V3.2 | 55.0% | |
| DeepSeek-V3.2 | GPT-5-mini | 65.2% |
| DeepSeek-V3.2 | 72.2% |
Transferability of project-specific knowledge across LLM backbones.
We further investigate whether the project-specific knowledge distilled by SkillForge is transferable across LLM backbones. Specifically, we use one LLM to synthesize project-specific issues, resolve them, and distill the resulting project-specific knowledge, which is represented as reusable skills. These skills are then injected during issue resolution performed by either the same or a different LLM. Table IV exhibits a clear diagonal pattern: each resolver LLM achieves the best performance when paired with project-specific knowledge distilled from itself. DeepSeek-V3.2 reaches 72.2% when using its own distilled skills but drops to 65.2% when using GPT-5-mini’s. Similarly, GPT-5-mini achieves 60.6% with its own distilled skills but decreases to 55.0% when using those distilled by DeepSeek-V3.2. These results indicate that the distilled project-specific knowledge is not universally transferable across LLMs. Instead, it captures how a particular LLM reasons about and edits a specific repository. Since different LLMs exhibit different coding priors, the repository-specific mismatches exposed during synthetic issue resolution are likewise model dependent, leading to different project-specific knowledge being distilled. Consequently, knowledge distilled from one LLM provides limited guidance for another and may even introduce irrelevant context.
IV-C RQ3: Impact of Hyperparameters
We investigate the sensitivity of SkillForge to two key hyperparameters governing project-specific knowledge acquisition and utilization: (1) the number of retrieved global diagnostic skill records per issue (), and (2) the number of code segments rewritten to synthesize project-specific issues ().
To evaluate , we conducted a hyperparameter study on the Django and Sphinx repositories using GPT-5-mini, varying from 0 to 7, as well as a “full” condition where all relevant skill records were retrieved. Figure 4(a) reports Pass@1 as a function of across the two repositories. Without retrieving project-specific knowledge (), the agent achieves 62.3%. Performance improves steadily as increases, reaching its peak at (69.7%). Beyond this point, the full retrieval condition drops slightly to 67.5%, suggesting that lower-ranked skill records introduce redundant project-specific knowledge that competes for the limited context window. Both repositories show the same overall pattern, indicating that a moderate number of retrieved skills is preferable across different repository structures.
To evaluate , we varied the number of code segments rewritten during issue synthesis on both repositories. With no rewriting (), the system reduces to the baseline (62.3%). Rewriting a single segment () increases performance to 63.2%. Performance peaks at , where each synthesized issue exposes sufficiently rich project-specific knowledge by involving multiple interacting repository entities. Increasing to 7 results in a slight decrease, as larger perturbations tend to generate overly complex issues that reduce the quality of the distilled project-specific knowledge. The same trend is consistently observed across repositories, suggesting that functionality-level synthesis benefits from a moderate rewriting scope rather than either single-segment perturbations or overly broad rewrites.
Notably, across all settings of and , SkillForge consistently outperforms the baseline without project-specific knowledge, demonstrating that proactively acquired project-specific knowledge remains effective across a broad range of synthesis and retrieval configurations.
IV-D RQ4: Efficacy across Diverse Repositories
To assess whether SkillForge generalizes across different repositories, we analyze performance at the repository level. Due to space constraints, we report results for the seven repositories with the largest numbers of evaluation instances. Figure 5 compares three methods—Baseline, SWE-Exp, and SkillForge—across these seven repositories under both DeepSeek-V3.2 and GPT-5-mini.
SkillForge delivers improvements over the baseline on all seven repositories under both backbones without any regression. With DeepSeek-V3.2, the per-repo gains reach up to +13.6% (Sphinx); under GPT-5-mini, gains reach up to +15.6% (Scikit-learn). In contrast, SWE-Exp shows inconsistent behavior and suffers regressions on three repositories. Under DeepSeek-V3.2, Matplotlib drops by 11.8% and Astropy by 4.5%; under GPT-5-mini, Astropy regresses by 9.1% and Pydata by 2.0%. Because SkillForge derives project-specific knowledge directly from each target repository through self-distillation, the resulting knowledge naturally reflects repository-specific APIs, implementation patterns, and architectural organization. Representing this knowledge as entity-grounded skills enables precise retrieval during downstream issue resolution, leading to consistently robust improvements across diverse repositories.
IV-E Case Study
To provide a more concrete view of how SkillForge changes the behavior of a repair agent, we present a case study on Django issue #11206. The bug concerns formatting extremely small Decimal values when a fixed number of decimal places is explicitly requested. In the buggy version, calling nformat(Decimal("1e-200"), ".", decimal_pos=2) returns "1.00e-200", i.e., scientific notation, whereas users expect a fixed-point representation such as "0.00". Correctly fixing this issue requires reasoning about when a value should be treated as numerically zero at a given precision, without breaking existing formatting behavior for other magnitudes or types.
Figure 6 contrasts two repair trajectories on this issue using the same GPT-5-mini backbone: one without project-specific knowledge and one with SkillForge retrieving project-specific knowledge in the form of entity-grounded skills. The baseline agent locates the relevant formatting module and identifies the condition responsible for scientific notation. It then adopts a simple exponent-based heuristic to determine whether a value should be treated as zero. Although this modification fixes the observed failing example, it fails to capture the repository’s intended numeric semantics and ultimately fails all FAIL_TO_PASS tests (0/2).
In contrast, the skill-enhanced agent follows a longer but more structured reasoning process. After accessing the same module, the retrieved project-specific knowledge highlights two repository-specific insights: (i) preserve the existing Decimal formatting pipeline instead of introducing alternative representations, and (ii) reason about numerical equivalence using the repository’s precision semantics rather than a simple exponent heuristic. Guided by these insights, the agent derives a threshold-based solution that integrates naturally with the existing formatting logic. It further validates the implementation using representative boundary, precision-sensitive, and extreme-value test cases before committing the fix, ultimately passing all FAIL_TO_PASS tests (2/2).
This example illustrates how proactively acquired project-specific knowledge reshapes the agent’s reasoning process during issue resolution. With skill injection, the agent (i) adopts a more faithful mathematical model of the bug (value-based thresholding versus exponent-based heuristics), (ii) preserves important design constraints of the existing implementation (e.g., maintaining Decimal-level operations and respecting the original formatting path), and (iii) naturally gravitates toward a test-driven workflow that exercises subtle edge cases. In contrast, the baseline trajectory quickly converges to a plausible but brittle local heuristic that fails under systematic evaluation, underscoring the value of skill-enhanced reasoning for non-trivial software bugs.
V Discussion
V-A Quality of Distilled Skills and LLM-Generated Problem Statements
We manually inspected the quality of the distilled skills and synthesized problem statements. For the distilled skills, we verified that they are grounded in the corresponding repository entities, resolution trajectories, and golden patches, providing correct and actionable project-specific guidance without hallucinated APIs or misleading advice. For the synthesized problem statements, we verified that they faithfully describe the observable failures induced by functionality-level rewriting without leaking implementation details.
We also compared the issue-type distribution of synthesized issues with that of real SWE-bench issues from the same repositories. The two distributions do not overlap, suggesting that the synthesized issues do not merely reproduce the same categories of real issues used for evaluation. Instead, they tend to expose finer-grained model biases in how the current LLM uses project-specific functions, APIs, and cross-function interactions. Thus, the benefit of SkillForge is less about teaching the agent to solve similar issue types and more about surfacing project-specific function-use pitfalls that can transfer across different real issue categories.
V-B Threats to Validity
External validity.
SkillForge relies on repository tests to synthesize issues and distill project-specific knowledge. Consequently, code regions that are rarely exercised by runnable tests contribute fewer learning signals, which may reduce the effectiveness of the learned knowledge in repositories with limited test coverage.
Internal validity.
Following standard SWE-bench-style synthetic instance synthesis pipelines [20, 50, 39], problem statements for synthesized issues are generated using an LLM. We manually verified that the synthesized failures correspond to executable bugs induced by functionality-level rewriting and that the generated descriptions correctly reflect observable behaviors without leaking implementation details. However, as in prior work, LLM-generated problem statements may still differ from developer-written issue reports.
VI Related Work
VI-A Project-Specific Knowledge for SWE Agents
Recent SWE agents [35, 41, 36, 4, 48, 55, 54, 56, 17, 11, 19] have increasingly moved beyond one-shot issue solving toward self-evolving behavior, where the agent improves by distilling reusable guidance from prior histories, trajectories, and execution feedback. These methods can be broadly grouped by the source of their evolution signal. One line of work evolves from repository history. EvoCoder [28] and SWE-Exp [5] accumulate past interaction trajectories and distill abstract problem-solving patterns to guide future tasks. ExpeRepair [32] organizes previously resolved bugs into structured memories for later patch generation, while MemGovern [43] harvests community debugging traces from GitHub to improve the agent’s decision-making process. Another line of work evolves from online trajectories produced on the current instance. SWE-Debate [26] iteratively strengthens solutions through multi-agent debate, SAGE [16] abstracts high-level guidance from trial-and-error grounding during test-time scaling, and Live-SWE-agent [47] evolves its own runtime scaffold while solving the current task. Unlike these reactive paradigms, SkillForge targets the cold-start problem in project-specific issue resolution. Instead of acquiring project-specific knowledge only after accumulating repository history or online exploration trajectories, it proactively derives such knowledge directly from the repository by synthesizing project-specific issues, and represents this knowledge as entity-grounded skills for future issue resolution.
VI-B SWE-Style Instance Synthesis
Recent work [53, 18, 42] has explored synthesizing software issues or executable environments to improve software engineering agents. Existing methods primarily view synthesized instances as scalable training data. SWE-Smith [50] constructs synthetic bug-fixing tasks by independently rewriting individual API-level functions. R2E-Gym [20] generates executable SWE environments through test generation and commit back-translation to support large-scale agent training. BugPilot [39] synthesizes feature-development tasks that unintentionally introduce bugs, producing realistic development scenarios for subsequent model training.
In contrast, SkillForge uses synthetic issues for a fundamentally different purpose: proactive project-specific knowledge acquisition rather than training models. Instead of maximizing the number or diversity of synthesized tasks, SkillForge aims to expose project-specific knowledge that cannot be readily inferred from static repositories alone. Its issue construction also differs in granularity: rather than rewriting isolated API-level functions, randomly selecting several functions for joint rewriting, or generating new features, SkillForge starts from repository-tested functionalities and uses test execution traces to identify the code regions that jointly implement the same functionality. Solving the resulting issues reveals how the agent’s general coding priors diverge from project-specific implementation patterns and API interactions.
VII Conclusion
We presented SkillForge, a self-distillation framework for addressing the cold-start problem in project-specific issue resolution. Rather than relying on repository history or costly per-issue test-time exploration, SkillForge proactively derives project-specific knowledge directly from the repository by synthesizing project-specific issues and distilling their resolution trajectories. This knowledge is represented as a dual-level, entity-grounded skill repository that supports future issue resolution. Experiments demonstrate that SkillForge consistently improves issue resolution performance, yielding absolute Pass@1 gains of +5.8%/+5.6% on SWE-bench Verified and +5.8%/+4.1% on SWE-bench Pro for DeepSeek-V3.2 and GPT-5-mini, respectively. Overall, our results suggest that proactively acquiring project-specific knowledge before real issue resolution is an effective and scalable alternative to reactive acquisition from repository history or online exploration.
References
- [1] (2025) Investigating test overfitting on SWE-bench. arXiv preprint arXiv:2511.16858. External Links: Link, Document Cited by: §I.
- [2] (2024) SWE-Search: Enhancing Software Agents with Monte Carlo Tree Search and Iterative Refinement. arXiv. External Links: 2410.20285 Cited by: §I, §III-D.
- [3] (2026) Test vs mutant: adversarial llm agents for robust unit test generation. arXiv preprint arXiv:2602.08146. Cited by: §II-A.
- [4] (2026) BeyondSWE: can current code agent survive beyond single-repo bug fixing?. arXiv preprint arXiv:2603.03194. Cited by: §VI-A.
- [5] (2025) Swe-exp: experience-driven software issue resolution. arXiv preprint arXiv:2507.23361. Cited by: §I, §I, 1st item, §VI-A.
- [6] (2025) Can old tests do new tricks for resolving SWE issues?. arXiv preprint arXiv:2510.18270. External Links: Link, Document Cited by: §II-A.
- [7] (2025) Swe-bench pro: can ai agents solve long-horizon software engineering tasks?. arXiv preprint arXiv:2509.16941. Cited by: §I, §III-B.
- [8] (2025) A survey on code generation with llm-based agents. arXiv preprint arXiv:2508.00083. Cited by: §I.
- [9] (2025) SWE-Effi: re-evaluating software AI agent system effectiveness under resource constraints. arXiv preprint arXiv:2509.09853. External Links: Link, Document Cited by: §I, §III-D.
- [10] (2025) Trae agent: an llm-based agent for software engineering with test-time scaling. arXiv preprint arXiv:2507.23370. Cited by: §I.
- [11] (2026) SWE-mem: learning adaptive memory management for long-horizon coding agents. arXiv preprint arXiv:2606.28434. Cited by: §VI-A.
- [12] (2025) Saving SWE-Bench: a benchmark mutation approach for realistic agent evaluation. arXiv preprint arXiv:2510.08996. Note: Accepted at CAIN 2026 External Links: Link, Document Cited by: §I.
- [13] (2018) Deep code search. In Proceedings of the 40th international conference on software engineering, pp. 933–944. Cited by: §I.
- [14] (2016) Deep api learning. In Proceedings of the 2016 24th ACM SIGSOFT international symposium on foundations of software engineering, pp. 631–642. Cited by: §I.
- [15] (2026) EET: experience-driven early termination for cost-efficient software engineering agents. arXiv preprint arXiv:2601.05777. Cited by: §III-E.
- [16] (2025) Self-abstraction from grounded experience for plan-guided policy refinement. arXiv preprint arXiv:2511.05931. Cited by: §I, 1st item, §III-E, §VI-A.
- [17] (2026) In line with context: repository-level code generation via context inlining. arXiv preprint arXiv:2601.00376. Cited by: §VI-A.
- [18] (2025) Repo2Run: automated building executable environment for code repository at scale. arXiv preprint arXiv:2502.13681. External Links: Link, Document Cited by: §VI-B.
- [19] (2027) Planning over actions: agentic reasoning for semi-structured table question answering. Information Processing & Management 64 (1), pp. 105092. Cited by: §VI-A.
- [20] (2025) R2E-gym: procedural environments and hybrid verifiers for scaling open-weights swe agents. arXiv preprint arXiv:2504.07164. Cited by: §II-A, §V-B, §VI-B.
- [21] (2026) Compressing code context for LLM-based issue resolution. arXiv preprint arXiv:2603.28119. External Links: Link, Document Cited by: §I.
- [22] (2025) Putting it all into context: simplifying agents with lclms. arXiv preprint arXiv:2505.08120. Cited by: §I.
- [23] (2026) KOCO-bench: can large language models leverage domain knowledge in software development?. arXiv preprint arXiv:2601.13240. Cited by: §I.
- [24] (2023) Swe-bench: can language models resolve real-world github issues?. arXiv preprint arXiv:2310.06770. Cited by: §I.
- [25] (2026) SWE-prot’eg’e: learning to selectively collaborate with an expert unlocks small language models as software engineering agents. arXiv preprint arXiv:2602.22124. Cited by: §I.
- [26] (2025) Swe-debate: competitive multi-agent debate for software issue resolution. arXiv preprint arXiv:2507.23348. Cited by: §I, 2nd item, §VI-A.
- [27] (2026) Know before fix: qa-driven repository knowledge acquisition for software issue resolution. External Links: 2607.11111, Link Cited by: §I.
- [28] (2024) Llms as continuous learners: improving the reproduction of defective code in software issues. arXiv preprint arXiv:2411.13941. Cited by: §I, 2nd item, §VI-A.
- [29] (2025) Deepseek-v3. 2: pushing the frontier of open large language models. arXiv preprint arXiv:2512.02556. Cited by: §III-E.
- [30] (2026) LLM agents can see code repositories. External Links: 2606.14061, Link Cited by: §I.
- [31] (2026) Same signal, different semantics: a cross-framework behavioral analysis of software engineering agents. arXiv preprint arXiv:2605.18332. External Links: Link, Document Cited by: §I.
- [32] (2025) Experepair: dual-memory enhanced llm-based repository-level program repair. arXiv preprint arXiv:2506.10484. Cited by: §I, §VI-A.
- [33] (2025) SPICE: an automated SWE-Bench labeling pipeline for issue clarity, test coverage, and effort estimation. arXiv preprint arXiv:2507.09108. External Links: Link, Document Cited by: §I.
- [34] (2024) SWE-bench verified. Note: https://openai.com/index/introducing-swe-bench-verified/ Cited by: §I, §III-B.
- [35] (2026) RepoRepair: leveraging code documentation for repository-level automated program repair. arXiv preprint arXiv:2603.01048. Cited by: §VI-A.
- [36] (2026) Agentic rubrics as contextual verifiers for swe agents. arXiv preprint arXiv:2601.04171. Cited by: §VI-A.
- [37] (2026) SWE-bench promax: benchmarking agents on large-scale multilingual code refactoring. External Links: 2608.09802, Link Cited by: §I.
- [38] (2025) Openai gpt-5 system card. arXiv preprint arXiv:2601.03267. Cited by: §III-E.
- [39] (2025) BugPilot: complex bug generation for efficient learning of swe skills. arXiv preprint arXiv:2510.19898. Cited by: §II-A, §V-B, §VI-B.
- [40] (2025) Mini-swe-agent: the minimal ai software engineering agent. SWE-agent. Note: GitHub repositoryhttps://github.com/SWE-agent/mini-swe-agent Cited by: §III-E.
- [41] (2026) Yet even less is even better for agentic, reasoning, and coding llms. arXiv preprint arXiv:2604.00824. Cited by: §VI-A.
- [42] (2025) SWE-Bench++: a framework for the scalable generation of software engineering benchmarks from open-source repositories. arXiv preprint arXiv:2512.17419. External Links: Link, Document Cited by: §VI-B.
- [43] (2026) MemGovern: enhancing code agents through learning from governed human experiences. arXiv preprint arXiv:2601.06789. Cited by: §I, 3rd item, §III-D, §VI-A.
- [44] (2025) OpenHands: an open platform for ai software developers as generalist agents. External Links: 2407.16741, Link Cited by: §I.
- [45] (2025) Are “solved issues” in SWE-bench really solved correctly? an empirical study. arXiv preprint arXiv:2503.15223. External Links: Link, Document Cited by: §I.
- [46] (2026) SWE-pruner: self-adaptive context pruning for coding agents. arXiv preprint arXiv:2601.16746. Cited by: §III-E.
- [47] (2025) Live-swe-agent: can software engineering agents self-evolve on the fly?. arXiv preprint arXiv:2511.13646. Cited by: §I, 3rd item, §VI-A.
- [48] (2025) SWE-compass: towards unified evaluation of agentic coding abilities for large language models. arXiv preprint arXiv:2511.05459. Cited by: §VI-A.
- [49] (2024) SWE-agent: Agent-Computer Interfaces Enable Automated Software Engineering. In The Thirty-eighth Annual Conference on Neural Information Processing Systems, Cited by: §I, §III-D.
- [50] (2025) Swe-smith: scaling data for software engineering agents. arXiv preprint arXiv:2504.21798. Cited by: §II-A, §V-B, §VI-B.
- [51] (2026) SWE-ABS: adversarial benchmark strengthening exposes inflated success rates on test-based benchmark. arXiv preprint arXiv:2603.00520. External Links: Link, Document Cited by: §I.
- [52] (2025) UTBoost: rigorous evaluation of coding agents on SWE-Bench. arXiv preprint arXiv:2506.09289. External Links: Link, Document Cited by: §I.
- [53] (2026) A survey on failure analysis and fault injection in ai systems. ACM Transactions on Software Engineering and Methodology 35 (1), pp. 1–42. Cited by: §VI-B.
- [54] (2026) Dockerless: environment-free program verifier for coding agents. arXiv preprint arXiv:2606.28436. Cited by: §VI-A.
- [55] (2025) Pruning the unsurprising: efficient code reasoning via first-token surprisal. arXiv preprint arXiv:2508.05988. Cited by: §VI-A.
- [56] (2026) Glimprouter: efficient collaborative inference by glimpsing one token of thoughts. arXiv preprint arXiv:2601.05110. Cited by: §VI-A.