<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: soil0119</title>
    <description>The latest articles on DEV Community by soil0119 (@soil0119).</description>
    <link>https://dev.to/soil0119</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4123023%2F9565b579-a378-4fb0-b03a-f0de569ba5c5.jpeg</url>
      <title>DEV Community: soil0119</title>
      <link>https://dev.to/soil0119</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/soil0119"/>
    <language>en</language>
    <item>
      <title>Tracking code changes in plain folders with Where am I</title>
      <dc:creator>soil0119</dc:creator>
      <pubDate>Tue, 13 Oct 2026 06:40:18 +0000</pubDate>
      <link>https://dev.to/soil0119/tracking-code-changes-in-plain-folders-with-where-am-i-no7</link>
      <guid>https://dev.to/soil0119/tracking-code-changes-in-plain-folders-with-where-am-i-no7</guid>
      <description>&lt;p&gt;A source folder can contain several services, API definitions, and tests before it has a useful Git history. I have added plain-folder tracking to &lt;strong&gt;Where am I&lt;/strong&gt;, an MIT-licensed tool for inspecting how code changes relate across local sources.&lt;/p&gt;

&lt;p&gt;You can connect Git repositories and ordinary folders in the same workspace. The scanner runs locally, and a GitHub account is not required to analyze your sources.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://where-am-i-soil0119.soil0119.chatgpt.site/" rel="noopener noreferrer"&gt;Try the sample-data demo&lt;/a&gt; · &lt;a href="https://github.com/soil0119/Where-am-i" rel="noopener noreferrer"&gt;Source code&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How the folder baseline works
&lt;/h2&gt;

&lt;p&gt;For a configured folder, the scanner discovers supported source files within its scan limits and records each readable file's content hash and line count.&lt;/p&gt;

&lt;p&gt;The first scan establishes a baseline. A later scan compares that state with the previous one:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a new path is an added file;&lt;/li&gt;
&lt;li&gt;a changed hash is a modified file;&lt;/li&gt;
&lt;li&gt;a missing path is a deleted file.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those file changes feed the existing static evidence graph and scan history. The graph can connect supported API patterns, handlers, callers, database access, documentation, and tests, with evidence available for inspection.&lt;/p&gt;

&lt;p&gt;The implementation is in &lt;a href="https://github.com/soil0119/Where-am-i/blob/main/scripts/scan-repos.mjs" rel="noopener noreferrer"&gt;scripts/scan-repos.mjs&lt;/a&gt;, including &lt;code&gt;scanFolder&lt;/code&gt;, &lt;code&gt;buildFolderFileState&lt;/code&gt;, and &lt;code&gt;compareFolderFileState&lt;/code&gt;. A synthetic regression fixture checks an initial baseline followed by file creation, modification, and deletion.&lt;/p&gt;

&lt;h2&gt;
  
  
  Connect a folder
&lt;/h2&gt;

&lt;p&gt;Where am I requires Node.js 22.13 or newer. After following the &lt;a href="https://github.com/soil0119/Where-am-i#quick-start" rel="noopener noreferrer"&gt;README setup&lt;/a&gt;, add a source folder to &lt;code&gt;whereami.config.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"folders"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"sample-service"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"path"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/absolute/path/to/sample-service"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"autoFetch"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run &lt;code&gt;npm run dev&lt;/code&gt; for the UI and local watcher, or &lt;code&gt;npm run scan&lt;/code&gt; for a single scan. The initial folder scan reports a baseline; edit a supported file and rescan to inspect the change.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the current baseline cannot tell you
&lt;/h2&gt;

&lt;p&gt;The baseline advances with each scan. It stores hashes and line counts rather than old source text, so it cannot yet show a complete before-and-after line diff for a modified folder file. A same-length edit is detected through its changed hash, but its precise added and deleted lines need further work.&lt;/p&gt;

&lt;p&gt;Static extraction is also approximate. Dynamic calls can be missed, and similar symbols or paths can produce incorrect relationships. Inspect the evidence and use tests and engineering judgment when reviewing a change.&lt;/p&gt;

&lt;h2&gt;
  
  
  Help improve the scanner
&lt;/h2&gt;

