<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="370663" data-post-id="370663">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="bradley" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/bradley/120/25949_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  bradley
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I personally use tidewave, ash_ai and usage_rules. I also use my hexdocs_mcp project which you’re welcome to try out, though if you’re not running mac it might not work well for you.</p>
<p>I’m not sure how I feel about Serena MCP TBH, haven’t used it and after glancing the project, I don’t really see a need to use it for my personal use case.</p>
<p>I’ve been thinking it would be nice to support context7 via the project since it’s remote by default. I just think it’s important to have hooks to ensure claude is looking up dependency versions that your project uses. This is something probably worth adding to the project now that I think about it.</p>
<p>I agree PhoenixTest is great but yes, Claude is really bad at writing code for that library so lookups of some form are 100% required from my experience.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="370663" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/claude-opinionated-claude-code-integration-for-elixir/71831/12">Post #11</a>
	                </div>
	            </div>
              <div id="likers-container-370663" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="370663"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #11"></div>
  </section>
</div>
    <div class="postbit" id="370679" data-post-id="370679">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="dogweather" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dogweather/120/1906_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  dogweather
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I recently asked Claude Code to add a stanza to <code>CLAUDE.md</code> “to ensure testing compliance by AI assistants”. (Of course, I was talking about it, but it pretended not to notice.) I’ll report back on whether CC actually follows its own directive.</p>
<p>Here’s what it added:</p>
<hr>
<h2><a name="p-370679-critical-completion-requirement-1" class="anchor" href="#p-370679-critical-completion-requirement-1" aria-label="Heading link" rel="nofollow"></a><img src="https://forum.elixirforum.com/images/emoji/apple/police_car_light.png?v=15" title=":police_car_light:" class="emoji" alt=":police_car_light:" loading="lazy" width="20" height="20"> CRITICAL COMPLETION REQUIREMENT <img src="https://forum.elixirforum.com/images/emoji/apple/police_car_light.png?v=15" title=":police_car_light:" class="emoji" alt=":police_car_light:" loading="lazy" width="20" height="20"></h2>
<p><strong>BEFORE DECLARING ANY TASK FINISHED, YOU MUST:</strong></p>
<ol>
<li>
<p><strong>Run the complete quality check sequence iteratively until ALL issues are resolved:</strong></p>
<pre data-code-wrap="elixir"><code class="lang-elixir">mix test &amp;&amp; mix credo &amp;&amp; mix dialyzer
</code></pre>
</li>
<li>
<p><strong>Fix ALL issues found by each tool:</strong></p>
<ul>
<li><strong>Tests</strong> - All tests must pass (0 failures, 0 errors)</li>
<li><strong>Credo</strong> - All style/design issues must be resolved</li>
<li><strong>Dialyzer</strong> - All type warnings must be fixed</li>
</ul>
</li>
<li>
<p><strong>Repeat the sequence until clean:</strong></p>
<ul>
<li>If ANY tool reports issues, fix them and run the full sequence again</li>
<li>Only declare task complete when all three tools run clean</li>
<li><strong>NO EXCEPTIONS</strong> - this is mandatory for every code change</li>
</ul>
</li>
</ol> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="370679" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/claude-opinionated-claude-code-integration-for-elixir/71831/13">Post #12</a>
	                </div>
	            </div>
              <div id="likers-container-370679" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="370679"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #12"></div>
  </section>
</div>
    <div class="postbit" id="370709" data-post-id="370709">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="bradley" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/bradley/120/25949_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  bradley
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>From my experience putting this kind of logic in CLAUDE.md isn’t deterministic. Claude will sometimes decide to run tests and sometimes not which is exactly why I created this project. <img src="https://forum.elixirforum.com/images/emoji/apple/blush.png?v=15" title=":blush:" class="emoji" alt=":blush:" loading="lazy" width="20" height="20">  Have you looked at <a href="https://docs.anthropic.com/en/docs/claude-code/hooks-guide" rel="noopener nofollow ugc">hooks</a>? I’m actively working on making it easier to create hooks within a project through this library. Stay tuned!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="370709" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/claude-opinionated-claude-code-integration-for-elixir/71831/14">Post #13</a>
	                </div>
	            </div>
              <div id="likers-container-370709" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="370709"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #13"></div>
  </section>
