<?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: YuJin Hong</title>
    <description>The latest articles on DEV Community by YuJin Hong (@dbwls99706).</description>
    <link>https://dev.to/dbwls99706</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%2F4098245%2F24c61200-3dfd-4115-8769-aa4c4ed0a106.jpg</url>
      <title>DEV Community: YuJin Hong</title>
      <link>https://dev.to/dbwls99706</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dbwls99706"/>
    <language>en</language>
    <item>
      <title>I built agent-thanks to trace which open-source repos one coding task actually used</title>
      <dc:creator>YuJin Hong</dc:creator>
      <pubDate>Sun, 30 Aug 2026 23:05:36 +0000</pubDate>
      <link>https://dev.to/dbwls99706/i-built-agent-thanks-to-trace-which-open-source-repos-one-coding-task-actually-used-15d</link>
      <guid>https://dev.to/dbwls99706/i-built-agent-thanks-to-trace-which-open-source-repos-one-coding-task-actually-used-15d</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F32f2o64caw40w8e5m6da.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F32f2o64caw40w8e5m6da.png" alt="agent-thanks: detect, inspect, approve, thank"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When a coding agent adds a dependency, clones a repository, or adapts code from an existing project, the maintainer may never see a task-level signal that their work helped.&lt;/p&gt;

&lt;p&gt;I built &lt;a href="https://github.com/dbwls99706/agent-thanks" rel="noopener noreferrer"&gt;agent-thanks&lt;/a&gt; to reconstruct that small slice of open-source use from observable evidence. It answers a narrower question than a dependency-tree scanner:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What was newly and observably used during this one coding task?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;agent-thanks compares the working tree with a Git baseline and can optionally inspect a local agent transcript. Every repository in the report includes the evidence that led to it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a newly added direct dependency&lt;/li&gt;
&lt;li&gt;a clone or Git-install command&lt;/li&gt;
&lt;li&gt;a Git submodule&lt;/li&gt;
&lt;li&gt;an explicit &lt;code&gt;copied from&lt;/code&gt;, &lt;code&gt;adapted from&lt;/code&gt;, or &lt;code&gt;used code from&lt;/code&gt; provenance line&lt;/li&gt;
&lt;li&gt;a GitHub URL that appeared in the transcript&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The last case is deliberately different. A bare URL is a low-confidence reference, not proof of meaningful use. It stays visible for review but is never eligible for a Star.&lt;/p&gt;

&lt;p&gt;Detection is deterministic rules only. No second model decides what counts.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[verified | high] BehaviorTree/BehaviorTree.CPP
  Session shows a substantive repository-use command
  Eligible for an explicit y/N decision

[reference | low] owner/example-repo
  GitHub URL appeared in the transcript
  Review only - never eligible for a Star
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The automation boundary
&lt;/h2&gt;

&lt;p&gt;The evidence pipeline can run unattended. Starring cannot.&lt;/p&gt;

&lt;p&gt;Every new Star requires its own explicit, default-No &lt;code&gt;y/N&lt;/code&gt; decision in an interactive terminal, followed by a final confirmation. There is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;no auto mode&lt;/li&gt;
&lt;li&gt;no approve-all flag&lt;/li&gt;
&lt;li&gt;no piped confirmation&lt;/li&gt;
&lt;li&gt;no unattended Star path&lt;/li&gt;
&lt;li&gt;no way to promote a low-confidence reference into a Star candidate&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;GitHub's &lt;a href="https://docs.github.com/en/site-policy/acceptable-use-policies/github-acceptable-use-policies" rel="noopener noreferrer"&gt;Acceptable Use Policies&lt;/a&gt; list automated starring or following as an example of rank abuse. I wanted the boundary to be visible in the product itself: detection and evidence are automated; the thank-you remains a human decision.&lt;/p&gt;

&lt;p&gt;If a Star succeeds, the CLI prints an exact Undo command for the Stars created by that invocation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try the read-only demo
&lt;/h2&gt;

&lt;p&gt;Python 3.10+ is required:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pipx &lt;span class="nb"&gt;install &lt;/span&gt;git+https://github.com/dbwls99706/agent-thanks.git@v0.4.0
agent-thanks demo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The install needs network access. The demo itself requires no GitHub login, makes no network requests, writes no files, and changes no Stars.&lt;/p&gt;

&lt;p&gt;A real scan can stay read-only too:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;agent-thanks run &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--repo&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--base&lt;/span&gt; HEAD &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--session&lt;/span&gt; path/to/agent-session.log &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--dry-run&lt;/span&gt;

agent-thanks &lt;span class="nb"&gt;export&lt;/span&gt; .agent-thanks-report.json &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--output&lt;/span&gt; OPEN_SOURCE_USE.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The Markdown export is meant to be useful even if you never Star anything. It can be reviewed and attached to a pull request or release note as a task-level evidence record.&lt;/p&gt;

&lt;h2&gt;
  
  
  Privacy and network behavior
&lt;/h2&gt;

&lt;p&gt;Session-log contents stay local. Package-to-repository mapping may query PyPI, npm, or crates.io, which sends the package name to that registry. &lt;code&gt;--offline&lt;/code&gt; disables those lookups.&lt;/p&gt;

&lt;p&gt;Reviewing and exporting reports make no network requests. GitHub authentication checks, existing-Star checks, and actual Star or Unstar actions use the GitHub API. Tokens are read from &lt;code&gt;GH_TOKEN&lt;/code&gt;, &lt;code&gt;GITHUB_TOKEN&lt;/code&gt;, or an authenticated GitHub CLI session and are never stored by agent-thanks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Current coverage
&lt;/h2&gt;

&lt;p&gt;The dependency scanners currently cover:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Python requirements and &lt;code&gt;pyproject.toml&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;npm &lt;code&gt;package.json&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Rust &lt;code&gt;Cargo.toml&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Go &lt;code&gt;go.mod&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Git submodules&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Session evidence can identify public GitHub repositories outside those ecosystems as well. The tool cannot identify model training sources or other unobservable influences, and it does not claim to.&lt;/p&gt;

&lt;p&gt;The project is MIT-licensed, and v0.4.0 is available on &lt;a href="https://github.com/dbwls99706/agent-thanks" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The product question I am still unsure about is the interesting part: &lt;strong&gt;is a Star actually the useful thank-you, or is the Markdown evidence list the better artifact?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I would also value concrete false-positive or missed-evidence examples. Those will help decide where the boundary between “used” and “merely viewed” should move next.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>opensource</category>
      <category>python</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