&lt;p&gt;I have organized &lt;a href="https://github.com/soil0119/Where-am-i/issues/101" rel="noopener noreferrer"&gt;64 scoped contributor tasks&lt;/a&gt;, each with a starting location, acceptance criteria, difficulty, and prerequisite links.&lt;/p&gt;

&lt;p&gt;Smaller starting points include &lt;a href="https://github.com/soil0119/Where-am-i/issues/37" rel="noopener noreferrer"&gt;configuration diagnostics&lt;/a&gt;, &lt;a href="https://github.com/soil0119/Where-am-i/issues/45" rel="noopener noreferrer"&gt;making scan omissions visible&lt;/a&gt;, &lt;a href="https://github.com/soil0119/Where-am-i/issues/77" rel="noopener noreferrer"&gt;graph filters&lt;/a&gt;, and &lt;a href="https://github.com/soil0119/Where-am-i/issues/88" rel="noopener noreferrer"&gt;extractor fixture documentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Deeper work includes persistent folder checkpoints, incremental extraction, scope-aware JS/TS analysis, OpenAPI comparison, and new framework extractors. These are contribution candidates, not shipped capabilities.&lt;/p&gt;

&lt;p&gt;If you try it, which missing connection would make it useful in your codebase? A small public or synthetic example of a false link or missed dependency is especially helpful.&lt;/p&gt;

&lt;p&gt;Comment on an issue to discuss or claim a task. PR titles and descriptions must be written by the contributor in their own words; see &lt;a href="https://github.com/soil0119/Where-am-i/blob/main/CONTRIBUTING.md" rel="noopener noreferrer"&gt;CONTRIBUTING.md&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: This post was prepared with AI assistance. The feature descriptions were checked against the repository; the public demo uses sample data.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>showdev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Struggling to keep up with team changes across repositories? I built a local-first impact graph</title>
      <dc:creator>soil0119</dc:creator>
      <pubDate>Sun, 13 Sep 2026 10:04:41 +0000</pubDate>
      <link>https://dev.to/soil0119/how-i-built-a-local-first-impact-graph-for-multi-repository-code-changes-3kkg</link>
      <guid>https://dev.to/soil0119/how-i-built-a-local-first-impact-graph-for-multi-repository-code-changes-3kkg</guid>
      <description>&lt;p&gt;A small API change rarely stays small.&lt;/p&gt;

&lt;p&gt;In a multi-repository system, changing one route can affect a frontend wrapper, a backend handler, an internal service, a database call, documentation, and tests. I kept tracing those paths manually, so I built &lt;strong&gt;Where am I&lt;/strong&gt;: an MIT-licensed, local-first tool that turns changes in local Git repositories and ordinary folders into a clickable impact graph using static source evidence.&lt;/p&gt;

&lt;p&gt;Repository: &lt;a href="https://github.com/soil0119/Where-am-i" rel="noopener noreferrer"&gt;github.com/soil0119/Where-am-i&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://where-am-i-soil0119.soil0119.chatgpt.site/" rel="noopener noreferrer"&gt;Try the sample-data demo&lt;/a&gt; · &lt;a href="https://github.com/soil0119/Where-am-i/issues/101" rel="noopener noreferrer"&gt;Choose a contribution task&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Where am I is an early MVP. Its output is supporting evidence for review, not a replacement for tests, security checks, or engineering judgment.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The problem I wanted to solve
&lt;/h2&gt;

&lt;p&gt;Most code search tools answer questions about one symbol or one repository. The question I usually had was broader:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If I change this endpoint, where does the change flow across the whole system?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The answer might cross several boundaries:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;frontend action
  -&amp;gt; API wrapper
  -&amp;gt; backend route
  -&amp;gt; handler or service
  -&amp;gt; database / external API
  -&amp;gt; OpenAPI docs
  -&amp;gt; tests
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A plain dependency graph is not enough. During review I also need to know &lt;em&gt;why&lt;/em&gt; two nodes are connected, which line created the relationship, and whether the node belongs to my current work or to an incoming team change.&lt;/p&gt;

&lt;h2&gt;
  
  
  Design goals
&lt;/h2&gt;

