<?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: Pablo Rubianes 🇺🇾</title>
    <description>The latest articles on DEV Community by Pablo Rubianes 🇺🇾 (@prubianes).</description>
    <link>https://dev.to/prubianes</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%2F12615%2F1655744.jpeg</url>
      <title>DEV Community: Pablo Rubianes 🇺🇾</title>
      <link>https://dev.to/prubianes</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/prubianes"/>
    <language>en</language>
    <item>
      <title>I just released SKTR, a deterministic architecture review CLI</title>
      <dc:creator>Pablo Rubianes 🇺🇾</dc:creator>
      <pubDate>Wed, 15 Jul 2026 04:46:29 +0000</pubDate>
      <link>https://dev.to/prubianes/i-just-released-sktr-a-deterministic-architecture-review-cli-fk</link>
      <guid>https://dev.to/prubianes/i-just-released-sktr-a-deterministic-architecture-review-cli-fk</guid>
      <description>&lt;p&gt;Hey everyone!&lt;/p&gt;

&lt;p&gt;I've been working on a project called &lt;strong&gt;SKTR&lt;/strong&gt;, which stands for &lt;strong&gt;System Knowledge &amp;amp; Technical Review&lt;/strong&gt;, and I've just published the first release candidate.&lt;/p&gt;

&lt;p&gt;SKTR is a CLI that reviews your current Git changes from an architecture and maintainability perspective.&lt;/p&gt;

&lt;p&gt;The basic workflow is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;your-project
sktr init
sktr review
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It looks at the Git diff, analyzes the changed code, builds a structured model of the project, and runs deterministic rules against it.&lt;/p&gt;

&lt;p&gt;The important word there is &lt;strong&gt;deterministic&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I didn't want the tool to send an entire repository to an LLM and ask it to guess what might be wrong. SKTR detects things using analyzers, metrics, and rules first. AI is optional and is only used to explain the evidence and suggest next steps.&lt;/p&gt;

&lt;h2&gt;
  
  
  What can it review?
&lt;/h2&gt;

&lt;p&gt;The current release includes analyzers for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Python&lt;/li&gt;
&lt;li&gt;JavaScript&lt;/li&gt;
&lt;li&gt;TypeScript&lt;/li&gt;
&lt;li&gt;JSX and TSX&lt;/li&gt;
&lt;li&gt;Java&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some of the things it can detect include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;New internal dependencies&lt;/li&gt;
&lt;li&gt;Forbidden dependencies between modules&lt;/li&gt;
&lt;li&gt;Dependency cycles&lt;/li&gt;
&lt;li&gt;Large changed files&lt;/li&gt;
&lt;li&gt;Large functions and components&lt;/li&gt;
&lt;li&gt;Public API removals&lt;/li&gt;
&lt;li&gt;High module fan-out&lt;/li&gt;
&lt;li&gt;Source changes without related test changes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It also calculates a risk level and review score, giving you an idea of where to focus first.&lt;/p&gt;

&lt;h2&gt;
  
  
  Example
&lt;/h2&gt;

&lt;p&gt;A terminal report looks roughly 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;SKTR Review

Summary
Risk: Medium
Score: 76/100
Changed files: 3
Issues: 2

Findings
High
! Forbidden dependency
  controllers/order_controller.py imports repositories/order_repository.py

Medium
! Large function detected
  create_order has 114 lines.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The exact rules and thresholds can be configured in &lt;code&gt;sktr.yml&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Other output formats
&lt;/h2&gt;

&lt;p&gt;The terminal output is useful locally, but SKTR can also produce Markdown and JSON artifacts:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;sktr review &lt;span class="nt"&gt;--format&lt;/span&gt; markdown &lt;span class="nt"&gt;--output&lt;/span&gt; REVIEW.md
sktr review &lt;span class="nt"&gt;--format&lt;/span&gt; json &lt;span class="nt"&gt;--output&lt;/span&gt; sktr-review.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The JSON format has a versioned schema, so it can be used in CI or consumed by other tools.&lt;/p&gt;