</div>
    <div class="postbit" id="370782" data-post-id="370782">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="siraj-samsudeen" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/siraj-samsudeen/120/38735_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  siraj-samsudeen
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Bradely,<br>
I postponed the task because I thought it would take me a lot of time. But finally when I went to the GH repo, I found that all I have to is <code>mix claude.install</code> - I could NOT believe it as I thought that I was reading it wrong, but I did as proposed and igniter told me that it is gonna update the settings with the mcpservers and also update CLAUDE.md to sync usage rules - Sweet.<br>
After I did it, I checked <code>\mcp</code> and I saw that tidewave is listed. Thank you so much.<br>
Then I asked claude about the hooks in my project and it listed the 3 hooks - then I did as per your getting started instructions: to create user_service.ex and it was NOT formatted and VSCode showed a popup with this error - what is going wrong? This project is a project based on the latest liveview book by Chris &amp; co - so it has very little real code and no custom settings. It is as close to bare-bones as it could get.</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">Unable to find formatter for /Users/siraj/Desktop/NonDropBoxProjects/elixir-learning/pento/lib/user_service.ex: "** (Code.LoadError) could not load /Users/siraj/Desktop/NonDropBoxProjects/elixir-learning/pento. Reason: eisdir\n (elixir 1.18.4) lib/code.ex:2219: Code.find_file!/2\n (elixir 1.18.4) lib/code.ex:1464: Code.eval_file/2\n (language_server 0.29.0) lib/language_server/mix_tasks/format.ex:604: Mix.Tasks.ElixirLSFormat.eval_file_with_keyword_list/1\n (language_server 0.29.0) lib/language_server/mix_tasks/format.ex:456: Mix.Tasks.ElixirLSFormat.eval_dot_formatter/2\n (language_server 0.29.0) lib/language_server/mix_tasks/format.ex:431: Mix.Tasks.ElixirLSFormat.formatter_for_file/2\n (language_server 0.29.0) lib/language_server/source_file.ex:296: ElixirLS.LanguageServer.SourceFile.formatter_for/4\n (language_server 0.29.0) lib/language_server/providers/formatting.ex:21: ElixirLS.LanguageServer.Providers.Formatting.format/5\n (language_server 0.29.0) lib/la...
</code></pre> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="370782" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/claude-opinionated-claude-code-integration-for-elixir/71831/15">Post #14</a>
	                </div>
	            </div>
              <div id="likers-container-370782" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="370782"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #14"></div>
  </section>
</div>
    <div class="postbit" id="370783" data-post-id="370783">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="siraj-samsudeen" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/siraj-samsudeen/120/38735_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  siraj-samsudeen
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>there is one more thing I want to bring to your notice, assuming it might be of some value to you (if not, please let me know so that I can avoid these kind of details next time)…</p>
<p>The following notices were printed - some of them were overlapping and even conflicting - so, a bit confusing. please take a look - do i need to do anything more to get the mcp server working? the tidewave line is already there in claude.exs but commented out - so, why can’t the installer just do it for me or change the notice to say to uncomment rather than add. in the add you have put that single command inside a map which was confusing to me as an elixir newbie. So, please consider if you can make it easier for beginners.</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">Notices:

* Claude hooks have been installed to .claude/settings.json
  Hook scripts generated in .claude/hooks/

  Enabled hooks:
    • Checks if Elixir files need formatting after Claude edits them
    • Checks for compilation errors after Claude edits Elixir files
    • Validates formatting, compilation, and dependencies before allowing commits

* Phoenix detected! To enable Tidewave MCP server, add the following to your .claude.exs file:

  %{
    mcp_servers: [:tidewave]
  }

  Or with a custom port:

  %{
    mcp_servers: [{:tidewave, [port: 5000]}]
  }

  Tidewave provides Phoenix-specific tools for working with your application.