&lt;p&gt;I started with four constraints:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Local-first:&lt;/strong&gt; configured source repositories should not be uploaded to a hosted analysis service.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evidence over mystery:&lt;/strong&gt; every useful connection should lead back to a file and, when available, a source line.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Change-aware:&lt;/strong&gt; the graph should prioritize the current diff and teammate updates instead of showing the entire codebase at once.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bounded work:&lt;/strong&gt; large repositories need explicit scan limits so the tool remains usable during development.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  From Git state to an evidence graph
&lt;/h2&gt;

&lt;p&gt;The scanner is a Node.js script. For each configured repository it collects several views of change:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;working-tree and staged changes&lt;/li&gt;
&lt;li&gt;commits on the current branch compared with its base reference&lt;/li&gt;
&lt;li&gt;changes available from the selected remote/base reference&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It then combines changed files with priority files and API catalog files. This keeps the first pass focused while still allowing it to connect a changed implementation to contracts, wrappers, documentation, and tests.&lt;/p&gt;

&lt;p&gt;At a high level, the pipeline looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Git repositories
  -&amp;gt; discover repos and base refs
  -&amp;gt; collect diffs and status
  -&amp;gt; extract static facts
  -&amp;gt; connect facts with evidence
  -&amp;gt; write a local snapshot
  -&amp;gt; render an interactive graph
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The current extractors recognize patterns such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;functions and call relationships&lt;/li&gt;
&lt;li&gt;API paths, frontend wrappers, and backend handlers&lt;/li&gt;
&lt;li&gt;database access and external HTTP requests&lt;/li&gt;
&lt;li&gt;OpenAPI documents, documentation, and tests&lt;/li&gt;
&lt;li&gt;application error codes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, the test fixture includes a frontend &lt;code&gt;fetch("/api/models")&lt;/code&gt;, a Go route registered with &lt;code&gt;r.Post("/api/models", createModel)&lt;/code&gt;, a database call, an external training request, and a Python error code. The test asserts that the generated graph contains handler, database, external-call, and error nodes together with relationship labels and the original evidence lines.&lt;/p&gt;

&lt;p&gt;That test matters because a visually convincing graph can still be wrong. I want the graph model—not only the UI—to be testable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Configuration stays explicit
&lt;/h2&gt;

&lt;p&gt;A minimal configuration can discover repositories under a workspace directory:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"repoRoots"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"/absolute/path/to/your/workspace"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"include"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"your-repo-prefix"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"baseBranch"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"develop"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"autoFetch"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"liveWatch"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Repositories can also be listed individually. Scan limits cover the number of files, API catalog files, changed files, facts, edges, and nodes included in a scenario. The defaults are intentionally configurable because a useful limit for a small service is not necessarily useful for a monorepo.&lt;/p&gt;

&lt;p&gt;If network access is undesirable, &lt;code&gt;autoFetch&lt;/code&gt; can be disabled or the scanner can run with &lt;code&gt;--no-fetch&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Track source folders without Git
&lt;/h2&gt;

&lt;p&gt;You can connect an ordinary source folder without creating a Git repository or connecting a GitHub account:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"folders"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"sample-service"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"path"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/absolute/path/to/sample-service"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"autoFetch"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The first scan records a local file baseline. Later scans compare content hashes and line counts to detect added, modified, and deleted files, then feed those changes into the existing evidence graph and scan history. Git repositories and plain folders can be analyzed together.&lt;/p&gt;

&lt;p&gt;The folder baseline advances with each scan. It currently stores hashes and line counts, not the original source text, so a modified folder file does not yet have a full before-and-after line diff. Persistent checkpoints and more accurate folder diffs are separate contribution tasks.&lt;/p&gt;

&lt;h2&gt;
  
  
  The UI is a review surface
&lt;/h2&gt;

&lt;p&gt;The interface uses React and XYFlow. It provides separate perspectives for current work, team changes, and API contracts. Search and filters can narrow the graph to changed impact or items that need review.&lt;/p&gt;

&lt;p&gt;Selecting a node or edge opens the supporting details: source evidence, representative diffs, relationship rules, change briefings, and suggested next checks. The interface is available in English and Korean; the language choice is stored locally in the browser.&lt;/p&gt;