&lt;p&gt;You can also make Mermaid dependency graphs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;sktr graph &lt;span class="nt"&gt;--scope&lt;/span&gt; repository
sktr graph &lt;span class="nt"&gt;--scope&lt;/span&gt; repository &lt;span class="nt"&gt;--cycles&lt;/span&gt;
sktr graph &lt;span class="nt"&gt;--scope&lt;/span&gt; repository &lt;span class="nt"&gt;--focus&lt;/span&gt; orders
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Using it in CI
&lt;/h2&gt;

&lt;p&gt;SKTR can write the review artifact and then fail based on issue severity:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;sktr review &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--branch&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--no-ai&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--format&lt;/span&gt; json &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--output&lt;/span&gt; sktr-review.json &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--fail-on&lt;/span&gt; high
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This means you can use it as an architecture check without enabling AI or depending on an external service.&lt;/p&gt;

&lt;h2&gt;
  
  
  Optional AI review
&lt;/h2&gt;

&lt;p&gt;AI support is available, but it isn't required.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;SKTR_OPENAI_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"your-api-key"&lt;/span&gt;
sktr review &lt;span class="nt"&gt;--ai&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The AI receives structured findings rather than the whole repository. It doesn't create issues, modify the score, or affect CI severity gates.&lt;/p&gt;

&lt;h2&gt;
  
  
  Trying it
&lt;/h2&gt;

&lt;p&gt;SKTR currently requires Python 3.13 or newer.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python &lt;span class="nt"&gt;-m&lt;/span&gt; pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--pre&lt;/span&gt; &lt;span class="nv"&gt;sktr&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;1.0.0rc1
sktr &lt;span class="nt"&gt;--help&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then run it inside a Git repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;sktr init
sktr review
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is still a release candidate, so I'm especially interested in false positives, confusing output, missing rules, and projects where the analyzers don't understand the architecture correctly.&lt;/p&gt;

&lt;p&gt;The code is open source and available here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/prubianes/sktr" rel="noopener noreferrer"&gt;GitHub repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pypi.org/project/sktr/" rel="noopener noreferrer"&gt;PyPI package&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/prubianes/sktr/tree/main/docs" rel="noopener noreferrer"&gt;Documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'm pretty happy to finally get it out into the world. There is still plenty I want to improve, but it already gives useful reviews without requiring AI, which was the main goal from the start.&lt;/p&gt;

&lt;p&gt;Feedback and contributions are very welcome.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>python</category>
      <category>productivity</category>
      <category>devtools</category>
    </item>
    <item>
      <title>My WeCoded Landing Page</title>
      <dc:creator>Pablo Rubianes 🇺🇾</dc:creator>
      <pubDate>Sun, 06 Apr 2025 21:47:33 +0000</pubDate>
      <link>https://dev.to/prubianes/my-wecoded-landing-page-3i6i</link>
      <guid>https://dev.to/prubianes/my-wecoded-landing-page-3i6i</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/wecoded"&gt;WeCoded Challenge&lt;/a&gt;: Celebrate in Code&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My WeCoded Landing Page
&lt;/h2&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Fpcth8xbdzcbrredbze1u.jpg" 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.amazonaws.com%2Fuploads%2Farticles%2Fpcth8xbdzcbrredbze1u.jpg" alt="site" width="800" height="592"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is my take for the WeCoded challenge.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://prubianes.github.io/wecoded2025challenge/" rel="noopener noreferrer"&gt;Live Demo&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;I tried to have a clean and minimal design, taking into consideration the responsive design with a hamburger menu for small screens.&lt;br&gt;
There are a few subtle animations in order to bring the website to life.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical Implementation
&lt;/h2&gt;

&lt;p&gt;The site was built with vanilla HTML, CSS, and JavaScript.&lt;/p&gt;

&lt;h2&gt;
  
  
  Future Enhancements
&lt;/h2&gt;

&lt;p&gt;If I had more time, I would add:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dark mode toggle&lt;/li&gt;
&lt;li&gt;Filtering and sorting options for stories&lt;/li&gt;
&lt;li&gt;Additional accessibility features&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>wecoded</category>
      <category>dei</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