* Syncing usage rules to CLAUDE.md...

  This will help Claude Code understand how to use your project's dependencies.

* Generated 1 subagent(s):

  • Meta Agent → .claude/agents/meta-agent.md

  Subagents are now available in Claude Code.
* Tidewave MCP server has been configured in .claude/settings.json

  Port: 4000
  Endpoint: http://localhost:4000/tidewave/mcp

  Tidewave integrates with your Phoenix application:
  1. Add to your deps in mix.exs: {:tidewave, "~&gt; 0.2.0"}
  2. Run: mix deps.get
  3. Configure in config/dev.exs (see Tidewave docs)
  4. Start your Phoenix server: mix phx.server
  5. MCP endpoint will be at: http://localhost:PORT/tidewave/mcp


* To format .claude.exs files, add ".claude.exs" to your formatter inputs:

      # .formatter.exs
      [
        inputs: [".claude.exs", "{mix,.formatter}.exs", "{config,lib,test}/**/*.{ex,exs}"]
      ]

  Then run `mix format` to apply the formatting.
</code></pre> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="370783" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/claude-opinionated-claude-code-integration-for-elixir/71831/16">Post #15</a>
	                </div>
	            </div>
              <div id="likers-container-370783" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="370783"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #15"></div>
  </section>
</div>
    <div class="postbit" id="370784" data-post-id="370784">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="siraj-samsudeen" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/siraj-samsudeen/120/38735_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  siraj-samsudeen
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hi bradley,</p>
<p>thanks for sharing the tools you use - after watching a lot of youtube videos and experimenting, I have the following mcp servers now:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">1. ash_ai      ✘ failed                               │
2. context7    ✔ connected                            │
3. playwright  ✔ connected                            │
4. serena      ✔ connected                            │
5. tidewave    ✔ connected
</code></pre>
<p>I find context7 helpful in a lot of projects - so I brought it along to see whether it would be helpful for PhoenixTest (I went to context7 and asked it to fetch the latest version of PhoenixTest 0.7.0 and it did).  I find playwright MCP to be very helpful as I ask Claude to visit the page after the work is done to verify it using playwright and even store the screenshots - for UI work, i check the screenshots first before even looking at the code.</p>
<p>I am still learning how best to use tidewave and ash_ai mcp - I followed the instruction to add ash_ai as mcp server using <code>claude mcp add --transport sse ash_ai http://localhost:4000/ash_ai/mcp</code> - is that wrong? for some reason, it is not connected - for me, it is not clear whether I need Ash AI if I already have tidewave - can you clarify what it provides and whether i should give some custom instructions to Claude to help it use both tools effectively?</p>
<p>Regarding Serena, here is the video that made me try it out - I am not really well-versed in this area, so, may I ask you to tell me whether it is worth it to install this mcp to use the language server and semantic search when looking up code or symbols rather than using grep:<br>
<a href="https://www.youtube.com/watch?v=wYWyJNs1HVk" rel="noopener nofollow ugc">Wait.. Claude Code is MADE Slow on Purpose? Heres How to Fix It - YouTube</a></p>
<p>here is reddit thread - <a href="https://www.reddit.com/r/ClaudeAI/comments/1lfsdll/try_out_serena_mcp_thank_me_later/" rel="noopener nofollow ugc">https://www.reddit.com/r/ClaudeAI/comments/1lfsdll/try_out_serena_mcp_thank_me_later/</a></p>
<p>Incidentally, when I went to that channel to pick up the URL, he had a video about hooks which really helped me understand your hooks and how they work - you might just want to reference it in your Readme somewhere for people to know how they work:</p>
<p><a href="https://www.youtube.com/watch?v=ytn0aXK2gzE" rel="noopener nofollow ugc">The Enforcer is HERE… Clean 99% of Your Claude Code Workflow - YouTube</a></p>
<p>In your hooks, I would like to have mix test also included - ideally, just one hook - that runs the formatting, compilation and test all in one go’ - would be great.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="370784" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/claude-opinionated-claude-code-integration-for-elixir/71831/17">Post #16</a>
	                </div>
	            </div>
              <div id="likers-container-370784" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="370784"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #16"></div>
  </section>