&lt;p&gt;The goal is not to produce the largest possible graph. It is to make the next review question easier to answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Local-first does not mean risk-free
&lt;/h2&gt;

&lt;p&gt;The scanner reads the source code in the repositories you configure. Its local configuration and generated snapshot may contain absolute paths, repository names, branches, commit messages, pull request titles, function names, API paths, and evidence lines.&lt;/p&gt;

&lt;p&gt;Both files are ignored by Git by default. Production builds remove the local snapshot and show bundled sample data. I still recommend reviewing screenshots and exported output before sharing them, because local analysis can surface information that was never meant to be public.&lt;/p&gt;

&lt;h2&gt;
  
  
  Current limitations
&lt;/h2&gt;

&lt;p&gt;Static extraction is deliberately pragmatic, so it can miss dynamic calls, reflection, generated code, or complex metaprogramming. Coverage also varies by language and framework. A connection in the graph is evidence worth inspecting, not proof that every runtime dependency has been found.&lt;/p&gt;

&lt;p&gt;The next areas I want to improve are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;language- and framework-specific extractors&lt;/li&gt;
&lt;li&gt;confidence and explanation for inferred edges&lt;/li&gt;
&lt;li&gt;clearer graph behavior on large systems&lt;/li&gt;
&lt;li&gt;better pull-request and branch comparison briefings&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try it locally
&lt;/h2&gt;

&lt;p&gt;You need Node.js 22.13 or newer and at least one local Git repository or ordinary source folder:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/soil0119/Where-am-i.git
&lt;span class="nb"&gt;cd &lt;/span&gt;Where-am-i
npm &lt;span class="nb"&gt;install
cp &lt;/span&gt;whereami.config.example.json whereami.config.json
npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The README includes a PowerShell equivalent and the full configuration options.&lt;/p&gt;

&lt;p&gt;I would especially value feedback on three questions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Which language or framework extractor would make this useful for your codebase?&lt;/li&gt;
&lt;li&gt;What evidence would you need before trusting an inferred connection?&lt;/li&gt;
&lt;li&gt;At what graph size does this kind of view stop helping and start becoming noise?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Because this is an open-source project, please feel free to &lt;a href="https://github.com/soil0119/Where-am-i/issues" rel="noopener noreferrer"&gt;open a GitHub issue&lt;/a&gt; for bugs, feature requests, extractor ideas, documentation gaps, or questions—even if you are not ready to contribute code. Issues and contributions are welcome in English or Korean.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choose a scoped contribution
&lt;/h2&gt;

&lt;p&gt;I have organized &lt;a href="https://github.com/soil0119/Where-am-i/issues/101" rel="noopener noreferrer"&gt;64 focused contribution tasks&lt;/a&gt;, with starting code locations, acceptance criteria, difficulty labels, and prerequisite links.&lt;/p&gt;

&lt;p&gt;Smaller tasks include &lt;a href="https://github.com/soil0119/Where-am-i/issues/37" rel="noopener noreferrer"&gt;configuration diagnostics&lt;/a&gt;, &lt;a href="https://github.com/soil0119/Where-am-i/issues/45" rel="noopener noreferrer"&gt;scan-limit visibility&lt;/a&gt;, &lt;a href="https://github.com/soil0119/Where-am-i/issues/77" rel="noopener noreferrer"&gt;graph filters&lt;/a&gt;, and &lt;a href="https://github.com/soil0119/Where-am-i/issues/88" rel="noopener noreferrer"&gt;extractor fixture documentation&lt;/a&gt;. Deeper work includes scope-aware JS/TS analysis, method-aware API matching, structured OpenAPI comparison, incremental scans, and new framework extractors. These are planned contributions, not a list of implemented features.&lt;/p&gt;

&lt;p&gt;Comment on an issue to discuss or claim a task. PR titles and descriptions must be written by the contributor in their own words, with actual verification results; see &lt;a href="https://github.com/soil0119/Where-am-i/blob/main/CONTRIBUTING.md" rel="noopener noreferrer"&gt;CONTRIBUTING.md&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Disclosure: I used an AI assistant to draft and edit this post. The implementation details and technical claims were checked against the linked repository.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>git</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
