Skip to content

Instantly share code, notes, and snippets.

View ThomasDeutsch's full-sized avatar

Thomas Deutsch ThomasDeutsch

View GitHub Profile

b. Write tests, commit; code, iterate, commit Favorite workflow for changes that are easily verifiable with unit, integration, or end-to-end tests. Test-driven development (TDD) becomes incredible powerful with agentic coding: Ask AI to write tests based on expected input/output pairs. Be explicit about the fact that you’re doing test-driven development so that it avoids creating mock implementations, even for functionality that doesn’t exist yet in the codebase. Tell AI to run the tests and confirm they fail. Explicitly telling it not to write any implementation code at this stage is often helpful. Ask AI to commit the tests when you’re satisfied with them. Ask AI to write code that passes the tests, instructing it not to modify the tests. Tell AI to keep going until all tests pass. It will usually take a few iterations for AI to write code, run the tests, adjust the code, and run the tests again. At this stage, it can help to ask it to verify with independent subagents that the implementation isn’t overfitt

@ThomasDeutsch
ThomasDeutsch / epcc.mdc
Last active May 15, 2025 21:43
EPCC Workflow - with Task-List workflow integration
# Protocol: Integrated EPCC Workflow (with Task List Management)
When a user presents a significant problem, a new feature request, or a complex task, guide them and yourself (the AI) through the following integrated EPCC workflow. This workflow combines high-level strategic planning (EPCC) with detailed task management using established protocols.
## Integrated EPCC Workflow Visualized
```mermaid
graph TD
A[Start: User Problem/Feature Request] --> B{EXPLORE Phase};
B -- "User provides context" --> B1["AI: Read Context (NO code)"];
@ThomasDeutsch
ThomasDeutsch / work-on-tasks.mdc
Created May 15, 2025 21:05
work-on-tasks.mdc
---
description: Protocol for executing tasks from a task list, updating their status, documenting decisions, marking relevant files, and suggesting solution design refinements. Includes a visual workflow.
alwaysApply: false
---
# Protocol: Task Execution & Update
When a user indicates they are working on or have completed a task from a project task list, follow this protocol. This ensures tasks are properly updated, and relevant information is captured.
## Workflow Overview
@ThomasDeutsch
ThomasDeutsch / create-tasks.mdc
Created May 15, 2025 20:41
Create Tasks Rule
---
description: Protocol for defining new features, tasks, and sub-tasks. Guides through creating/updating task list files, structuring tasks, handling dependencies, and outlining implementation plans. Includes a visual workflow.
alwaysApply: false
---
# Protocol: Feature & Task Definition
When a user initiates the creation or addition of new features, tasks, or
sub-tasks, follow this protocol. This ensures comprehensive definition and
proper integration into project task lists.
import { Signal, signal } from '@angular/core';
import { Event } from '@flowcards/core';
export function getSignal<P, V>(event: Event<P, V>) {
const eventSignal = signal<Event<P, V>>(event);
event.registerCallback(() => {
eventSignal.set(this._internalEvent);
});
return eventSignal.asReadonly;
}
@ThomasDeutsch
ThomasDeutsch / SketchSystems.spec
Created August 9, 2018 19:54 — forked from ryanlucas/SketchSystems.spec
# Style Buttons: A Parallel State Demo
# Style Buttons: A Parallel State Demo
# 2018 August 06
# By Ryan Lucas (Twitter: @ryanlucas)
Font Style Selector&
Bold
Bold Off
bold clicked -> Bold On
Bold On
bold clicked -> Bold Off
@ThomasDeutsch
ThomasDeutsch / SketchSystems.spec
Created June 22, 2018 09:04
My Awesome Sketch
My Awesome Sketch
First State
some event -> Second State
Second State
;; i used the new-js->clj3 function from Darrick Wiebe
;; https://gist.github.com/pangloss/591d77231fda460c2fbe
;; i have added a :ns parameter
(let [data
"[{ \"web-app\": { \"servlet\": [ { \"servlet-name\": \"cofaxCDS\", \"servlet-class\": \"org.cofax.cds.CDSServlet\", \"init-param\": { \"configGlossary:installationAt\": \"Philadelphia, PA\", \"configGlossary:adminEmail\": \"[email protected]\", \"configGlossary:poweredBy\": \"Cofax\", \"configGlossary:poweredByIcon\": \"/images/cofax.gif\", \"configGlossary:staticPath\": \"/content/static\", \"templateProcessorClass\": \"org.cofax.WysiwygTemplate\", \"templateLoaderClass\": \"org.cofax.FilesTemplateLoader\", \"templatePath\": \"templates\" } }, { \"servlet-name\": \"cofaxAdmin\", \"servlet-class\": \"org.cofax.cds.AdminServlet\" }, { \"servlet-name\": \"cofaxTools\", \"servlet-class\": \"org.cofax.cms.CofaxToolsServlet\", \"init-param\": { \"templatePath\": \"toolstemplates/\", \"log\": 1, \"logLocation\": \"/usr/local/tomcat/logs/CofaxTools.log\", \"lo
(ns scheduler.devcards.omnexttest
(:require
[devcards.core]
[om.next :as om :refer-macros [defui ui]]
[om.dom :as dom :include-macros true])
(:require-macros
[devcards.core :as dc :refer [defcard defcard-doc defcard-om-next noframe-doc deftest dom-node]]))
(defcard-doc
"## Navigation with Toggle
@ThomasDeutsch
ThomasDeutsch / core.cljs
Last active November 26, 2015 11:14
why is the reader called twice, after the query params get modified?
(defmulti read om/dispatch)
(defmethod read :input-handler
[{:keys [query state]} k {:keys [query]}]
(println "read: input-handler")
(let [st @state]
{:value {:input-handler (clojure.string/join [query "+X"]) }}))
(defui SomeInput