</div>
    <div class="postbit" id="370790" data-post-id="370790">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="cvkmohan" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/cvkmohan/120/39944_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  cvkmohan
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thanks <a class="mention" href="/u/siraj-samsudeen" rel="nofollow">@siraj-samsudeen</a>. Interesting info. I am a bit more curious about the serena MCP. You found any benefits after using it? I still did not use it - but - I felt it looks similar to <a href="https://github.com/topoteretes/cognee" class="inline-onebox" rel="noopener nofollow ugc">GitHub - topoteretes/cognee: Cognee is the open-source AI memory platform for agents. Give your AI agents persistent long-term memory across sessions with a self-hosted knowledge graph engine. · GitHub</a> Cognee. Essentially building a graph database with code - that will help the LLM in maintaining the context dynamic and relevant. I tried using Cognee - but - did not see much improvement either in the quality of code generated or the speed or reduction in number of tokens. I am curious about knowing your experience.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="370790" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/claude-opinionated-claude-code-integration-for-elixir/71831/18">Post #17</a>
	                </div>
	            </div>
              <div id="likers-container-370790" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="370790"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #17"></div>
  </section>
</div>
    <div class="postbit" id="370797" data-post-id="370797">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="siraj-samsudeen" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/siraj-samsudeen/120/38735_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  siraj-samsudeen
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>At a conceptual level, I understand that it uses semantic search instead of text-search which can be much faster and it also provided a language server protocol to Claude Code. 2 youtubers that I have watched claimed that it saved tokens a lot - I am not really concerned about tokens as my usage of my claude plan is very low. But I just wanted it to be faster. But it is still new for me to figure out whether it is value-add. That is why I thought of asking an experienced person like bradley who can judge whether MCP actually adds real value. Things like playwright and context7 have been very helpful to me personally.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="370797" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/claude-opinionated-claude-code-integration-for-elixir/71831/19">Post #18</a>
	                </div>
	            </div>
              <div id="likers-container-370797" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="370797"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #18"></div>
  </section>
</div>
    <div class="postbit" id="370827" data-post-id="370827">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="bradley" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/bradley/120/25949_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  bradley
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group quote-modified" data-username="siraj-samsudeen" data-post="15" data-topic="71831">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/siraj-samsudeen/48/38735_2.png" class="avatar"> siraj-samsudeen:</div>
<blockquote>
<p>Bradely,<br>
I postponed the task because I thought…</p>
</blockquote>
</aside>
<p>From that error it seems like more of an elixir ls thing which is related to the language server and not this project. Does that seem correct?</p>
<aside class="quote no-group quote-modified" data-username="siraj-samsudeen" data-post="16" data-topic="71831">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/siraj-samsudeen/48/38735_2.png" class="avatar"> siraj-samsudeen:</div>
<blockquote>
<p>there is one more thing I want to bring to your notice, assuming…</p>
</blockquote>
</aside>
<p>These details are great ty! I really appreciate the detailed/thorough feedback. I would encourage you to submit an issue in GitHub too so we can track issues there too. That would help me and other people who find the project elsewhere to contribute to the conversation.</p>
<p>RE the notices, yes that is confusing and definitely a bug! Again a GitHub issue would be much appreciated! <img src="https://forum.elixirforum.com/images/emoji/apple/folded_hands.png?v=15" title=":folded_hands:" class="emoji" alt=":folded_hands:" loading="lazy" width="20" height="20"></p>
<p>RE doing everything for you, yes I’m working towards that! It’s a process building out the automation to do all the things, I want to get there.</p>
<p>So my ideal is that when you run <code>mix claude.install</code> the following happens:</p>
<ul>
<li>All hooks are configured</li>
<li>All relevant MCP servers are setup</li>
<li>All subagents are setup</li>
<li>All usage rules are configured</li>
<li>All permissions are configured to allow common mix commands</li>
<li>All CLAUDE.md files are populated (including nested md files even but I need to implement this)</li>
<li>And all configuration specific to specific packages would also be set up, e.g. Ash would include <code>ash_ai</code> mcp server potentially and other relevant hooks that are specific to ash</li>
</ul>
<aside class="quote no-group quote-modified" data-username="siraj-samsudeen" data-post="17" data-topic="71831">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/siraj-samsudeen/48/38735_2.png" class="avatar"> siraj-samsudeen:</div>
<blockquote>
<p>Hi bradley,</p>
<p>thanks for sharing the tools you use - …</p>
</blockquote>
</aside>
<p>RE ash ai, I would strongly encourage you to join the Ash discord server, Zach and the community are very helpful there. They can provide support. Though about your specific issue, I would recommend using the mcp proxy for that mcp server. You can see the instructions in the docs I believe.</p>
<aside class="quote no-group" data-username="siraj-samsudeen" data-post="17" data-topic="71831">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/siraj-samsudeen/48/38735_2.png" class="avatar"> siraj-samsudeen:</div>
<blockquote>
<p>In your hooks, I would like to have mix test also included - ideally, just one hook - that runs the formatting, compilation and test all in one go’ - would be great.</p>
</blockquote>
</aside>
<p>This is a great idea. The ability to run everything in one go makes a lot of sense! I think what I want to support both out of the box and make it configurable is a mix task style hook that allows you to turn any mix task into a hook easily.</p>
<p>Here are my current thoughts around the types of hooks that I want:</p>
<ul>
<li>Mix task hooks - Allow running any abitrary mix task either one or many maybe? This could be any mix task in your project.</li>
<li>Mix run hooks (less safe) - Allow using <code>mix run ...</code> to hook into your application if you want to. This enables you to run hooks that are application specific or even business logic specific.</li>
</ul> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="370827" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/claude-opinionated-claude-code-integration-for-elixir/71831/20">Post #19</a>
	                </div>
	            </div>
              <div id="likers-container-370827" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="370827"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #19"></div>
  </section>
</div>
    <div class="postbit" id="370875" data-post-id="370875">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="bradley" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/bradley/120/25949_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  bradley
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Example of the new syntax I’m experimenting with (<a href="https://github.com/bradleygolden/claude/pull/81/files#diff-174a909a570dab30a373349e303a71803a9ab273050746396aad2039861fc97bR274-R316" rel="noopener nofollow ugc">link</a>):</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">hooks: %{
    stop: [
      %{
        id: :elixir_quality_checks_stop,
        tasks: [
          "format --check-formatted",
          "compile --warnings-as-errors",
          "deps.unlock --check-unused",
          "test --stale"
        ]
      }
    ],
    post_tool_use: [
      %{
        id: :elixir_quality_checks,
        matcher: [:write, :edit, :multi_edit],
        tasks: [
          "format --check-formatted {{tool_input.file_path}}",
          "compile --warnings-as-errors"
        ]
      },
      %{
        id: :related_files_check,
        matcher: [:write, :edit, :multi_edit],
        tasks: [
          "claude.hooks.related_files"
        ]
      }
    ],
    pre_tool_use: [
      %{
        id: :pre_commit_validation,
        # Match git commit commands (but not with --no-verify)
        matcher: "Bash(git commit:*)",
        tasks: [
          "format --check-formatted",
          "compile --warnings-as-errors",
          "deps.unlock --check-unused",
          "test --stale"
        ]
      }
    ]
  }
</code></pre>
<p>I’d really appreicate your feedback!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="370875" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/claude-opinionated-claude-code-integration-for-elixir/71831/21">Post #20</a>
	                </div>
	            </div>
              <div id="likers-container-370875" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="370875"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #20"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/71831/load_more?page=3">Load more posts (6 remaining)</a>
</div></template></turbo-stream>