# pull_requests

title: Update README.md
body: Miss Click?
author: YourPCChris
author_url: https://github.com/YourPCChris
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/12
merged_at: 2024-02-01 04:59:41+00:00
created_at: 2025-07-16 04:25:34
commits:
  [{"SHA":"ce41a2788da7c53240cc83f931f3e6e75b21f667","Message":"Update README.md\n\nMiss Click?","Author":"Christopher Bennett"}]


title: Bugfix/install
author: sbehrens
author_url: https://github.com/sbehrens
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/14
merged_at: 2024-02-01 04:58:49+00:00
created_at: 2025-07-16 04:25:34
body:
  Fixes a missing dependency on the requirements for API server, and fixes a bug with how API keys are set within the client. 

commits:
  [{"SHA":"9951bd792dd31ee158b53f55847f95e094f6f41e","Message":"adds missing requirement flask","Author":"Scott Behrens"},{"SHA":"d85691e2578220930dd410d218addf19991f04e5","Message":"fixes apikey bug in client code","Author":"Scott Behrens"}]


title: Fix typo in Markdown bold
author: eliot-akira
author_url: https://github.com/eliot-akira
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/20
merged_at: 2024-02-02 03:03:59+00:00
created_at: 2025-07-16 04:25:34
body:
  This PR fixes a typo in `README.md` where the Markdown syntax for **bold** was shown as **bold\*\*.

  Before:

  ![Screenshot 2024-02-01 at 14-06-11 eliot-akira_fabric fabric is an open-source framework for augmenting humans using AI](https://github.com/danielmiessler/fabric/assets/5352434/ba105e81-0491-40e2-acfe-77ea45e49cda)

  After:

  ![Screenshot 2024-02-01 at 14-08-32 eliot-akira_fabric at fix-markdown-typo](https://github.com/danielmiessler/fabric/assets/5352434/49904d24-dce7-43f0-94dc-357e01e08fc7)

  ---

  Maybe this was intentional in the original text, since the latter two asterisks were escaped, but it seemed inconsistent with the rest of the text where all bold text are actually bold without using `**` literally.

  Anyway, I love the concept behind `fabric`, looking forward to learning more and following the project grow.

commits:
  [{"SHA":"ec32390f05419812e8d1baee84a2f27d5848ce71","Message":"Fix typo in Markdown bold","Author":"eliot-akira"}]


title: adds python's gitignore for common files and removes py chaches
author: agu3rra
author_url: https://github.com/agu3rra
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/26
merged_at: 2024-02-03 22:41:58+00:00
created_at: 2025-07-16 04:25:34
body:
  The intent of this PR is to ensure commonly uploaded cache files and others while packaging a python app locally don't get committed to source control as they don't really provide any value.

  In addition, perhaps cached `*.pyc` could potentially be used to reverse engineer what is stored locally and perhaps even leak secrets despite the fact none are present in GIT at this point (but I am just speculating here).

commits:
  [{"SHA":"e3bd01834e0c578e0b240dfc4f68fe2e08e0ecfa","Message":"adds python's gitignore for common files and removes py chaches","Author":"agu3rra"},{"SHA":"2a00ac43a7351f0451d555ed497f13e83f2614ba","Message":"removes .venv from gitignore as it appears to be used on purpose","Author":"agu3rra"}]


title: Update .gitignore and fabric server IP configurations
author: waynespa
author_url: https://github.com/waynespa
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/33
merged_at: 2024-02-05 00:21:58+00:00
created_at: 2025-07-16 04:25:34
body:
  This PR proposes the following small fixes/changes

  1. Change the `fabric_web_server`and `fabric_api_server` default IP to `127.0.0.1`

  2. Add `.venv/` to `.gitignore`

  3. Change shebang in `client/p.py` to standard `#!/usr/bin/env python3`

commits:
  [{"SHA":"0be94ee1b5f76eb035cd4f2e0b863d651cfe17a9","Message":"Update .gitignore and server configurations","Author":"Wayne"}]


title: Update README.md
body: Fix typo in one of the code examples
author: youssseeef
author_url: https://github.com/youssseeef
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/34
merged_at: 2024-02-05 00:21:28+00:00
created_at: 2025-07-16 04:25:34
commits:
  [{"SHA":"c3eafe5af5efe73f1bed3cdf9de9c49f6fc28b80","Message":"Update README.md\n\nFix typo in one of the code examples","Author":"Youssef Salama"}]


title: Remove virtual env
author: cwhuang119
author_url: https://github.com/cwhuang119
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/35
merged_at: 2024-02-05 23:50:40+00:00
created_at: 2025-07-16 04:25:34
body:
  1. add "client/source/" and "client/.zshrc" to .gitignore
  2. remove "client/source/" and "client/.zshrc"

  regarding to #30 

commits:
  [{"SHA":"22fd0ade60119698cf01a4fa8daa7a7cb829d925","Message":"add: add virual env ignore in client's","Author":"cwhuang119"},{"SHA":"1711eeeb7a6c16c3a06006106bf8a9f2b806eed2","Message":"remove: virtual env source folder and .zshrc","Author":"cwhuang119"}]


title: use jwt auth
author: u66u
author_url: https://github.com/u66u
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/36
merged_at: 2024-02-08 20:02:12+00:00
commits: [{"SHA":"0dd7d1dc9d0e7ef0a84377cfa08ab4c0573657f4","Message":"use jwt auth","Author":"technicca"}]
created_at: 2025-07-16 04:25:34
body:
  1. Add jwt token authentication that automatically includes and verifies headers in fabric_web_server.send_request
  2. Add /register and /login endpoints
  3. In fabric_web_interface/templates/index.html add a few helper buttons


title: Update README.md - fix contributor URLs
body: Headshot for Daniel linked to Scott, and vice versa.
author: clintgibler
author_url: https://github.com/clintgibler
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/39
merged_at: 2024-02-05 23:49:32+00:00
created_at: 2025-07-16 04:25:34
commits:
  [{"SHA":"0e0968c4a95f89563a7132ca0a27306b986b7856","Message":"Update README.md - fix contributor URLs\n\nHeadshot for Daniel went to Scott, and vice versa.","Author":"Clint Gibler"}]


title: CLI Model - ModelList New Args
author: Gilgamesh555
author_url: https://github.com/Gilgamesh555
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/43
merged_at: 2024-02-08 19:26:14+00:00
created_at: 2025-07-16 04:25:34
body:
  Changes.

  - Add new arg to CLI - model (-m --model) - which has the value `gpt-4-turbo-preview` by default
  - Add new arg to CLI - list_model (--listmodels) - gives all the current gpts availables to use and change it
  - ~Include the list of gpts availables statically, until found a way to get the API~
  - gpt model list now is shown based on user's model availability (user api key)

  Refer to issue: [Issue #41](https://github.com/danielmiessler/fabric/issues/41)

commits:
  [{"SHA":"086cfbc239bb472abc3f0c00bb7b66b5d841333c","Message":"add model and list-model to args","Author":"Gilgamesh555"},{"SHA":"a01a7b4cd35ce1010e9996efe92856411ed01469","Message":"Merge branch 'main' into cli-model-version","Author":"Gilgamesh555"},{"SHA":"5657eb4bf295e7f3c20e05bbd41721b207d0d5fc","Message":"update model list to api dynamic response based on user key","Author":"Gilgamesh555"}]


title: Correct the configuration to define alias in the shell
author: kkrusher
author_url: https://github.com/kkrusher
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/51
merged_at: 2024-02-08 19:24:29+00:00
created_at: 2025-07-16 04:25:34
body:
  In the configuration of the shell alias, the command is not working.
  I have
  - changed the position of single quotation marks 
  - changed fabric="/the/path/to/fabric/client" to fabric="/the/path/to/fabric/client/**fabric**"
  - changed .bashrc to **~/**.bashrc

commits:
  [{"SHA":"86d5738c9742daea2b9c2ea9aea722c4b01282e9","Message":"Correct the configuration to define alias in the shell","Author":"kkrusher"}]


title: Update system.md to use consistent formatting
author: TonyCardillo
author_url: https://github.com/TonyCardillo
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/53
merged_at: 2024-02-08 19:22:03+00:00
created_at: 2025-07-16 04:25:34
body:
  - Fixed Markdown mismatches 
  - added H1 headers to Steps and Output to make more consistent with other patterns
  - Removed "Open in Playground" since this is copy-paste artifact from OpenAI article

commits:
  [{"SHA":"d71c9ddb71fce9b49f7c5843c03d6b327c719610","Message":"Update system.md\n\nFixed Markdown mismatches and added H1 headers to Steps and Output to make more consistent with other patterns","Author":"Tony Cardillo MD"}]


title: added missing word to prompt instruction
body: This PR adds the word that appears to be missing from this system prompt.
author: agu3rra
author_url: https://github.com/agu3rra
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/55
merged_at: 2024-02-08 19:19:43+00:00
created_at: 2025-07-16 04:25:34
commits:
  [{"SHA":"b5f9ac97c18a286ef3234a5894539564d55a5e95","Message":"added missing word to prompt instruction","Author":"Andre Guerra"}]


title: [Snorkell.ai] Please review the generated documentation
author: sumansaurabh
author_url: https://github.com/sumansaurabh
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/60
merged_at: 2024-02-08 19:01:28+00:00
created_at: 2025-07-16 04:25:34
body:
  This PR focuses exclusively on updating and refining the documentation throughout the codebase. There are no functional changes to the code itself.

  Changes:

  📜 Updated Docstrings: Ensured that all functions, classes, and modules have clear and informative docstrings in accordance with PEP 257.

  🧠 Smart Generation: Understands your code! Recognizes classes, functions, and generates crisp documentation.

  📜 Modified Files: Please review before merging.
  /server/fabric_api_server.py
  /server/fabric_web_interface/fabric_web_server.py
  /client/p.py
  /client/utils.py

  🙏 Request:
  Please review the changes to ensure that the documentation is clear, accurate, and adheres to our project's standards.
  Any feedback regarding areas that might still need clarification or additional details would be highly appreciated.

  Reference:
  Website: https://www.snorkell.ai
  GithubApp: https://github.com/apps/snorkell-ai

  Snorkell.ai is a Github app that automatically generates/updates docstring for your codebase.

commits:
  [{"SHA":"6061549fff36bfc41f8ec7814c718c98d61c1c75","Message":"test commit","Author":"snorkell-ai[bot]"},{"SHA":"1bcbe56d0687e9a1f278510682be21aa22d734b6","Message":"Merge pull request #1 from Snorkell-ai/snorkell_ai/auto_doc_2024-02-07-21-44\n\n[Snorkell.ai] Please review the generated documentation","Author":"Suman Saurabh"}]


title: Fix some typos and updates gitignore
author: jkogara
author_url: https://github.com/jkogara
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/61
merged_at: 2024-02-08 19:29:13+00:00
created_at: 2025-07-16 04:25:34
body:
  * Updated with the latest rebase.
  * Mostly typo fixes, will comment on anything that's not simply a typo fix.

commits:
  [{"SHA":"d0bb80233981718742c18d504471e162f192bf69","Message":"Fix some typos and updates gitignore","Author":"John O'Gara"}]


title: Poetry dependency management & `fabric` as a CLI (without python fabric.py)
author: agu3rra
author_url: https://github.com/agu3rra
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/65
merged_at: 2024-02-09 23:50:50+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this PR does
  - dependencies for the `fabric` cli are now managed via [poetry](https://python-poetry.org/).
  - `fabric` can be called directly as a CLI from the activated python virtualenv without the need to call it as `python fabric.py`.
  - updates Fabric CLI install instructions.
  - partially solves #27.
  - re-adds `.gitignore` to prevent unintended files from being pushed to source control.

  ## Why so big?
  - `Poetry.lock` maintains the hashes of all actually resolved dependencies. It's generated when one installs dependencies with `poetry add foo` automatically.

  ## What's in it for this project
  - Deterministic dependencies pull and reproducibility: Since dependencies are resolved, locked and committed to source control, collaborators of this project can work on the same exact Python environment regardless of which OS they use and when they pulled dependencies.
  - Isolated packages: Poetry helps avoid version conflicts in Python files and projects by isolating packages from the OS.
  - Single configuration file: Poetry uses a `pyproject.toml` file to manage all dependencies, replacing multiple files like `setup.py`, `requirements.txt`, `setup.cfg`, and `Pipfile`.
  - Accessible project metadata: Project metadata is easy to access and understand from the `pyproject.toml` file.

  ## What will the install actually look like
  ![Screenshot 2024-02-04 081542](https://github.com/danielmiessler/fabric/assets/10410523/be4e7549-61e6-4a50-9304-25726db802c4)

  ## What's next:
  Do this for the Flask server app if accepted.

commits:
  [{"SHA":"688886451f8bf942a7ac610107302495314e0bd0","Message":"fabric as a CLI; poetry for dep management with latest versions; gitignore re-added","Author":"agu3rra"}]


title: Update utils.py - This is a utility function standalone.get_cli_input()
body: This function adds compatibility to Visual Studio Community edition.
author: DuckPaddle
author_url: https://github.com/DuckPaddle
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/70
merged_at: 2024-02-11 03:55:24+00:00
created_at: 2025-07-16 04:25:34
commits:
  [{"SHA":"8fad5a12a0a68a87d04db50c542260b01ea6aef4","Message":"Update utils.py - This is a utility function standalone.get_cli_input()\n\nThis function adds compatibility to Visual Studio Community edition.","Author":"George Mallard"},{"SHA":"7ce6d7102f144cee3dbfa5a9c7d351ed281844ac","Message":"Update fabric.py to work with standalone.get_cli_input()\n\nFor compatibility with Visual Studio Community Edition","Author":"George Mallard"}]


title: feat: mapping path and pattern in the dictionary
author: dheerapat
author_url: https://github.com/dheerapat
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/74
merged_at: 2024-02-11 03:53:51+00:00
created_at: 2025-07-16 04:25:34
body:
  Here I added path and pattern mapping dictionary in the server code. This will allow the milling function more dynamic and can be easily scale as mention in #52 #64 #44 

  This is not breaking change, if you try to send a HTTP call to `/extwis` you can still do it. I also add more path, `/summarize` that use summarize pattern in the pattern directory, without changing anything in the milling function.

commits:
  [{"SHA":"31c501cb64abc3fa8bc293d2f35a43ae6150514b","Message":"feat: mapping path and pattern in the dictionary, allowing to scale the pattern \"The Mill\" server can use easily","Author":"Dheerapat Tookkane"},{"SHA":"82bf1fb27a668e44721eede0d424429de1cab0c1","Message":"chore: typo","Author":"Dheerapat Tookkane"}]


title: Fix steps to install
author: Endogen
author_url: https://github.com/Endogen
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/75
merged_at: 2024-02-11 03:53:22+00:00
created_at: 2025-07-16 04:25:34
commits:
  [{"SHA":"7d7f02e0af6bffd411320d0220b2b7feec62cfdb","Message":"Fix steps to install","Author":"Endogen"}]


title: poetry dependency management for server app + instructions
author: agu3rra
author_url: https://github.com/agu3rra
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/80
merged_at: 2024-02-11 18:17:40+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this PR does
  - adds python [poetry](https://python-poetry.org/) for managing project dependencies
  - adds instructions on how to issue the now `fabric-api` and `fabric-webui` commands for spawning these apps locally as web servers.
  - local resources now consumed internally from the python package (e.g.: `users.json` etc).

  ![Screenshot 2024-02-11 104521](https://github.com/danielmiessler/fabric/assets/10410523/b86f0e73-ffc0-4c8a-a9d1-09c05ae151c2)

  ---

  @danielmiessler 
  There were not much clear instructions on how the `server` thingy is meant to be used and my understanding from looking at the code is that there are 2 distinct Flask apps, one for the backend and another for the web-interface. I packaged them under the same poetry project, but I'd probably have created distinct folders for the backend and webui myself. I didn't do it now as I didn't want to suggest a bigger change than this already is, but if you feel it'd be valuable I can either make that on a subsequent PR or even add this change to this PR.

  The folder structure for the `server` folder would look like this then:
  ```
  server
     webui
     api
  ```

  Cheers!

commits:
  [{"SHA":"14d4f8c1690b89d640f2f2b506f8d5b056a039ca","Message":"poetry for server app; readme instructions added","Author":"agu3rra"},{"SHA":"b00d3d286df75ffb88dc75c86fb7b2a32481c3fe","Message":"pushes readme updates","Author":"agu3rra"},{"SHA":"1971f4832d443c42e4d6e567e5f9b49acddf578f","Message":"adds meta back","Author":"agu3rra"}]


title: Update utils.py with a class to transcribe YouTube Videos
author: DuckPaddle
author_url: https://github.com/DuckPaddle
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/83
merged_at: 2024-02-11 18:17:23+00:00
created_at: 2025-07-16 04:25:34
body:
  Added Class Transcribe with method youtube which accepts a video id as a parameter.  Returns the transcript.

commits:
  [{"SHA":"e0683024c14d19a5928783a3c26e35c7df64942e","Message":"Update utils.py with a class to transcribe YouTube Videos\n\nAdded Class Transcribe with method youtube which accepts a video id as a parameter.  Returns the transcript.","Author":"George Mallard"}]


title: Update README.md
body: Clarified a line in the readme
author: lmccay
author_url: https://github.com/lmccay
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/84
merged_at: 2024-02-11 18:53:15+00:00
created_at: 2025-07-16 04:25:34
commits:
  [{"SHA":"0b9017ccd2292b4d044d943f6c7baca0929a3ec3","Message":"Update README.md\n\nClarified a line in the readme","Author":"lmccay"}]


title: Multiple changes: single poetry project; Bash script for creating `aliases`; updated instructions
author: agu3rra
author_url: https://github.com/agu3rra
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/88
merged_at: 2024-02-16 22:37:16+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this PR does
  - We now use a single Python Poetry project to manage all 3 python specific command line applications: `fabric`, `fabric-api`, and `fabric-webui`.
  - Creates `setup-aliases.sh` to facilitate the addition of such commands as aliases in Unix-based systems. The goal is that users can run the commands without being in the active Python virtual environment created by Poetry.
  - Updates main `README.md` install instructions.
  - Redirects CLI install specific instructions to the corresponding section on the main `README.md` file so we don't have to maintain them in both locations.
  - Reorganizes project's folder structure. I feel like we better keep things separate. The fact we have our newly created `npm`-based gui inside the same folder feels a bit weird to me. Perhaps we can move it in the next iteration?

  ## Screens
  Running the commands outside of the poetry environment.

  ![Screenshot 2024-02-11 213618](https://github.com/danielmiessler/fabric/assets/10410523/8570e539-17f7-49fb-babb-8a24a46b7594)

  ---

  Running the alias creation bash script multiple times.

  ![Screenshot 2024-02-11 221446](https://github.com/danielmiessler/fabric/assets/10410523/3c0154b2-2c4b-486c-8c61-f413849e754e)

commits:
  [{"SHA":"041ae024db1cc1ab28c136aeca894d6fed656ef9","Message":"single poetry project; script to create aliases in bash and zsh; updates readme","Author":"agu3rra"},{"SHA":"90fdd2a313a36a0ee2ed30b351b129b6f2a4a1de","Message":"redirects redundant instruction on CLI to main readme","Author":"agu3rra"},{"SHA":"747324266a0d1f946d42b6e3e091252c7aba955b","Message":"readded the client folder to the structure","Author":"agu3rra"},{"SHA":"4be6ed9386b364b3d741543da3e0fe8336104f92","Message":"merging upstream main and solving conflict","Author":"agu3rra"},{"SHA":"bd913c626b8aaf813b91dfbf661ab9090013de94","Message":"conflicts solved","Author":"agu3rra"},{"SHA":"f0255d2d6ef2090424a9f5c80759c13f5b4acc02","Message":"Merge branch 'main' into single.poetry","Author":"agu3rra"},{"SHA":"2b48e564f11dc5b2703357acaa3b3655c1fcb3cb","Message":"renames fabric folder into fabric_installer","Author":"agu3rra"},{"SHA":"0401f6e7a78d104c3c901e0f15e13cff536d7671","Message":"updates readme","Author":"agu3rra"},{"SHA":"1971936a615321522675af7870eead59343c5342","Message":"no need to enter installer folder","Author":"agu3rra"},{"SHA":"d02053a7482bafeb83d859d42e28902a4b295186","Message":"renamed package to installer while keeping poetry project as fabric","Author":"agu3rra"},{"SHA":"a043aaaef8f08665369f3e8cd6de9fa03199b3c8","Message":"incorporates poetry install and dep setup on a single script","Author":"agu3rra"},{"SHA":"5aa77d89af65af57872518655eede8c95c1190eb","Message":"single script install instructions added on readme","Author":"agu3rra"},{"SHA":"fcc707ab27fa3e0d4a2055912717a86f78c380af","Message":"updates install instructions after naked debian test","Author":"agu3rra"},{"SHA":"4c14d1a19cb5b64d31a3fa3edb24f8cab6084fe8","Message":"removes echo","Author":"agu3rra"},{"SHA":"94ea09506123c24703ec0e3555c6161387106ae9","Message":"typo","Author":"agu3rra"},{"SHA":"561ea090cb27e93949ad5160deec6d173e1687c4","Message":"bash_profile added to aliases","Author":"agu3rra"},{"SHA":"cb3afa018b31808a905eec51ab8650837625c76e","Message":"new line so that aliases are appended on new lines","Author":"agu3rra"},{"SHA":"a3f515bc2c5a749e4f26fb7378b4823571ca99eb","Message":"missing a reference on readme","Author":"agu3rra"}]


title: #86 Clarify README Instructions
body: #86 Clarify README Instructions
author: lmccay
author_url: https://github.com/lmccay
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/90
merged_at: 2024-02-12 07:01:57+00:00
created_at: 2025-07-16 04:25:34
commits:
  [{"SHA":"1e68a0e0657373493b039e6b539e35ea1c5c0d94","Message":"Update README.md\n\n#86 Clarify the Instructions in the README","Author":"lmccay"},{"SHA":"3313543437d9c8643a34201208a58447e6f712cf","Message":"Merge pull request #1 from lmccay/lmccay-patch-1\n\n#86 Update README.md","Author":"lmccay"},{"SHA":"a2044d69204b6b04528289cbce80fb019edc3d78","Message":"Merge branch 'danielmiessler:main' into main","Author":"lmccay"}]


title: Add patterns
author: dfinke
author_url: https://github.com/dfinke
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/91
merged_at: 2024-02-13 01:57:52+00:00
created_at: 2025-07-16 04:25:34
body:
  - Add user story and acceptance criteria for agility story patterns
  - Add compare and contrast system and user patterns

commits:
  [{"SHA":"b1df61fc3f2e2004ea5c769417e41cde36d3e666","Message":"Add user story and acceptance criteria for agility story patterns","Author":"dfinke"},{"SHA":"f011aee14c5a7bd4c6eb26f60cd4c7cfd6525132","Message":"Add compare and contrast system and user patterns","Author":"dfinke"}]


title: Update utils.py to get_cli_input Line 192
body: Changed sys.stdin.readline().strip() to sys.stdin.read().strip() to allow multiple line input.
author: DuckPaddle
author_url: https://github.com/DuckPaddle
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/92
merged_at: 2024-02-13 01:55:00+00:00
created_at: 2025-07-16 04:25:34
commits:
  [{"SHA":"e998099024103a9fe114f01c6658dda88e8bc593","Message":"Update utils.py to get_cli_input Line 192\n\nChanged sys.stdin.readline().strip() to sys.stdin.read().strip() to allow multiple line input.","Author":"George Mallard"}]


title: Update system.md
body: Fixed a typo.
author: sleeper
author_url: https://github.com/sleeper
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/95
merged_at: 2024-02-13 01:59:08+00:00
created_at: 2025-07-16 04:25:34
commits:
  [{"SHA":"f3137ed7ff7168e03118ff9366e7518b852185c0","Message":"Update system.md\n\nFixed a typo","Author":"Frederick Ros"}]


title: Add 2 patterns
author: chroakPRO
author_url: https://github.com/chroakPRO
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/100
merged_at: 2024-02-16 22:31:00+00:00
created_at: 2025-07-16 04:25:34
body:
  Added 1 pattern (improve_writing) which improve the writing and returns it in the native language of the input

  Added 1 pattern (analyze_incident) which analyses incident articles and produces a neat and simple output (Taken from the YT Video that Daniel was in by David B

commits:
  [{"SHA":"47fdfcec1a37600f26bcb83dc1e95e71f7fbacc4","Message":"Add 2 patterns\n\nAdded 1 pattern (improve_writing) which improve the writing and returns it in the native language of the input\n\nAdded 1 pattern (analyze_incident) which analyses incident articles and produces a neat and simple output (Taken from the YT Video that Daniel was in by David B","Author":"Christopher Oak"}]


title: removes initialization of API keys from server
author: agu3rra
author_url: https://github.com/agu3rra
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/107
merged_at: 2024-02-16 23:49:24+00:00
created_at: 2025-07-16 04:25:34
body:
  The lines being removed didn't seem to be used in the server code and were causing errors on package initialization. I removed them.

commits:
  [{"SHA":"41fb7b2130830ad3f6af4ee6ad1f42b894000b1e","Message":"removes initialization of API keys from server","Author":"agu3rra"}]


title: fixes readme link on CLI instructions
body: Updates a broken link due to the latest folder reorg.
author: agu3rra
author_url: https://github.com/agu3rra
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/108
merged_at: 2024-02-16 23:56:38+00:00
created_at: 2025-07-16 04:25:34
commits:
  [{"SHA":"b4f4ce364c4f60da721f1dfe582d6600f020a7ba","Message":"fixes readme link on CLI instructions","Author":"agu3rra"}]


title: process enhancement: adds templates to the repo
author: agu3rra
author_url: https://github.com/agu3rra
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/111
merged_at: 2024-02-18 00:45:28+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  This PR adds a few templates to the repo to facilitate collaboration and communication with the community of contributors and users.

  ## Related issues
  Closes #109 

  ## Screenshots
  This is what it should look like after merged. Starting from the `New Issue` button under the `Issues` tab.
   
  ![Screenshot 2024-02-17 143333](https://github.com/danielmiessler/fabric/assets/10410523/ff45732c-828a-487d-98cf-636b634c3a56)

  ![Screenshot 2024-02-17 143404](https://github.com/danielmiessler/fabric/assets/10410523/66183d17-9274-485e-841f-d51ac3247c08)

  ![Screenshot 2024-02-17 143419](https://github.com/danielmiessler/fabric/assets/10410523/050adcb7-7ebb-41bc-9747-b0ed15286c1e)

  ![Screenshot 2024-02-17 143431](https://github.com/danielmiessler/fabric/assets/10410523/3c4dd454-542a-4ff1-beac-e9f4bb3b2a18)

commits:
  [{"SHA":"48bda7a4900b584c5a78d2eba43afdce972c4514","Message":"adds templates on the repo","Author":"agu3rra"}]


title: Removes stray .DS_Store file
author: fureigh
author_url: https://github.com/fureigh
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/114
merged_at: 2024-02-19 02:47:34+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Removes a lingering `.DS_Store` file that presumably preceded d0bb80233981718742c18d504471e162f192bf69.

  Thanks for all of your work on this project!

commits:
  [{"SHA":"9863573ff6d1eb7afc1a214d38fdbd14b7944eec","Message":"Remove stray .DS_Store file","Author":"Fureigh"}]


title: Makes a minor README edit for the sake of consistency
author: fureigh
author_url: https://github.com/fureigh
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/115
merged_at: 2024-02-19 02:47:05+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Changes `Create` to `Creating` for the sake of verb form consistency.

  ## Screenshots
  ### Before:
  <img width="621" alt="before-create" src="https://github.com/danielmiessler/fabric/assets/1244599/9ede9e3a-6c97-4d02-ac29-d2dfe3db3c73">

  ### After:
  <img width="622" alt="after-creating" src="https://github.com/danielmiessler/fabric/assets/1244599/78744bbb-0f49-402f-b466-7096e47d2146">

commits:
  [{"SHA":"5d984f3687e079a1aabc7bbb8c08a73e7d3e378e","Message":"Minor README edit for verb form consistency\n\nChange `Create` to `Creating`.","Author":"Fureigh"}]


title: Enhanced Setup Script Compatibility and Reliability Improvements
author: mikeprivette
author_url: https://github.com/mikeprivette
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/118
merged_at: 2024-02-20 17:22:29+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  This Pull Request introduces enhancements to the project's setup process, specifically targeting the `setup.sh` script and the installation instructions in `README.md`. The updates aim to improve compatibility across different operating systems and clarify the setup steps for users.

  ## Changes in `setup.sh`

  - **Cross-Platform Compatibility for sed**: Updated the `sed` command within the `setup.sh` script to ensure it operates correctly on both Linux and macOS, as well as other UNIX-like operating systems. This change addresses compatibility issues with the `sed -i` command's syntax between GNU sed (common in Linux) and BSD sed (default in macOS).
  - **Project Directory Verification**: Added a check for the `pyproject.toml` file within the current directory where `setup.sh` is executed. This ensures that the script is run from the correct location, addressing previous issues where the script would incorrectly look for the file in the user's home directory.
  - **Unified Home Directory Referencing**: Adjusted the method for specifying user home directory paths in `config_files` within the `setup.sh` script, shifting from `~` to `$HOME`. This change guarantees more consistent and dependable path resolution across diverse shells and execution environments, enhancing the script's reliability.
  - **Error Handling in Command Path Retrieval**: Incorporated error suppression in the command retrieval step `(CMD_PATH=$(poetry run which $cmd 2>/dev/null))` to minimize noise in the script's output. This adjustment prevents error messages from appearing when a command is not found within the current Poetry environment, facilitating a smoother and more user-friendly setup experience.
  - **Enhanced Sourcing Mechanism**: Modified the script to use a `source_commands` array instead of a single `source_command` string. This improvement enables the script to accumulate and suggest sourcing commands for multiple shell configuration files when they are modified rather than only suggesting the last updated file. This approach ensures that all relevant shell configurations are updated and sourced properly.

  ## Change in `README.md`

  - **Executable Script Instructions**: Included explicit instructions to make the `setup.sh` script executable. This step was previously assumed but not stated, which could lead to confusion or errors during the setup process for users unfamiliar with shell scripts.

  ## Related issues
  - [[Bug] setup.sh error on 'sed' command on macOS #119](https://github.com/danielmiessler/fabric/issues/119)

  ## Screenshots
  - N/A

commits:
  [{"SHA":"6dff639969a1b7c456c04c87b0145efa5c7e6f26","Message":"Updates\n\n- README.md - added instructions to make sure the setup.sh script was executable as this was not explicitly stated\n\n- setup.sh - updated sed to use `sed -i` to be compatible with Linux, MacOSX and other OS versions and added a check in the local directory taht setup.sh executes in for a pyproject.toml file because the script was looking for the .toml file in the user's home directory and throwing an error","Author":"Mike Privette"}]


title: Bump the pip group across 1 directories with 1 update
author: dependabot
author_url: https://github.com/apps/dependabot
author_type: bot
url: https://github.com/danielmiessler/Fabric/pull/125
merged_at: 2024-02-24 04:08:49+00:00
created_at: 2025-07-16 04:25:34
body:
  Bumps the pip group with 1 update in the /. directory: [cryptography](https://github.com/pyca/cryptography).

  Updates `cryptography` from 42.0.2 to 42.0.4
  <details>
  <summary>Changelog</summary>
  <p><em>Sourced from <a href="https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst">cryptography's changelog</a>.</em></p>
  <blockquote>
  <p>42.0.4 - 2024-02-20</p>
  <pre><code>
  * Fixed a null-pointer-dereference and segfault that could occur when creating
    a PKCS#12 bundle. Credit to **Alexander-Programming** for reporting the
    issue. **CVE-2024-26130**
  * Fixed ASN.1 encoding for PKCS7/SMIME signed messages. The fields ``SMIMECapabilities``
    and ``SignatureAlgorithmIdentifier`` should now be correctly encoded according to the
    definitions in :rfc:`2633` :rfc:`3370`.
  <p>.. _v42-0-3:</p>
  <p>42.0.3 - 2024-02-15
  </code></pre></p>
  <ul>
  <li>Fixed an initialization issue that caused key loading failures for some
  users.</li>
  </ul>
  <p>.. _v42-0-2:</p>
  </blockquote>
  </details>
  <details>
  <summary>Commits</summary>
  <ul>
  <li><a href="https://github.com/pyca/cryptography/commit/fe18470f7d05f963e7267e34fdf985d81ea6ceea"><code>fe18470</code></a> Bump for 42.0.4 release (<a href="https://redirect.github.com/pyca/cryptography/issues/10445">#10445</a>)</li>
  <li><a href="https://github.com/pyca/cryptography/commit/aaa2dd06ed470695de818405a982d4c459869803"><code>aaa2dd0</code></a> Fix ASN.1 issues in PKCS#7 and S/MIME signing (<a href="https://redirect.github.com/pyca/cryptography/issues/10373">#10373</a>) (<a href="https://redirect.github.com/pyca/cryptography/issues/10442">#10442</a>)</li>
  <li><a href="https://github.com/pyca/cryptography/commit/7a4d012991061974da5d9cb7614de65eac94f49b"><code>7a4d012</code></a> Fixes <a href="https://redirect.github.com/pyca/cryptography/issues/10422">#10422</a> -- don't crash when a PKCS#12 key and cert don't match (<a href="https://redirect.github.com/pyca/cryptography/issues/10423">#10423</a>) ...</li>
  <li><a href="https://github.com/pyca/cryptography/commit/df314bb182bdfd661333969a94325e4680d785f6"><code>df314bb</code></a> backport actions m1 switch to 42.0.x (<a href="https://redirect.github.com/pyca/cryptography/issues/10415">#10415</a>)</li>
  <li><a href="https://github.com/pyca/cryptography/commit/c49a7a5271178c6e8ef36fa1c499f62c63ec19b9"><code>c49a7a5</code></a> changelog and version bump for 42.0.3 (<a href="https://redirect.github.com/pyca/cryptography/issues/10396">#10396</a>)</li>
  <li><a href="https://github.com/pyca/cryptography/commit/396bcf64c5be826ec00e7d7f45838c858c049cbc"><code>396bcf6</code></a> fix provider loading take two (<a href="https://redirect.github.com/pyca/cryptography/issues/10390">#10390</a>) (<a href="https://redirect.github.com/pyca/cryptography/issues/10395">#10395</a>)</li>
  <li><a href="https://github.com/pyca/cryptography/commit/0e0e46f5f73f477b8ee9682738c42129d5d60177"><code>0e0e46f</code></a> backport: initialize openssl's legacy provider in rust (<a href="https://redirect.github.com/pyca/cryptography/issues/10323">#10323</a>) (<a href="https://redirect.github.com/pyca/cryptography/issues/10333">#10333</a>)</li>
  <li>See full diff in <a href="https://github.com/pyca/cryptography/compare/42.0.2...42.0.4">compare view</a></li>
  </ul>
  </details>
  <br />


  [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=cryptography&package-manager=pip&previous-version=42.0.2&new-version=42.0.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

  Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

  [//]: # (dependabot-automerge-start)
  [//]: # (dependabot-automerge-end)

  ---

  <details>
  <summary>Dependabot commands and options</summary>
  <br />

  You can trigger Dependabot actions by commenting on this PR:
  - `@dependabot rebase` will rebase this PR
  - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
  - `@dependabot merge` will merge this PR after your CI passes on it
  - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
  - `@dependabot cancel merge` will cancel a previously requested merge and block automerging
  - `@dependabot reopen` will reopen this PR if it is closed
  - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
  - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/danielmiessler/fabric/network/alerts).

  </details>

commits:
  [{"SHA":"e5e19d7937f9ec61d4c2b51c4947f10a138f38aa","Message":"Bump the pip group across 1 directories with 1 update\n\nBumps the pip group with 1 update in the /. directory: [cryptography](https://github.com/pyca/cryptography).\n\n\nUpdates `cryptography` from 42.0.2 to 42.0.4\n- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)\n- [Commits](https://github.com/pyca/cryptography/compare/42.0.2...42.0.4)\n\n---\nupdated-dependencies:\n- dependency-name: cryptography\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e","Author":"dependabot[bot]"}]


title: Alphabetically sort patterns list
author: arduino-man
author_url: https://github.com/arduino-man
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/129
merged_at: 2024-02-23 21:33:05+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Ensures that when the users lists the available patterns, they are presented in alphabetical order. Helps find the desired pattern faster.

  ## Related issues
  Please reference any open issues this PR relates to in here.
  If it closes an issue, type `closes #[ISSUE_NUMBER]`.
  N/A

  ## Screenshots
  Provide any screenshots you may find relevant to facilitate us understanding your PR.
  Before:
  ![Before](https://github.com/danielmiessler/fabric/assets/5546597/bfb9e346-2570-4640-9b66-81d481030221)

  After:
  ![After](https://github.com/danielmiessler/fabric/assets/5546597/c9e80c13-7409-4968-b63f-0b8de0eb1e9f)

commits:
  [{"SHA":"e5901b9f448939e1c871f3583a302e183ec6a7f7","Message":"Alphabetically sort patterns list\n\nEnsures that when the users lists the available patterns, they are presented in alphabetical order. Helps find the desired pattern faster.","Author":"arduino-man"}]


title: Add New "create_command" Pattern
author: lukewegryn
author_url: https://github.com/lukewegryn
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/141
merged_at: 2024-03-03 20:13:55+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  This adds a new "create_command" pattern that generates CLI commands for any locally installed tool (including appropriate options and switches) based on a description of what the user wants the tool to do. The user describes what the specified tool should do and the documentation from the "-h" help switch that most commands have. The pattern then acts as an individual who is reading the help documentation and selecting the correct options and switches to add to the command to achieve the specified goal. 

  For example, if the user wants to know how to run `sqlmap` under specific conditions, they may use `fabric` with the `create_command` pattern as follows (specify the tool, description of what the tool should do, and the help documentation via the "-h" switch for the tool):

  ```
  tool=sqlmap; echo -e "use $tool target https://example.com?test=id url, specifically the test parameter. use a random user agent and do the scan aggressively with the highest risk and level\n\n$($tool -h 2>&1)" | fabric --pattern create_command
  ```

  `fabric` responds with:

  ```
  python3 sqlmap -u https://example.com?test=id --random-agent --level=5 --risk=3 -p test
  ```

  The inspiration for this comes from penetration testing, where many CLI tools are used, but it can be difficult to remember all of the options and switches.

  Details and examples can be found in the README.

commits:
  [{"SHA":"4b1b76d7ca4da8238c1a939c36e2ea5d60d43dcb","Message":"Added create_command pattern\n\non-behalf-of: pensivesecurity luke@pensivesecurity.io","Author":"Luke Wegryn"},{"SHA":"0eb828e7db6faaa14bcc03cdfa4dba493e50783a","Message":"Updated typo in README\n\non-behalf-of: pensivesecurity luke@pensivesecurity.io","Author":"Luke Wegryn"}]


title: helper utility for saving a Markdown file
author: invisiblethreat
author_url: https://github.com/invisiblethreat
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/148
merged_at: 2024-03-13 23:09:36+00:00
created_at: 2025-07-16 04:25:34
body:
  `save` can be used to save a Markdown file, with optional frontmatter and additional tags. By default, if set, `FABRIC_FRONTMATTER_TAGS` will be placed into the file as it is written. These tags and front matter are suppressed from STDOUT, which can be piped into other patterns or programs with no ill effects. This strives to be a version of `tee` that is enhanced for personal knowledge systems that use frontmatter.

  ## What this Pull Request (PR) does
  Adds the `save` helper

  ## Related issues
  None. This is a new helper script.

  ## Screenshots
  ```shell
  $ grep FABRIC ~/.config/fabric/.env
  FABRIC_OUTPUT_PATH="~/obsidian/Fabric"
  FABRIC_FRONTMATTER_TAGS="fabric-extraction"

  $ ./save --h
  usage: save [-h] [-t, TAG] [-n] [stub]

  save: a "tee-like" utility to pipeline saving of content, while keeping the output stream intact. Can optionally generate "frontmatter" for PKM utilities like Obsidian via the
  "FABRIC_FRONTMATTER" environment variable

  positional arguments:
    stub                stub to describe your content. Use quotes if you have spaces. Resulting format is YYYY-MM-DD-stub.md by default

  options:
    -h, --help          show this help message and exit
    -t, TAG, --tag TAG  add an additional frontmatter tag. Use this argument multiple timesfor multiple tags
    -n, --nofabric      don't use the fabric tags, only use tags from --tag

  $ echo test | ./save --tag extra-tag stub-for-name
  test

  $ cat ~/obsidian/Fabric/2024-03-02-stub-for-name.md
  ---
  generation_date: 2024-03-02 10:43
  tags: fabric-extraction stub-for-name extra-tag
  ---
  test

  ```

commits:
  [{"SHA":"d2940323474679620f7ce11516156cfe5f200093","Message":"helper utility for saving a Markdown file\n\n'save' can be used to save a Markdown file, with optional frontmatter\nand additional tags. By default, if set, `FABRIC_FRONTMATTER_TAGS` will\nbe placed into the file as it is written. These tags and front matter\nare suppressed from STDOUT, which can be piped into other patterns or\nprograms with no ill effects. This strives to be a version of `tee` that\nis enhanced for personal knowledge systems that use frontmatter.","Author":"Scott Walsh"},{"SHA":"65829c5c841546262e063abda8b6522f129f6645","Message":"Update design pattern and docs","Author":"Scott Walsh"},{"SHA":"6bbb0a5f2f6482c47424f7c094393a7db0b3aaed","Message":"Use exception messages for a better chance at debugging","Author":"Scott Walsh"},{"SHA":"573723cd9a04c27bc70b69363076fa58091565ed","Message":"move usage block","Author":"Scott Walsh"},{"SHA":"4d36165db4373baa806ce40455f3c142caee07a2","Message":"Merge branch 'main' into output-saver","Author":"xssdoctor"}]


title: add language option to yt.py
author: ben0815
author_url: https://github.com/ben0815
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/158
merged_at: 2024-03-13 20:49:37+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Add a language option to helpers/yt.py to get a transcript in other languages.

  ## Related issues
  closes #134

  ## Screenshots
  no screenshots

commits:
  [{"SHA":"4c56fd786607400b52ffdfb51f23c9ed768f504d","Message":"add language option to yt.py","Author":"ben0815"}]


title: Fixed typo
body:
  ## What this Pull Request (PR) does
  Fixes a minor typo.

author: theorosendorf
author_url: https://github.com/theorosendorf
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/174
merged_at: 2024-03-12 17:30:16+00:00
created_at: 2025-07-16 04:25:34
commits:
  [{"SHA":"a4aa67899f03554a50ff7dfb8a4ff497a364f010","Message":"Fixed typo","Author":"Theo Rosendorf"}]


title: Create extract_all_quotes/system.md
author: CPAtoCybersecurity
author_url: https://github.com/CPAtoCybersecurity
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/176
merged_at: 2024-03-12 17:27:37+00:00
created_at: 2025-07-16 04:25:34
body:
  This modification of extract_wisdom is focused exclusively on quotes, with no cap on the number of quotes listed.  I find this pattern helpful for learning from amazing communicators like David Ogilvy from their biographies.

  ## What this Pull Request (PR) does
  This PR is to create a new fabric pattern called extract_all_quotes

  ## Related issues
  None.  This is the first PR I have made to any project and I'd wide open to feedback to ensure I follow the expected process.

  ## Screenshots
  None

commits:
  [{"SHA":"150a439d7871859a1b7a84d72329812a7f11c723","Message":"Create extract_all_quotes/system.md\n\nThis modification of extract_wisdom is focused exclusively on quotes, with no cap on the number of quotes listed.  I find this pattern helpful for learning from amazing communicators like David Ogilvy from their biographies.","Author":"CPAtoCybersecurity"},{"SHA":"aa7154b0cfe86cc2ef89b4b4a9781b4bb38e1426","Message":"Update system.md\n\nAdded \"aphorism\" and \"individuals quoted in their biographies\" to IDENTITY and PURPOSE.  I'm thinking of alternative pattern names like extract_all_aphorisms or extract_all_biography_quotes and welcome feedback.","Author":"CPAtoCybersecurity"}]


title: feat: Add additional Claude models
author: streichsbaer
author_url: https://github.com/streichsbaer
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/185
merged_at: 2024-03-12 17:24:29+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Currently, only the `Claude-3 Opus` model is supported by fabric.
  This PR adds `claude-3-sonnet-20240229` and `claude-2.1`, both support system prompts as required by fabric.

  This way there is more flexibility when using fabric with the Anthropic provider.

  ## Related issues
  As this is a quick add, I haven't created a dedicated issue for it.
  Happy to create one and link it, if required.

  ## Screenshots

  Example usage of `create_aphorisms` with Claude-2.1:

  <img width="981" alt="open-source-aphorisms-claude-2 1" src="https://github.com/danielmiessler/fabric/assets/5006784/4d72f79d-93c4-4f3d-980b-572b197a8449">

  Example usage of the same pattern with Claude-3 Sonnet:

  <img width="933" alt="open-source-aphorisms-claude-3-sonnet" src="https://github.com/danielmiessler/fabric/assets/5006784/601012ce-f0db-49e5-be23-67e8f6e2a475">

commits:
  [{"SHA":"ea0e6884b0471970f3a82b3121156e813ad6534f","Message":"Add supported Claude models","Author":"Stefan Streichsbier"}]


title: Added analyze_tech_impact pattern for assessing the impact of technology
author: WoleFabikun
author_url: https://github.com/WoleFabikun
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/186
merged_at: 2024-03-12 17:23:40+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  This PR adds a new pattern named analyze_tech_impact to the Fabric repository. This pattern is designed to help users systematically analyze the impact of technology on society, environment, ethics, and policy. It encourages a deep dive into the multifaceted effects of technological innovations, providing a structured approach to understand both the positive contributions and the potential risks of new technologies.

  ## Related issues
  None

  ## Screenshots
  None

commits:
  [{"SHA":"2acebfbf8238db39ccf9ff9a96919fa32aabea0c","Message":"Added analyze_tech_impact pattern for assessing the impact of technology","Author":"Wole Fabikun"}]


title: Assorted typo and spelling corrections.
author: brianteeman
author_url: https://github.com/brianteeman
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/188
merged_at: 2024-03-12 17:23:11+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Assorted typo and spelling corrections.

  ## Related issues
  n/a

  ## Screenshots
  n/a

commits:
  [{"SHA":"c7510c45c1b0b01f640905c1130fb1a1dc5eb2de","Message":"Assorted typo and spelling corrections.","Author":"BrianTeeman"}]


title: Add code to use openai_base_url and use OpenAI's model lister function
author: zestysoft
author_url: https://github.com/zestysoft
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/189
merged_at: 2024-03-12 17:11:02+00:00
created_at: 2025-07-16 04:25:34
body:
  I had some trouble running fabric locally due to some hard coded openai urls in the fetch_available_models functions which required having a valid OPENAI_API_KEY.

  This should let fabric communicate with other open_api compliant servers.

  I also threw in replacement code to use the model listing function that's included with the OpenAI class.

  Finally I've added some detail to the error messages if an exception is thrown while retrieving the list of models.

commits:
  [{"SHA":"8e871028ad870ab5488da55d538bc0168bf056af","Message":"Add code to use openai_base_url and use OpenAI's model lister function\n\nSigned-off-by: zestysoft \u003cian@zestysoft.com\u003e","Author":"zestysoft"},{"SHA":"cdde4b83076659467db7f14c49041b9c5100827c","Message":"Use safer method to get data from exception\n\nSigned-off-by: zestysoft \u003cian@zestysoft.com\u003e","Author":"zestysoft"}]


title: Minor typo in extract_predictions
author: krisgesling
author_url: https://github.com/krisgesling
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/192
merged_at: 2024-03-12 17:22:35+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Fix a minor typo in the extract_predictions pattern.

  ## Related issues
  None known.

commits:
  [{"SHA":"5d5c4b3074c9d42e9e0cebd7c67c8733ec5eed4e","Message":"Minor typo in extract_predictions","Author":"Kris Gesling"}]


title: Add code to use openai_base_url and use OpenAI's model lister function
author: zestysoft
author_url: https://github.com/zestysoft
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/199
merged_at: 2024-03-13 23:59:33+00:00
created_at: 2025-07-16 04:25:34
body:
  Looks like my previous pr got clobbered https://github.com/danielmiessler/fabric/pull/189#issuecomment-1992514728

commits:
  [{"SHA":"2188041f7b637d86126b8221b6224bfa8ce02e40","Message":"Add code to use openai_base_url and use OpenAI's model lister function\n\nSigned-off-by: zestysoft \u003cian@zestysoft.com\u003e","Author":"zestysoft"}]


title: Fix bug in sendMessage by moving code
author: meirm
author_url: https://github.com/meirm
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/203
merged_at: 2024-03-13 21:57:41+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Move code related to openai inside the try block
  Note: the current implementation of the code allows the use of copy and output only when using openai

  ## Related issues
  [Bug]: --copy parameter throwing an error #197

  ## Screenshots
  NA

commits:
  [{"SHA":"566ba8a7bf74cefe5d3395dec79f814ee815b5ab","Message":"Fix bug in sendMessage by moving code","Author":"Meir Michanie"}]


title: feat: Add support for Claude 3 Haiku
author: streichsbaer
author_url: https://github.com/streichsbaer
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/219
merged_at: 2024-03-14 03:41:22+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Anthropic has just released a new model Claude 3 Haiku.
  - https://www.anthropic.com/news/claude-3-haiku

  This PR adds support for it.

  ## Related issues
  It's a small change and there is no related issue.

  ## Screenshots
  ![open-source-aphorisms-claude-3-haiku](https://github.com/danielmiessler/fabric/assets/5006784/9fc4d5a6-29d0-4b92-b081-9ba045f2af9d)

commits:
  [{"SHA":"39633984cbebe9c3484b2c355f6738a072ce4278","Message":"Add support for Claude 3 Haiku","Author":"Stefan Streichsbier"}]


title: Fix the format in improve_writing and add improve_academic_writing
author: CuberMessenger
author_url: https://github.com/CuberMessenger
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/221
merged_at: 2024-03-14 03:41:52+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Fix the format in improve_writing (turn it into markdown) and add improve_academic_writing

  ## Related issues
  Please reference any open issues this PR relates to in here.
  If it closes an issue, type `closes #[ISSUE_NUMBER]`.

  ## Screenshots
  Provide any screenshots you may find relevant to facilitate us understanding your PR.

commits:
  [{"SHA":"35fa9f946f41349deaf4591e403e6b82a46ae750","Message":"change improve_writing prompt into md format","Author":"CuberMessenger"},{"SHA":"1cec9d4407c0587f8b063b82525a6090f2e2a260","Message":"fix grammar","Author":"CuberMessenger"},{"SHA":"86f2e29882d007545c9f53dc0ad858b2fa6fcf2e","Message":"fix grammar and add improve_academic_writing","Author":"CuberMessenger"},{"SHA":"fab3193653acffc319cb6a71e251b1a37a66cc88","Message":"fix grammar in improve_academic_writing","Author":"CuberMessenger"}]


title: New Port Scan Analysis Pattern (create_network_threat_landscape)
author: FlyingPhish
author_url: https://github.com/FlyingPhish
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/245
merged_at: 2024-03-14 18:52:00+00:00
created_at: 2025-07-16 04:25:34
body:
  New pattern named create_network_threat_landscape that takes two bullet point lists of port and service information (non-identifiable info) and creates a report finding that details the nature of identified ports/services, risks, and more.

  Output contains the following sections:

  - **Description**
  - **Risk**
  - **Recommendations**
  - **One-Sentence-Summary**
  - **Trends**
  - **Quotes**

  ## Example Usage w/o Using Nmap Analysis:
  _port-stats.txt_ **contains**:

  ### Port/Service Stats

  - 2x IPs had RTSP open
  - 40x IPs had HTTP open

  ### Overall statistics:

  - 18/24 Ports were 443/TCP
  - 8/24 Ports were 80/TCP

  **It should be noted that the only thing that matters is that the text you pass contains two bullet point lists of port and service information.**

  `cat port-stats.txt | fabric -sp create_network_threatlandscape`

  ### Example Usage Using Nmap Analysis:
  `./nmap-analysis.py fabric-report -gf nmap_output.xml`

  This will automatically parse, create and save.

  ## Example Output:
  ### Description

  The network port scan revealed a diverse range of open ports across multiple IPs, indicating a variety of services being utilized. Notably, common web service ports such as HTTP (80/TCP) and HTTPS (443/TCP) were open on several IPs, alongside more specialized services like RTSP, MSRPC, NETBIOS-SSN, and SSH. The presence of ports associated with specific applications or protocols, such as CMRCSERVICE, MS-WBT-SERVER, and LABRAT, suggests a complex network environment with potentially specialized use cases or services.

  ### Risk
  - Open ports like HTTP and HTTPS are standard for web services but can be vectors for web-based attacks if not properly secured.
  - Ports associated with administrative services (e.g., ZEUS-ADMIN, MS-WBT-SERVER) pose a high risk if exposed to the internet, as they can be targeted for unauthorized access.
  - The presence of UNKNOWN open ports indicates potential unauthorized or undocumented services running, which could be exploited by attackers.
  - Specialized service ports (e.g., RTSP, NETBIOS-SSN) require careful configuration and monitoring to prevent exploitation.
  - Ports like SSH (22/TCP) are essential for secure administration but can be a target for brute force attacks.

  ### Recommendations
  - Implement strict firewall rules to limit access to necessary services only.
  - Regularly update and patch all services running on open ports to mitigate known vulnerabilities.
  - Conduct a thorough review of UNKNOWN open ports to identify and document the services running on them.
  - Disable or restrict access to high-risk service ports (e.g., ZEUS-ADMIN, MS-WBT-SERVER) not required for business operations.
  - Enable logging and monitoring on all open ports to detect suspicious activities promptly.
  - Use strong, unique passwords and implement two-factor authentication for services like SSH.
  - Encrypt sensitive data in transit using protocols like HTTPS instead of HTTP where possible.
  - Conduct regular security assessments to identify and remediate potential vulnerabilities.
  - Educate staff about the risks associated with phishing and social engineering attacks targeting web services.
  - Implement an intrusion detection system (IDS) to monitor network traffic for signs of malicious activity.

  ### One-Sentence-Summary:

  Diverse open ports indicate varied services but pose security risks without proper management and security measures.

  ### Trends:

  - Increasing reliance on web-based services as indicated by the number of IPs with HTTP and HTTPS open.
  - The presence of both standard and specialized service ports suggests a complex network environment catering to varied needs.
  - The significant number of UNKNOWN open ports highlights the challenge of maintaining visibility and control over network services.
  - The use of both secure (HTTPS, SSH) and less secure (HTTP, NETBIOS-SSN) protocols reflects the ongoing transition towards enhanced security practices.
  - The distribution of ports across different TCP numbers indicates a wide range of applications and services being utilized within the network.

  ### Quotes:

  - "Open ports like HTTP and HTTPS are standard for web services but can be vectors for web-based attacks if not properly secured."
  - "Ports associated with administrative services pose a high risk if exposed to the internet."
  - "The presence of UNKNOWN open ports indicates potential unauthorized or undocumented services running."
  - "Specialized service ports require careful configuration and monitoring to prevent exploitation."
  - "Implement strict firewall rules to limit access to necessary services only."
  - "Regularly update and patch all services running on open ports to mitigate known vulnerabilities."
  - "Disable or restrict access to high-risk service ports not required for business operations."
  - "Use strong, unique passwords and implement two-factor authentication for services like SSH."
  - "Encrypt sensitive data in transit using protocols like HTTPS instead of HTTP where possible."
  - "Implement an intrusion detection system (IDS) to monitor network traffic for signs of malicious activity."

commits:
  [{"SHA":"8a84d5a5a3a81e648d573a8dc52437440dd79c39","Message":"New network_threat_landscape pattern to analyse port statistics created by FlyingPhish/Nmap-Analysis or provide two bullet point lists with port and service info.","Author":"FlyingPhishy"}]


title: Add pattern for writing pull request descriptions
author: PatrickRuddiman
author_url: https://github.com/PatrickRuddiman
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/247
merged_at: 2024-03-14 18:50:52+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Adds a pattern for writing pull request descriptions.

  ## Related issues
  The description of #225 was written using this pattern + `mistral:instruct`
  Ex:
  `git --no-pager diff main | fabric -sp write_pull-request --model mistral:instruct`

commits:
  [{"SHA":"290ebe01a133c5c1db21846b2ec349bf37b3374a","Message":"Add system.md file for writing pull requests","Author":"Patrick Ruddiman"}]


title: Webscraper
author: bthrx
author_url: https://github.com/bthrx
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/257
merged_at: 2024-03-16 16:36:15+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Created a helper for scrapping websites using beautiful soup to pipe into fabric.

commits:
  [{"SHA":"d4f4da26419f846b3e2a5b017a2414035d0bcd74","Message":"Add ws (Web Scraper) helper","Author":"bthrx"},{"SHA":"98814b462b56702aea53548b63e3968048cd4b45","Message":"changes to README.md about ws","Author":"bthrx"}]


title: modified yt to also accept urls via stdin
author: bthrx
author_url: https://github.com/bthrx
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/258
merged_at: 2024-03-16 16:33:51+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  adds the ability to pipe youtube video urls via stdin on yt helper

commits:
  [{"SHA":"164fe205de37a1ada826349370aac3e9cd399898","Message":"modified yt to also accept urls via stdin","Author":"bthrx"}]


title: Improved system.md to avoid pattern from being overridden by user input
author: Argandov
author_url: https://github.com/Argandov
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/259
merged_at: 2024-03-16 18:04:04+00:00
created_at: 2025-07-16 04:25:34
body:
  Additional instructions for Fabric to improve the prompt instead of overriding fabric's pattern with the input prompt.

  ## Issue this PR solves
  When we use the original `improve_prompt` pattern to improve a prompt by, for example `cat prompt_to_be_improved.md | fabric -p improve_prompt` , Fabric interprets the text of the prompt to be improved (User input) as the actual prompt instructions, and the result is Fabric's pattern being overridden by the user input (Which is itself a prompt, hence the confusion).

  ## How the issue is resolved
  I just included additional instructions at the end of the pattern's system.md to stop Fabric (OpenAI GPT LLM) from overriding the "pattern" with the user prompt

  ## Related issues
  No related open issues

  ## Screenshot of the issue

  ISSUE: In the following image, I have a poorly written prompt, and when I use fabric's pattern "improve_prompt", it takes my "bad prompt" as its actual prompt instructions, essentially overriding the pattern's system.md prompt:

  <img width="1324" alt="image" src="https://github.com/Argandov/fabric/assets/67169222/2219b836-438f-414a-a3bf-b379f253b614">

  FIX: Here is how my change solves the issue, and Fabric (OpenAI) takes the user input (A prompt), not as its instruction prompt, but as a prompt to be improved:

  <img width="1417" alt="image" src="https://github.com/Argandov/fabric/assets/67169222/42e93420-5174-4db0-a713-e8ae2a70fe4e">

commits:
  [{"SHA":"42d9fb6bd6c88784be9a5e53a22dbc9950e39d4c","Message":"Update system.md","Author":"Argandov"}]


title: Bump follow-redirects from 1.15.5 to 1.15.6 in /installer/client/gui
author: dependabot
author_url: https://github.com/apps/dependabot
author_type: bot
url: https://github.com/danielmiessler/Fabric/pull/261
merged_at: 2024-05-11 03:12:49+00:00
created_at: 2025-07-16 04:25:34
body:
  Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.5 to 1.15.6.
  <details>
  <summary>Commits</summary>
  <ul>
  <li><a href="https://github.com/follow-redirects/follow-redirects/commit/35a517c5861d79dc8bff7db8626013d20b711b06"><code>35a517c</code></a> Release version 1.15.6 of the npm package.</li>
  <li><a href="https://github.com/follow-redirects/follow-redirects/commit/c4f847f85176991f95ab9c88af63b1294de8649b"><code>c4f847f</code></a> Drop Proxy-Authorization across hosts.</li>
  <li><a href="https://github.com/follow-redirects/follow-redirects/commit/8526b4a1b2ab3a2e4044299377df623a661caa76"><code>8526b4a</code></a> Use GitHub for disclosure.</li>
  <li>See full diff in <a href="https://github.com/follow-redirects/follow-redirects/compare/v1.15.5...v1.15.6">compare view</a></li>
  </ul>
  </details>
  <br />


  [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=follow-redirects&package-manager=npm_and_yarn&previous-version=1.15.5&new-version=1.15.6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

  Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

  [//]: # (dependabot-automerge-start)
  [//]: # (dependabot-automerge-end)

  ---

  <details>
  <summary>Dependabot commands and options</summary>
  <br />

  You can trigger Dependabot actions by commenting on this PR:
  - `@dependabot rebase` will rebase this PR
  - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
  - `@dependabot merge` will merge this PR after your CI passes on it
  - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
  - `@dependabot cancel merge` will cancel a previously requested merge and block automerging
  - `@dependabot reopen` will reopen this PR if it is closed
  - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
  - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/danielmiessler/fabric/network/alerts).

  </details>

commits:
  [{"SHA":"c5e75568d4349c202c3e7154b91c384fdae00498","Message":"Bump follow-redirects from 1.15.5 to 1.15.6 in /installer/client/gui\n\nBumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.5 to 1.15.6.\n- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)\n- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.5...v1.15.6)\n\n---\nupdated-dependencies:\n- dependency-name: follow-redirects\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e","Author":"dependabot[bot]"}]


title: PR - Added YT user comments retrieval to yt.py helper
author: raisindetre
author_url: https://github.com/raisindetre
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/264
merged_at: 2024-03-18 16:05:00+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Adds `--comments` flag to yt helper which retrieves all comments associated with the video URL. Comments are sorted by newest first and replies are included, indenting showing nest level.

  Updated helpers  README doc (and fixed some MD formatting errors) as well.

commits:
  [{"SHA":"e0d2361aab1baab4c08271e959bb06c3a47a12ab","Message":"Added comment retrieval option to yt.py","Author":"raisindetre"},{"SHA":"e6df0f93f06395dcb39a1dab796da1acf2de9cb7","Message":"yt comments includes reply threads. Readme updated.","Author":"raisindetre"}]


title: Add an example about extracting wisdom from a Youtube video
author: ichoosetoaccept
author_url: https://github.com/ichoosetoaccept
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/266
merged_at: 2024-03-18 16:04:12+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Add an example about extracting wisdom from a Youtube video much like Daniel Miessler shows in the original intro video.

  ## Related issues
  This closes no open issues. I just saw an opportunity for improvement.

  When I watched the intro videos of this project I naturally got excited to try it. It took me far too long to get the example of extracting valuable information from a Youtube video working because the information in the intro video is outdated already. Daniel used a utility called "pt" which is now called "yt". It's a subtle PR but one that might might get others to try out a great example pattern of Fabric sooner.

commits:
  [{"SHA":"642493c96533a1c0ef12ed6ec6dd64292e59f223","Message":"Add a great example on extracting wisdom from any Youtube video","Author":"Ismar Iljazovic"},{"SHA":"63d9ab2cbae266cc300dcbd2ee4336c1754a27b2","Message":"fix missing --transcript flag for yt command in example","Author":"Ismar Iljazovic"}]


title: Two new pentest reporting patterns and Github Contributing Script
author: FlyingPhish
author_url: https://github.com/FlyingPhish
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/286
merged_at: 2024-05-11 03:33:50+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  PR includes two new patterns:

  1) `create_report_finding`
      * This takes either a file or text via echo for example and creates a pentest report finding that includes the following sections:
          * title, description, risk, remedation, external references (please check these), one-sentence-summary, quotes.
      * example usage: echo "Username Enumeration: Forgotten Password Functionality: The application returns if an account exists or not, which allows an attacker to enumerate valid user accounts via email address" | create_report_finding
      
  2) `improve_report_finding`
      * This takes either a file or text via echo for example and creates an improved pentest report finding that includes the following sections:
          * title, description, risk, remedation, external references (please check these), one-sentence-summary, quotes.
      * example usage: cat sanitised_report_finding.txt (should have title, description, remediation sections) | improve_report_finding

  Additionally, this PR includes a Github helper script for automating the Github contributing workflow. This allows you to:

  1) Update your fork with the main repo to ensure you're working on a current version.
  2) Create a new branch.
  3) Push changes to your branch (or new branch).
  4) Create a PR using a markdown file to populate the body.

  ## Example Output from `create_report_finding`:
  ### Username Enumeration: Forgotten Password Functionality

  #### Description
  The application in question has a security flaw within its forgotten password functionality. Specifically, when a user attempts to reset their password using an email address, the application responds differently depending on whether the email address is associated with an existing account. This behavior inadvertently provides attackers with a means to confirm the existence of valid user accounts. By systematically submitting various email addresses through this functionality, an attacker can compile a list of valid accounts for further malicious activities, such as targeted phishing attacks or brute force password attempts.

  #### Risk
  This vulnerability poses a significant risk as it directly compromises user privacy and security. The ability for an attacker to enumerate valid user accounts elevates the risk of targeted attacks. Users with identified accounts may become victims of phishing campaigns designed to extract more sensitive information or deceive them into compromising their account security. Furthermore, knowing which accounts are valid can aid an attacker in focusing their efforts on existing accounts when attempting password breaches, making the attack more efficient and likely to succeed.

  #### Recommendations
  - Implement a uniform response message for all password reset attempts, regardless of whether the email address is associated with an existing account or not.
  - Employ CAPTCHA mechanisms to prevent automated scripts from performing mass enumeration attempts.
  - Rate limit the number of password reset requests that can be made from a single IP address within a given timeframe to deter enumeration attacks.
  - Monitor and log all password reset attempts to detect and respond to potential enumeration activities.
  - Educate users on the importance of using unique, strong passwords for their accounts to mitigate the risk of unauthorized access should their email address be enumerated.
  - Consider implementing multi-factor authentication (MFA) as an additional layer of security for account access, reducing the impact of account enumeration.

  #### References
  - [OWASP Guide to Authentication](https://owasp.org/www-project-cheat-sheets/cheatsheets/Authentication_Cheat_Sheet.html)
  - [NIST Recommendations on Digital Identity Guidelines](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-63b.pdf)
  - [CWE-203: Information Exposure Through Discrepancy](https://cwe.mitre.org/data/definitions/203.html)

  #### One-Sentence-Summary:
  The forgotten password functionality reveals if an email is linked to an account, enabling attackers to identify valid user accounts.

  #### Quotes:
  - "The application responds differently depending on whether the email address is associated with an existing account."
  - "This behavior inadvertently provides attackers with a means to confirm the existence of valid user accounts."
  - "Users with identified accounts may become victims of phishing campaigns."
  - "Knowing which accounts are valid can aid an attacker in focusing their efforts."
  - "Implement a uniform response message for all password reset attempts."
  - "Employ CAPTCHA mechanisms to prevent automated scripts."
  - "Rate limit the number of password reset requests from a single IP address."
  - "Educate users on the importance of using unique, strong passwords."
  - "Consider implementing multi-factor authentication (MFA) as an additional layer of security."
  - "Increasing sophistication of automated scripts used by attackers for account enumeration."%          

commits:
  [{"SHA":"9c89e0cf2bc863d481fe1897b7b75d93e37e016a","Message":"two new prompts, create and improve report finding for pentest repor finding generation.","Author":"FlyingPhishy"},{"SHA":"d34831dbd6499df79cd9486690d980a559fcf53a","Message":"two new prompts, create and improve report finding for pentest repor finding generation.","Author":"FlyingPhishy"},{"SHA":"11b373f49e30d9fc16c68ff54420a9adc21f8210","Message":"added create_branch function to git-cont.py.","Author":"FlyingPhishy"},{"SHA":"080138196ae197ec4a39d3de8caa6b15b7d45ef8","Message":"last min changes","Author":"FlyingPhishy"},{"SHA":"27d620f7c1803d52058893ffdd7fa3c3f5984786","Message":"last min changes","Author":"FlyingPhishy"},{"SHA":"3f202f4d53e14be7cb313ce13b2b88dfdfe8c237","Message":"last min changes","Author":"FlyingPhishy"},{"SHA":"82e3c0a521549cbf25246427d33e0fe865b38cc6","Message":"last min fixes","Author":"FlyingPhishy"},{"SHA":"be785277072ec0aa23247b7c5143b74bd9c7dc5b","Message":"last min fixes","Author":"FlyingPhishy"},{"SHA":"7338411a7d52cd2304138c44373c94258706efa1","Message":"unfucking things","Author":"FlyingPhishy"},{"SHA":"4a753ab0e11e10a45926ae25b2400c1da5a4a3ae","Message":"unfucking things","Author":"FlyingPhish"}]


title: A new pattern to create flashcards from texts
author: harpsiford
author_url: https://github.com/harpsiford
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/297
merged_at: 2024-05-11 03:29:15+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Adds a new pattern for Fabric to create flashcards for spaced repetition memory trainers such as Anki. This would help to remember details over a long time. This pattern was developed by [L-M-Sherlock](https://github.com/L-M-Sherlock) and presented at [Reddit](https://www.reddit.com/r/Anki/comments/11306zf/ankigpt_teach_cahtgpt_to_create_cards_for_you/), I just adapted it for Fabric.

  ## Examples
  Here is how I used this pattern. For the generated cards to be importable to Anki, they need to be in the CSV format, so the instructions include that.
  ```
  $ pbpaste | fabric -p to_flashcards
  What can change the color of glass?,"Certain elements or chemicals mixed with sand"
  How can glass be strengthened?,"Through thermal tempering or chemical processes"
  What is thermal tempering?,"A process to heat and cool glass rapidly to strengthen it"
  What does the ion exchange process do to glass?,"Makes the surface of the glass tougher"
  What is soda-lime glass made of?,"Soda (sodium carbonate), limestone, and sand"
  Why is soda added to glass manufacturing?,"To reduce the melting point of sand and save energy"
  What effect does adding soda have on glass's chemical durability?,"Reduces it, making the glass prone to dissolve in liquids"
  Why is limestone added to the soda-lime glass mixture?,"Acts as a stabilizer"
  What company has over a century of knowledge in glass manufacturing?,"Corning"
  What are some applications of glass according to Corning?,"Optical fiber and augmented reality technologies"
  ```

commits:
  [{"SHA":"1a00152526edc78f3bc75b39e4d56533423b1afb","Message":"Add pattern: to_flashcards","Author":"Max Harpsiford"},{"SHA":"04bfffee6c76898e68f713c36613a6b53253ed09","Message":"generate CSV instead of a Markdown table","Author":"Max Harpsiford"}]


title: Fixed Latin-1 decode problems
author: Loibl33
author_url: https://github.com/Loibl33
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/298
merged_at: 2024-04-02 03:45:25+00:00
created_at: 2025-07-16 04:25:34
body:
  Fixes Latin-1 decode problems

  ## What this Pull Request (PR) does
  Fixes Latin-1 decode problems

  ## Related issues
  For example, https://youtu.be/f2BjFilLDqQ threw a Latin-1 decode error.

  ## Screenshots
  Old behaviour: 
  ![image](https://github.com/danielmiessler/fabric/assets/76207404/35d0bd26-a9ec-43ad-8580-2eb77eef1476)

  New behavior
  ![image](https://github.com/danielmiessler/fabric/assets/76207404/8574ae4e-97f4-42c4-a9e8-7dcd08b7e484)

commits:
  [{"SHA":"07e96f122d7503cb160685f65af84720fa67d79b","Message":"Fixed Latin-1 decode problems\n\nFixes Latin-1 decode problems","Author":"Loibl33"}]


title: Language choice option when pulling a transcript from yt
author: bpmcircuits
author_url: https://github.com/bpmcircuits
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/304
merged_at: 2024-04-02 03:45:48+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  I've added the option to select the language in which the video is recorded on youtube and later through the script transcribed.
  Default is English.

  ## Related issues
  None found.

  ## Screenshots
  Now I can use it for example with pl language videos:
  <img width="877" alt="obraz" src="https://github.com/danielmiessler/fabric/assets/65460644/9cc9d4c4-bc46-4c37-8fe0-27d0f4163b2c">

commits:
  [{"SHA":"4d48f299eeab32d57a3fa26aaefb211b6cfed3c9","Message":"modified:   installer/client/cli/yt.py","Author":"Bartosz Pokrywka"}]


title: Bump langchain-core from 0.1.31 to 0.1.35
author: dependabot
author_url: https://github.com/apps/dependabot
author_type: bot
url: https://github.com/danielmiessler/Fabric/pull/306
merged_at: 2024-04-02 03:45:03+00:00
created_at: 2025-07-16 04:25:34
body:
  Bumps [langchain-core](https://github.com/langchain-ai/langchain) from 0.1.31 to 0.1.35.
  <details>
  <summary>Commits</summary>
  <ul>
  <li>See full diff in <a href="https://github.com/langchain-ai/langchain/commits">compare view</a></li>
  </ul>
  </details>
  <br />


  [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=langchain-core&package-manager=pip&previous-version=0.1.31&new-version=0.1.35)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

  Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

  [//]: # (dependabot-automerge-start)
  [//]: # (dependabot-automerge-end)

  ---

  <details>
  <summary>Dependabot commands and options</summary>
  <br />

  You can trigger Dependabot actions by commenting on this PR:
  - `@dependabot rebase` will rebase this PR
  - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
  - `@dependabot merge` will merge this PR after your CI passes on it
  - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
  - `@dependabot cancel merge` will cancel a previously requested merge and block automerging
  - `@dependabot reopen` will reopen this PR if it is closed
  - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
  - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/danielmiessler/fabric/network/alerts).

  </details>

commits:
  [{"SHA":"d42a310ec8a68bc029343364c6cc6bfc3d72e51a","Message":"Bump langchain-core from 0.1.31 to 0.1.35\n\nBumps [langchain-core](https://github.com/langchain-ai/langchain) from 0.1.31 to 0.1.35.\n- [Release notes](https://github.com/langchain-ai/langchain/releases)\n- [Commits](https://github.com/langchain-ai/langchain/commits)\n\n---\nupdated-dependencies:\n- dependency-name: langchain-core\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e","Author":"dependabot[bot]"}]


title: Get OLLAMA models to work in Windows (both native and WSL).
author: ksylvan
author_url: https://github.com/ksylvan
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/315
merged_at: 2024-04-07 10:22:16+00:00
created_at: 2025-07-16 04:25:34
body:
  # Summary

  Fix for https://github.com/danielmiessler/fabric/issues/314 - Ollama now functions perfectly on Windows (both natively and in the WSL environment).

  # Files Changed

  - `installer/client/cli/utils.py`: This file contains utility functions and classes for the Fabric CLI.

  # Code Changes

  1. Removed the unused `re` import and added the `youtube_transcript_api` import (needed in the Transcribe class) :
     ```python
     - import re
     import shutil
     + from youtube_transcript_api import YouTubeTranscriptApi
     ```

  2. Removed `host` parameter from the `AsyncClient().chat()` calls in the `localChat()` and `localStream()` methods of the `Standalone` class. This was causing failures when using `--remoteOllamaServer`  since Ollama's `AsyncClient().chat()` does not take a `host` parameter.
     ```python
     - response = await AsyncClient(host=host).chat(model=self.model, messages=messages, host=host)
     + response = await AsyncClient(host=host).chat(model=self.model, messages=messages)
     ```
     ```python
     - async for part in await AsyncClient(host=host).chat(model=self.model, messages=messages, stream=True, host=host):
     + async for part in await AsyncClient(host=host).chat(model=self.model, messages=messages, stream=True):
     ```

  3. Added support for specifying a remote Ollama server when listing available models in the `listModels()` method of the `Standalone` class:
     ```python
     + if self.args.remoteOllamaServer:
     +     client = ollama.Client(host=self.args.remoteOllamaServer)
     +     default_modelollamaList = client.list()['models']
     + else:
     +     default_modelollamaList = ollama.list()['models']
     ```

  # Reason for Changes

  1. The `re` import was removed because it was not being used in the code, and the `youtube_transcript_api` import was added because it is being used later in the file.

  3. The `host` parameter was removed from the `AsyncClient().chat()` calls. Now these calls work as intended.

  4. The changes to the `listModels()` method fixes the code when trying to list models.

  # Impact of Changes

  Fixed remote Ollama server usage problems and bugs. Specifically, in WSL environment on Windows, where the Ollama server is running on the native host, it makes it possible to access the model list and to use Ollama local models.

  # Test Plan

  To test these changes, the following steps were performed:

  1. Verified that the Fabric CLI still functions correctly after removing the unused `re` import and adding the `youtube_transcript_api` import.

  2. Tested the `localChat()` and `localStream()` methods with and without specifying a host to ensure that they work as expected.

  3. Tested the `listModels()` method with and without specifying a remote Ollama server to ensure that it retrieves the correct list of available models. This was done both in native Windows and WSL.

commits:
  [{"SHA":"6b9f5d04fe386d794e5a60a8527ada7b50af0f63","Message":"Get OLLAMA models to work in Windows, including both native and WSL environments.","Author":"Kayvan Sylvan"},{"SHA":"5e8f0d4f560b57b09a45e8cc67e47e7369667bda","Message":"Merge branch 'main' into main","Author":"Kayvan Sylvan"},{"SHA":"5df1ec1cf8f423ca65d7958ecf390372ea48c466","Message":"Merge branch 'danielmiessler:main' into main","Author":"Kayvan Sylvan"},{"SHA":"5c117c45f6ca7002064ec5cafda64fa65aaf3506","Message":"Merge branch 'danielmiessler:main' into main","Author":"Kayvan Sylvan"},{"SHA":"8934deabd97d70af35f5086e31065aa5b481a006","Message":"Merge remote-tracking branch 'upstream/main'","Author":"Kayvan Sylvan"},{"SHA":"d6850726d445bbff3563eb316dc23ac6a855cc02","Message":"Merge branch 'main' of github.com:ksylvan/fabric","Author":"Kayvan Sylvan"},{"SHA":"06aa8cab28fce82e42ae1b0a523a8c3801b1d696","Message":"Merge remote-tracking branch 'upstream/main'","Author":"Kayvan Sylvan"},{"SHA":"f13bd5a0a4626373a8caea3214d14bd67c8866ec","Message":"Merge remote-tracking branch 'upstream/main'","Author":"Kayvan Sylvan"}]


title: Update README.md for #324
author: surak
author_url: https://github.com/surak
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/325
merged_at: 2024-05-11 03:32:00+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  It's just an update to README, showing how to point to your own server.

  ## Related issues
  Closes #324 , showing how to connect to another server

commits:
  [{"SHA":"17fce1bea55630b6c9c963c6ebc9c5a859ac85a2","Message":"Update README.md for #324\n\nCloses #324 , showing how to connect to another server","Author":"Alexandre Strube"},{"SHA":"c5dd2f300d9999c2a64a5453cb3d2faf6d6dfc93","Message":"Add LMStudio","Author":"Alexandre Strube"}]


title: Experimental Malware Analysis Pattern
author: fr0gger
author_url: https://github.com/fr0gger
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/332
merged_at: 2024-04-09 16:28:36+00:00
created_at: 2025-07-16 04:25:34
body:
  Hi, I created an experimental pattern for malware analysis.
  This pattern takes a malware report as a parameter and extract relevant information for the analyst.  :) 

  There is still some false positive, but it is doing pretty good so far. 

commits:
  [{"SHA":"403167c886b29bcdeeed563b3b3903a0f90b1001","Message":"Adding a pattern for malware analysis summary\n\nThis is an experimental pattern for creating a summary of a malware report.","Author":"Thomas Roccia"},{"SHA":"c0f464c13c8ce670ecaad654c9e68b7f65b5fa32","Message":"Update system.md","Author":"Thomas Roccia"}]


title: Split stdout from stderr messages
author: meirm
author_url: https://github.com/meirm
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/337
merged_at: 2024-04-12 12:40:50+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Send all error messages to stderr 

  ## Related issues
  Previous conflictive pull request

commits:
  [{"SHA":"dc5246aabf6143d32749ee15addb635814fa205e","Message":"Split stdout from stderr messages","Author":"Meir Michanie"}]


title: Add answer interview question pattern
author: tibbon
author_url: https://github.com/tibbon
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/355
merged_at: 2024-05-11 03:20:28+00:00
created_at: 2025-07-16 04:25:34
body:
  because: As a user, I should be able to answer
  interview questions quickly and effectively in realtime

  this commit: Adds a pattern for answering interview questions

  ## Example usage: 

  ```
  echo 'What are differences between Liveness, Readiness, and Startup Probes?' | fabric --stream --pattern answer_interview_question
  "In Kubernetes, Liveness, Readiness, and Startup Probes serve distinct purposes for managing containerized applications. Liveness Probes help Kubernetes understand if an application is running; if it fails, Kubernetes restarts the container. This ensures the application is not only up but also functional. On the other hand, Readiness Probes determine if an application is ready to serve traffic. A failing Readiness Probe means the container is alive but not yet ready to accept requests, so Kubernetes won't send traffic to it until it passes. Lastly, Startup Probes are used to check if an application has started successfully. This is particularly useful for applications that have a slow start time, as it prevents Kubernetes from killing the container before it's fully up and running. In my experience, using Readiness Probes effectively reduced downtime during deployments because we ensured traffic was only sent to pods that were fully ready, which wasn't always the case when we relied solely on Liveness Probes."
  ```

commits:
  [{"SHA":"4fc2fa1be3d56443f195d0d1c682d86c414ab1b6","Message":"Add answer interview question pattern\n\nbecause: As a user, I should be able to answer\ninterview questions quickly and effectively in realtime\n\nthis commit: Adds a pattern for answering interview questions","Author":"David Fisher"}]


title: Updating Readme Quickstart instructions to include required python ve…
author: Sluengo
author_url: https://github.com/Sluengo
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/357
merged_at: 2024-05-11 03:20:06+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  When I attempted to follow these instructions in a windows environment using WSL, I kept running into issues because my python version was too low (3.8). I then was going through hoops trying to upgrade to version 3.12 as the process seems more complicated on windows OS.

  To avoid these headaches, I thought it best to warn potential users ahead of time to ensure their environment is running the latest version of Python or at least python 3.10, which seemed to work for me finally.

  ## Related issues
  Please reference any open issues this PR relates to in here.
  If it closes an issue, type `closes #[ISSUE_NUMBER]`.

  ## Screenshots
  Provide any screenshots you may find relevant to facilitate us understanding your PR.

commits:
  [{"SHA":"0942af46bf6ab37778dfc215a9f30c8e926cd761","Message":"Updating Readme Quickstart instructions to include required python version\n\nWhen I attempted to follow these instructions in a windows environment using WSL, I kept running into issues because my python version was too low (3.8). I then was going through hoops trying to upgrade to version 3.12 as the process seems more complicated on windows OS.\r\n\r\nTo avoid these headaches, I thought it best to warn potential users ahead of time to ensure their environment is running the latest version of Python or at least python 3.10, which seemed to work for me finally.","Author":"SluBot"}]


title: fix: The variable 'wisdomFilePath' is already a complete path constru…
author: RealHurrison
author_url: https://github.com/RealHurrison
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/368
merged_at: 2024-05-11 03:14:46+00:00
created_at: 2025-07-16 04:25:34
body:
  The variable 'wisdomFilePath' is already a complete path constructed with 'config_directory'. Joining it again with 'current_directory' could lead to an incorrect path.

commits:
  [{"SHA":"5bc4223984d7f8fe5a6ffe15a6eb8575ec643cd0","Message":"fix: The variable 'wisdomFilePath' is already a complete path constructed with 'config_directory'. Joining it again with 'current_directory' could lead to an incorrect path.\n\nThe variable 'wisdomFilePath' is already a complete path constructed with 'config_directory'. Joining it again with 'current_directory' could lead to an incorrect path.","Author":"Hurrison"}]


title: Disentangle PraisonAI references in README
author: fureigh
author_url: https://github.com/fureigh
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/374
merged_at: 2024-05-11 03:16:41+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  * Disentangles copypasta that snuck into the `Custom Patterns` and `Agents` sections of the README.
  * Makes a few minor copy edits in the same sections.

commits:
  [{"SHA":"a220d97048bbfb9df938f6caa168f1ad333a4b11","Message":"Disentangle PraisonAI references in README","Author":"Fureigh"}]


title: Pattern for Nuclei Template
author: princechaddha
author_url: https://github.com/princechaddha
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/375
merged_at: 2024-05-11 03:16:08+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does

  1. Navigate to `https://www.exploit-db.com/exploits/52001` copy the content.
  ```
  pwnmachine@PD % pbpaste | fabric -p write_nuclei_template_rule --model gpt-4-turbo-2024-04-09
  ```yaml
  id: CVE-2024-31621

  info:
    name: Flowise 1.6.5 - Authentication Bypass
    author: Maerifat Majeed
    severity: critical
    description: |
      Flowise version <= 1.6.5 is vulnerable to an authentication bypass vulnerability due to case-insensitive path handling in its middleware.
      Attackers can bypass authentication by changing the case of the API path.

  http:
    - method: GET
      path:
        - "{{BaseURL}}/API/V1/credentials"
        - "{{BaseURL}}/Api/V1/credentials"
        - "{{BaseURL}}/aPI/v1/credentials"

      matchers:
        - type: status
          status:
            - 200

        - type: word
          words:
            - "user_id"
            - "session_token"
          part: body
          condition: or
  ```
  ```

  ## Related issues
  Please reference any open issues this PR relates to in here.
  If it closes an issue, type `closes #[ISSUE_NUMBER]`.

  ## Screenshots
  Provide any screenshots you may find relevant to facilitate us understanding your PR.

commits:
  [{"SHA":"587c9c97bd43355d2fe3db509c44ab3d1ecacc9a","Message":"Update README.md","Author":"Prince Chaddha"},{"SHA":"053e27e732ddb1fd84704c4e0005ec3191040ce4","Message":"Update fabric.py","Author":"Prince Chaddha"},{"SHA":"60d441a5e4e33365452c5bfc26657a355b9091f0","Message":"nuclei template","Author":"Prince Chaddha"}]


title: feat: add metadata flag to yt cli
author: obswork
author_url: https://github.com/obswork
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/376
merged_at: 2024-05-11 03:14:22+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does

  This PR adds some additional metadata to the output returned by the `yt` cli. In particular- the video id, title, channel, and publish date/time string. Example below. 

  ```bash
  $ yt --metadata https://www.youtube.com/watch\?v\=VH3F6tdxJ6c

  {
    "id": "VH3F6tdxJ6c",
    "title": "UL NO. 429: Build Your Career Around Problems",
    "channel": "Unsupervised Learning",
    "published_at": "2024-04-27T02:56:33Z"
  }
  ```

  ## Related issues

  N/A

  ## Screenshots

  N/A

commits:
  [{"SHA":"90ecbde1809b10364a6f42c1e298971a3047bd2e","Message":"feat: add metadata flag to yt cli\n\nOutput includes: id, title, channel, and published_at","Author":"obswork"}]


title: Bump the pip group across 1 directory with 4 updates
author: dependabot
author_url: https://github.com/apps/dependabot
author_type: bot
url: https://github.com/danielmiessler/Fabric/pull/377
merged_at: 2024-05-11 03:13:49+00:00
created_at: 2025-07-16 04:25:34
body:
  Bumps the pip group with 4 updates in the / directory: [gunicorn](https://github.com/benoitc/gunicorn), [tqdm](https://github.com/tqdm/tqdm), [aiohttp](https://github.com/aio-libs/aiohttp) and [idna](https://github.com/kjd/idna).

  Updates `gunicorn` from 21.2.0 to 22.0.0
  <details>
  <summary>Release notes</summary>
  <p><em>Sourced from <a href="https://github.com/benoitc/gunicorn/releases">gunicorn's releases</a>.</em></p>
  <blockquote>
  <h2>Gunicorn 22.0 has been released</h2>
  <p><strong>Gunicorn 22.0.0 has been released.</strong> This version fix the numerous security vulnerabilities. You're invited to upgrade asap your own installation.</p>
  <p>Changes:</p>
  <pre><code>22.0.0 - 2024-04-17
  ===================
  <ul>
  <li>use <code>utime</code> to notify workers liveness</li>
  <li>migrate setup to pyproject.toml</li>
  <li>fix numerous security vulnerabilities in HTTP parser (closing some request smuggling vectors)</li>
  <li>parsing additional requests is no longer attempted past unsupported request framing</li>
  <li>on HTTP versions &lt; 1.1 support for chunked transfer is refused (only used in exploits)</li>
  <li>requests conflicting configured or passed SCRIPT_NAME now produce a verbose error</li>
  <li>Trailer fields are no longer inspected for headers indicating secure scheme</li>
  <li>support Python 3.12</li>
  </ul>
  <p>** Breaking changes **</p>
  <ul>
  <li>minimum version is Python 3.7</li>
  <li>the limitations on valid characters in the HTTP method have been bounded to Internet Standards</li>
  <li>requests specifying unsupported transfer coding (order) are refused by default (rare)</li>
  <li>HTTP methods are no longer casefolded by default (IANA method registry contains none affected)</li>
  <li>HTTP methods containing the number sign (#) are no longer accepted by default (rare)</li>
  <li>HTTP versions &lt; 1.0 or &gt;= 2.0 are no longer accepted by default (rare, only HTTP/1.1 is supported)</li>
  <li>HTTP versions consisting of multiple digits or containing a prefix/suffix are no longer accepted</li>
  <li>HTTP header field names Gunicorn cannot safely map to variables are silently dropped, as in other software</li>
  <li>HTTP headers with empty field name are refused by default (no legitimate use cases, used in exploits)</li>
  <li>requests with both Transfer-Encoding and Content-Length are refused by default (such a message might indicate an attempt to perform request smuggling)</li>
  <li>empty transfer codings are no longer permitted (reportedly seen with really old &amp; broken proxies)</li>
  </ul>
  <p>** SECURITY **</p>
  <ul>
  <li>fix CVE-2024-1135
  </code></pre></li>
  </ul>
  <ol>
  <li>Documentation is available there: <a href="https://docs.gunicorn.org/en/stable/news.html">https://docs.gunicorn.org/en/stable/news.html</a></li>
  <li>Packages: <a href="https://pypi.org/project/gunicorn/">https://pypi.org/project/gunicorn/</a></li>
  </ol>
  </blockquote>
  </details>
  <details>
  <summary>Commits</summary>
  <ul>
  <li><a href="https://github.com/benoitc/gunicorn/commit/f63d59e4d73a8ee28748d2c700fb81c8780bc419"><code>f63d59e</code></a> bump to 22.0</li>
  <li><a href="https://github.com/benoitc/gunicorn/commit/4ac81e0a1037ba5b570323be7430e09caa233e38"><code>4ac81e0</code></a> Merge pull request <a href="https://redirect.github.com/benoitc/gunicorn/issues/3175">#3175</a> from e-kwsm/typo</li>
  <li><a href="https://github.com/benoitc/gunicorn/commit/401cecfaed85d79236c7a9a1f7d8946b01c466fc"><code>401cecf</code></a> Merge pull request <a href="https://redirect.github.com/benoitc/gunicorn/issues/3179">#3179</a> from dhdaines/exclude-eventlet-0360</li>
  <li><a href="https://github.com/benoitc/gunicorn/commit/0243ec39ef4fc1b479ff4e1659e165f0b980b571"><code>0243ec3</code></a> fix(deps): exclude eventlet 0.36.0</li>
  <li><a href="https://github.com/benoitc/gunicorn/commit/628a0bcb61ef3a211d67dfd68ad1ba161cccb3b8"><code>628a0bc</code></a> chore: fix typos</li>
  <li><a href="https://github.com/benoitc/gunicorn/commit/88fc4a43152039c28096c8ba3eeadb3fbaa4aff9"><code>88fc4a4</code></a> Merge pull request <a href="https://redirect.github.com/benoitc/gunicorn/issues/3131">#3131</a> from pajod/patch-py12-rebased</li>
  <li><a href="https://github.com/benoitc/gunicorn/commit/deae2fc4c5f93bfce59be5363055d4cd4ab1b0b6"><code>deae2fc</code></a> CI: back off the agressive timeout</li>
  <li><a href="https://github.com/benoitc/gunicorn/commit/f4703824c323fe6867dce0e2f11013b8de319353"><code>f470382</code></a> docs: promise 3.12 compat</li>
  <li><a href="https://github.com/benoitc/gunicorn/commit/5e30bfa6b1a3e1f2bde7feb514d1734d28f39231"><code>5e30bfa</code></a> add changelog to project.urls (updated for PEP621)</li>
  <li><a href="https://github.com/benoitc/gunicorn/commit/481c3f9522edc58806a3efc5b49be4f202cc7700"><code>481c3f9</code></a> remove setup.cfg - overridden by pyproject.toml</li>
  <li>Additional commits viewable in <a href="https://github.com/benoitc/gunicorn/compare/21.2.0...22.0.0">compare view</a></li>
  </ul>
  </details>
  <br />

  Updates `tqdm` from 4.66.2 to 4.66.3
  <details>
  <summary>Release notes</summary>
  <p><em>Sourced from <a href="https://github.com/tqdm/tqdm/releases">tqdm's releases</a>.</em></p>
  <blockquote>
  <h2>tqdm v4.66.3 stable</h2>
  <ul>
  <li><code>cli</code>: <code>eval</code> safety (fixes CVE-2024-34062, GHSA-g7vv-2v7x-gj9p)</li>
  </ul>
  </blockquote>
  </details>
  <details>
  <summary>Commits</summary>
  <ul>
  <li><a href="https://github.com/tqdm/tqdm/commit/4e613f84ed2ae029559f539464df83fa91feb316"><code>4e613f8</code></a> Merge pull request from GHSA-g7vv-2v7x-gj9p</li>
  <li><a href="https://github.com/tqdm/tqdm/commit/b53348c73080b4edeb30b4823d1fa0d8d2c06721"><code>b53348c</code></a> cli: eval safety</li>
  <li>See full diff in <a href="https://github.com/tqdm/tqdm/compare/v4.66.2...v4.66.3">compare view</a></li>
  </ul>
  </details>
  <br />

  Updates `aiohttp` from 3.9.3 to 3.9.4
  <details>
  <summary>Release notes</summary>
  <p><em>Sourced from <a href="https://github.com/aio-libs/aiohttp/releases">aiohttp's releases</a>.</em></p>
  <blockquote>
  <h2>3.9.4</h2>
  <h2>Bug fixes</h2>
  <ul>
  <li>
  <p>The asynchronous internals now set the underlying causes
  when assigning exceptions to the future objects
  -- by :user:<code>webknjaz</code>.</p>
  <p><em>Related issues and pull requests on GitHub:</em>
  <a href="https://redirect.github.com/aio-libs/aiohttp/issues/8089">#8089</a>.</p>
  </li>
  <li>
  <p>Treated values of <code>Accept-Encoding</code> header as case-insensitive when checking
  for gzip files -- by :user:<code>steverep</code>.</p>
  <p><em>Related issues and pull requests on GitHub:</em>
  <a href="https://redirect.github.com/aio-libs/aiohttp/issues/8104">#8104</a>.</p>
  </li>
  <li>
  <p>Improved the DNS resolution performance on cache hit -- by :user:<code>bdraco</code>.</p>
  <p>This is achieved by avoiding an :mod:<code>asyncio</code> task creation in this case.</p>
  <p><em>Related issues and pull requests on GitHub:</em>
  <a href="https://redirect.github.com/aio-libs/aiohttp/issues/8163">#8163</a>.</p>
  </li>
  <li>
  <p>Changed the type annotations to allow <code>dict</code> on :meth:<code>aiohttp.MultipartWriter.append</code>,
  :meth:<code>aiohttp.MultipartWriter.append_json</code> and
  :meth:<code>aiohttp.MultipartWriter.append_form</code> -- by :user:<code>cakemanny</code></p>
  <p><em>Related issues and pull requests on GitHub:</em>
  <a href="https://redirect.github.com/aio-libs/aiohttp/issues/7741">#7741</a>.</p>
  </li>
  <li>
  <p>Ensure websocket transport is closed when client does not close it
  -- by :user:<code>bdraco</code>.</p>
  <p>The transport could remain open if the client did not close it. This
  change ensures the transport is closed when the client does not close
  it.</p>
  </li>
  </ul>
  <!-- raw HTML omitted -->
  </blockquote>
  <p>... (truncated)</p>
  </details>
  <details>
  <summary>Changelog</summary>
  <p><em>Sourced from <a href="https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst">aiohttp's changelog</a>.</em></p>
  <blockquote>
  <h1>3.9.4 (2024-04-11)</h1>
  <h2>Bug fixes</h2>
  <ul>
  <li>
  <p>The asynchronous internals now set the underlying causes
  when assigning exceptions to the future objects
  -- by :user:<code>webknjaz</code>.</p>
  <p><em>Related issues and pull requests on GitHub:</em>
  :issue:<code>8089</code>.</p>
  </li>
  <li>
  <p>Treated values of <code>Accept-Encoding</code> header as case-insensitive when checking
  for gzip files -- by :user:<code>steverep</code>.</p>
  <p><em>Related issues and pull requests on GitHub:</em>
  :issue:<code>8104</code>.</p>
  </li>
  <li>
  <p>Improved the DNS resolution performance on cache hit -- by :user:<code>bdraco</code>.</p>
  <p>This is achieved by avoiding an :mod:<code>asyncio</code> task creation in this case.</p>
  <p><em>Related issues and pull requests on GitHub:</em>
  :issue:<code>8163</code>.</p>
  </li>
  <li>
  <p>Changed the type annotations to allow <code>dict</code> on :meth:<code>aiohttp.MultipartWriter.append</code>,
  :meth:<code>aiohttp.MultipartWriter.append_json</code> and
  :meth:<code>aiohttp.MultipartWriter.append_form</code> -- by :user:<code>cakemanny</code></p>
  <p><em>Related issues and pull requests on GitHub:</em>
  :issue:<code>7741</code>.</p>
  </li>
  <li>
  <p>Ensure websocket transport is closed when client does not close it
  -- by :user:<code>bdraco</code>.</p>
  <p>The transport could remain open if the client did not close it. This
  change ensures the transport is closed when the client does not close
  it.</p>
  </li>
  </ul>
  <!-- raw HTML omitted -->
  </blockquote>
  <p>... (truncated)</p>
  </details>
  <details>
  <summary>Commits</summary>
  <ul>
  <li><a href="https://github.com/aio-libs/aiohttp/commit/b3397c7ac44fc80206d28f1dd0d1f3b10c4ec572"><code>b3397c7</code></a> Release v3.9.4 (<a href="https://redirect.github.com/aio-libs/aiohttp/issues/8201">#8201</a>)</li>
  <li><a href="https://github.com/aio-libs/aiohttp/commit/a7e240a9f625a0b9559bdf5f0049c71565352400"><code>a7e240a</code></a> [PR <a href="https://redirect.github.com/aio-libs/aiohttp/issues/8320">#8320</a>/9ba9a4e5 backport][3.9] Fix Python parser to mark responses without...</li>
  <li><a href="https://github.com/aio-libs/aiohttp/commit/28335525d1eac015a7e7584137678cbb6ff19397"><code>2833552</code></a> Escape filenames and paths in HTML when generating index pages (<a href="https://redirect.github.com/aio-libs/aiohttp/issues/8317">#8317</a>) (<a href="https://redirect.github.com/aio-libs/aiohttp/issues/8319">#8319</a>)</li>
  <li><a href="https://github.com/aio-libs/aiohttp/commit/ed43040613988fc4666109aca82a5180ff165df5"><code>ed43040</code></a> [PR <a href="https://redirect.github.com/aio-libs/aiohttp/issues/8309">#8309</a>/c29945a1 backport][3.9] Improve reliability of run_app test (<a href="https://redirect.github.com/aio-libs/aiohttp/issues/8315">#8315</a>)</li>
  <li><a href="https://github.com/aio-libs/aiohttp/commit/ec2be0500e2674eea019c0966a7a905e9b3d6608"><code>ec2be05</code></a> [PR <a href="https://redirect.github.com/aio-libs/aiohttp/issues/8299">#8299</a>/28d026eb backport][3.9] Create marker for internal tests (<a href="https://redirect.github.com/aio-libs/aiohttp/issues/8307">#8307</a>)</li>
  <li><a href="https://github.com/aio-libs/aiohttp/commit/292d961f4ee2829a1b13fad92444a4fd693fbc87"><code>292d961</code></a> [PR <a href="https://redirect.github.com/aio-libs/aiohttp/issues/8304">#8304</a>/88c80c14 backport][3.9] Check for backports in CI (<a href="https://redirect.github.com/aio-libs/aiohttp/issues/8305">#8305</a>)</li>
  <li><a href="https://github.com/aio-libs/aiohttp/commit/cebe526b9c34dc3a3da9140409db63014bc4cf19"><code>cebe526</code></a> Fix handling of multipart/form-data (<a href="https://redirect.github.com/aio-libs/aiohttp/issues/8280">#8280</a>) (<a href="https://redirect.github.com/aio-libs/aiohttp/issues/8302">#8302</a>)</li>
  <li><a href="https://github.com/aio-libs/aiohttp/commit/270ae9cf6a9e6159b5e29a950deb6ff7600aebc5"><code>270ae9c</code></a> [PR <a href="https://redirect.github.com/aio-libs/aiohttp/issues/8297">#8297</a>/d15f07cf backport][3.9] Upgrade to llhttp 9.2.1 (<a href="https://redirect.github.com/aio-libs/aiohttp/issues/8292">#8292</a>) (<a href="https://redirect.github.com/aio-libs/aiohttp/issues/8298">#8298</a>)</li>
  <li><a href="https://github.com/aio-libs/aiohttp/commit/bb231059b14277c34a8a0331e51406d5abe4f424"><code>bb23105</code></a> [PR <a href="https://redirect.github.com/aio-libs/aiohttp/issues/8283">#8283</a>/54e13b0a backport][3.9] Fix blocking I/O in the event loop while pr...</li>
  <li><a href="https://github.com/aio-libs/aiohttp/commit/3f79241bcbc02c9850348fc04c064fcbc980e8f0"><code>3f79241</code></a> [PR <a href="https://redirect.github.com/aio-libs/aiohttp/issues/8286">#8286</a>/28f1fd88 backport][3.9] docs: remove repetitive word in comment (<a href="https://redirect.github.com/aio-libs/aiohttp/issues/8">#8</a>...</li>
  <li>Additional commits viewable in <a href="https://github.com/aio-libs/aiohttp/compare/v3.9.3...v3.9.4">compare view</a></li>
  </ul>
  </details>
  <br />

  Updates `idna` from 3.6 to 3.7
  <details>
  <summary>Release notes</summary>
  <p><em>Sourced from <a href="https://github.com/kjd/idna/releases">idna's releases</a>.</em></p>
  <blockquote>
  <h2>v3.7</h2>
  <h2>What's Changed</h2>
  <ul>
  <li>Fix issue where specially crafted inputs to encode() could take exceptionally long amount of time to process. [CVE-2024-3651]</li>
  </ul>
  <p>Thanks to Guido Vranken for reporting the issue.</p>
  <p><strong>Full Changelog</strong>: <a href="https://github.com/kjd/idna/compare/v3.6...v3.7">https://github.com/kjd/idna/compare/v3.6...v3.7</a></p>
  </blockquote>
  </details>
  <details>
  <summary>Changelog</summary>
  <p><em>Sourced from <a href="https://github.com/kjd/idna/blob/master/HISTORY.rst">idna's changelog</a>.</em></p>
  <blockquote>
  <p>3.7 (2024-04-11)
  ++++++++++++++++</p>
  <ul>
  <li>Fix issue where specially crafted inputs to encode() could
  take exceptionally long amount of time to process. [CVE-2024-3651]</li>
  </ul>
  <p>Thanks to Guido Vranken for reporting the issue.</p>
  </blockquote>
  </details>
  <details>
  <summary>Commits</summary>
  <ul>
  <li><a href="https://github.com/kjd/idna/commit/1d365e17e10d72d0b7876316fc7b9ca0eebdd38d"><code>1d365e1</code></a> Release v3.7</li>
  <li><a href="https://github.com/kjd/idna/commit/c1b3154939907fab67c5754346afaebe165ce8e6"><code>c1b3154</code></a> Merge pull request <a href="https://redirect.github.com/kjd/idna/issues/172">#172</a> from kjd/optimize-contextj</li>
  <li><a href="https://github.com/kjd/idna/commit/0394ec76ff022813e770ba1fd89658790ea35623"><code>0394ec7</code></a> Merge branch 'master' into optimize-contextj</li>
  <li><a href="https://github.com/kjd/idna/commit/cd58a23173d2b0a40b95ee680baf3e59e8d33966"><code>cd58a23</code></a> Merge pull request <a href="https://redirect.github.com/kjd/idna/issues/152">#152</a> from elliotwutingfeng/dev</li>
  <li><a href="https://github.com/kjd/idna/commit/5beb28b9dd77912c0dd656d8b0fdba3eb80222e7"><code>5beb28b</code></a> More efficient resolution of joiner contexts</li>
  <li><a href="https://github.com/kjd/idna/commit/1b121483ed04d9576a1291758f537e1318cddc8b"><code>1b12148</code></a> Update ossf/scorecard-action to v2.3.1</li>
  <li><a href="https://github.com/kjd/idna/commit/d516b874c3388047934938a500c7488d52c4e067"><code>d516b87</code></a> Update Github actions/checkout to v4</li>
  <li><a href="https://github.com/kjd/idna/commit/c095c75943413c75ebf8ac74179757031b7f80b7"><code>c095c75</code></a> Merge branch 'master' into dev</li>
  <li><a href="https://github.com/kjd/idna/commit/60a0a4cb61ec6834d74306bd8a1fa46daac94c98"><code>60a0a4c</code></a> Fix typo in GitHub Actions workflow key</li>
  <li><a href="https://github.com/kjd/idna/commit/5918a0ef8034379c2e409ae93ee11d24295bb201"><code>5918a0e</code></a> Merge branch 'master' into dev</li>
  <li>Additional commits viewable in <a href="https://github.com/kjd/idna/compare/v3.6...v3.7">compare view</a></li>
  </ul>
  </details>
  <br />


  Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

  [//]: # (dependabot-automerge-start)
  [//]: # (dependabot-automerge-end)

  ---

  <details>
  <summary>Dependabot commands and options</summary>
  <br />

  You can trigger Dependabot actions by commenting on this PR:
  - `@dependabot rebase` will rebase this PR
  - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
  - `@dependabot merge` will merge this PR after your CI passes on it
  - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
  - `@dependabot cancel merge` will cancel a previously requested merge and block automerging
  - `@dependabot reopen` will reopen this PR if it is closed
  - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
  - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
  - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
  - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
  - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency
  - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions
  You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/danielmiessler/fabric/network/alerts).

  </details>

commits:
  [{"SHA":"02306b97a8c5c963bf7c554d41e55a7e9689ec7d","Message":"Bump the pip group across 1 directory with 4 updates\n\nBumps the pip group with 4 updates in the / directory: [gunicorn](https://github.com/benoitc/gunicorn), [tqdm](https://github.com/tqdm/tqdm), [aiohttp](https://github.com/aio-libs/aiohttp) and [idna](https://github.com/kjd/idna).\n\n\nUpdates `gunicorn` from 21.2.0 to 22.0.0\n- [Release notes](https://github.com/benoitc/gunicorn/releases)\n- [Commits](https://github.com/benoitc/gunicorn/compare/21.2.0...22.0.0)\n\nUpdates `tqdm` from 4.66.2 to 4.66.3\n- [Release notes](https://github.com/tqdm/tqdm/releases)\n- [Commits](https://github.com/tqdm/tqdm/compare/v4.66.2...v4.66.3)\n\nUpdates `aiohttp` from 3.9.3 to 3.9.4\n- [Release notes](https://github.com/aio-libs/aiohttp/releases)\n- [Changelog](https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst)\n- [Commits](https://github.com/aio-libs/aiohttp/compare/v3.9.3...v3.9.4)\n\nUpdates `idna` from 3.6 to 3.7\n- [Release notes](https://github.com/kjd/idna/releases)\n- [Changelog](https://github.com/kjd/idna/blob/master/HISTORY.rst)\n- [Commits](https://github.com/kjd/idna/compare/v3.6...v3.7)\n\n---\nupdated-dependencies:\n- dependency-name: gunicorn\n  dependency-type: direct:development\n  dependency-group: pip\n- dependency-name: tqdm\n  dependency-type: direct:development\n  dependency-group: pip\n- dependency-name: aiohttp\n  dependency-type: indirect\n  dependency-group: pip\n- dependency-name: idna\n  dependency-type: indirect\n  dependency-group: pip\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e","Author":"dependabot[bot]"}]


title: Quizme. A pair of patterns to generate questions and evaluate answers.
author: marcandreuf
author_url: https://github.com/marcandreuf
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/380
merged_at: 2024-05-11 03:11:24+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  This is a new pattern to create questions on a given subject. This pattern should help anyone to review their understanding of a given subject. The readme.md file have an example usage of this pattern.

  ## Related issues
  None

  ## Screenshots
  ![screen_shot_2024-05-06_18-13](https://github.com/danielmiessler/fabric/assets/167619/0c600dfb-3489-4fe0-a27a-9b7084afbfc7)

  ### Notes:
  This is my first draft of the pattern. I will be improving and expanding this type of tutor patterns for self learning. I would like to get some initial feedback and ideas to help me evolve this concept faster.

  Many thanks,
  Marc Andreu

commits:
  [{"SHA":"f92cbe97131bbbf6d31b58d22249b677ac732f8e","Message":"first draft","Author":"Marc Andreu"},{"SHA":"159272ac74127dbf0495a07cf01216142d08427d","Message":"adding human readable md","Author":"Marc Andreu"},{"SHA":"29d0f02842fe84ca2c68049683895df896ecd826","Message":"Merge pull request #1 from marcandreuf/feature/tutor_quiz\n\nFeature create quiz","Author":"Marc Andreu"},{"SHA":"3bdaba968d71cc94fc46799f3fb21dad53fe1253","Message":"Implementation of the analyze answers pattern. Updated the create quiz pattern","Author":"Marc Andreu"}]


title: Fix for broken link pointing to /client
author: profetik-777
author_url: https://github.com/profetik-777
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/382
merged_at: 2024-05-11 03:17:59+00:00
created_at: 2025-07-16 04:25:34
body:
  Broken reference link. Replaced it with new:

  https://github.com/danielmiessler/fabric/tree/main/installer/client

  See issue: 
  https://github.com/danielmiessler/fabric/issues/366 

commits:
  [{"SHA":"f39a3d80cb5e5029b03c15daf91167470c0fd5ed","Message":"Previous link to client was old/broken.\n\nReplaced it with new:\n\nhttps://github.com/danielmiessler/fabric/tree/main/installer/client","Author":"profetik-777"}]


title: Ensure env file created in setup when no API keys provided
author: tomraulet
author_url: https://github.com/tomraulet
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/387
merged_at: 2024-05-13 18:13:44+00:00
created_at: 2025-07-16 04:25:34
body:
  Hi there,

  thank you for providing fabric to the community. This PR is a little contribution to solve the following loop : setup -> no API key provided --> need to setup. The use case is to only use local models with ollama.
  Feel free to do whatever you want with this btw ;)

  ## What this Pull Request (PR) does
  This PR add a private function at the end of setup step to ensure .env file is created even if no API key provided. This lets user with only local models use fabric without creating useless openAPI key for example.

  ## Related issues
  closes #285 

commits:
  [{"SHA":"7354e8d961f8ec3361c5194e2fca99c079f3dfdc","Message":"Ensure env file created in setup when no API keys provided","Author":"Thomas Raulet"}]


title: New pattern to summarize key parts of academic papers
author: sluosapher
author_url: https://github.com/sluosapher
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/389
merged_at: 2024-05-13 18:13:06+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  This PR adds a new pattern to summarize key parts of academic paper. Different from the analyze_paper patter where the focus is to assess the paper's quality, this new pattern focuses on summarize most important contents in which researchers may be interested.

commits:
  [{"SHA":"36ccc67eae44dc1c1538cad12139ac0b6c846160","Message":"added pattern of summarize_paper","Author":"Song Luo"},{"SHA":"1f57c01b5b88dcdd0f97054c7e8c0b8b6586f66b","Message":"updated system prompt; added README","Author":"Song Luo"},{"SHA":"bf563260a6bbcedefccacb37d0275f64c9c7b358","Message":"added patterns/summarize_paper/README.md","Author":"Song Luo"},{"SHA":"dcd7fc42200f41093e62327de37f6955837e4ccd","Message":"Merge branch 'danielmiessler:main' into main","Author":"Song Luo"}]


title: Fix a typo
body:
  ## What this Pull Request (PR) does
  Fixes a typo.

  ## Related issues
  None.

  ## Screenshots
  Nope.

author: antonaut
author_url: https://github.com/antonaut
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/390
merged_at: 2024-05-18 23:01:26+00:00
created_at: 2025-07-16 04:25:34
commits:
  [{"SHA":"4980d60b33d93ff90b1b262cd3477dfe4dd53023","Message":"Fix small typo in README","Author":"Anton Erholt"}]


title: Update README.md Typo
author: workentin
author_url: https://github.com/workentin
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/392
merged_at: 2024-05-18 23:01:09+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Fixes Typo in Required Python Version of README
  ## Related issues
  Please reference any open issues this PR relates to in here.
  If it closes an issue, type `closes #[ISSUE_NUMBER]`.

  ## Screenshots
  Provide any screenshots you may find relevant to facilitate us understanding your PR.

commits:
  [{"SHA":"d3c8976b11f52dd8fd0b583774b1b5b1e320c2bb","Message":"Update README.md Typo","Author":"workentin"}]


title: feat: introduced pattern for Git diff summaries
author: obswork
author_url: https://github.com/obswork
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/393
merged_at: 2024-05-18 23:00:45+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does

  CHANGES:
  - New system.md file created for summarizing git diffs
  - Detailed steps for summarizing Git diffs outlined.
  - Emphasis on creating concise, impactful update bullets.
  - Introduction of conventional commits for clear change tracking.

  ## Related issues

  N/A

  ## Screenshots

  None, but the commit for this change was created with the help of this pattern 🎉 

commits:
  [{"SHA":"62b4ecfc43da0f515fbc6898df9554421bf5340c","Message":"feat: introduced pattern for Git diff summaries\n\nCHANGES:\n- New system.md file created for summarizing git diffs\n- Detailed steps for summarizing Git diffs outlined.\n- Emphasis on creating concise, impactful update bullets.\n- Introduction of conventional commits for clear change tracking.","Author":"obswork"}]


title: Add configurable date format for save helper app
author: piercecohen1
author_url: https://github.com/piercecohen1
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/400
merged_at: 2024-05-23 17:05:51+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does

  ### Feature

  This PR adds the ability to configure the date format of the target filename via setting the `SAVE_DATE_FORMAT` variable in `~/.config/fabric/.env`.

  Previously, there was no way to get rid of the date being prepended to the target filename, but with this PR this is now possible by leaving `SAVE_DATE_FORMAT` empty like so:

  ```
  SAVE_DATE_FORMAT=''
  ```

  #### More Details:

  - Update `DATE_FORMAT` to be configurable using the `SAVE_DATE_FORMAT` environment variable
  - Modify target filename generation to handle cases where `SAVE_DATE_FORMAT` is left blank
  - Default to date format "%Y-%m-%d" if `SAVE_DATE_FORMAT` is not set

  ### Bug Fix
  Prevent NoneType from ending up in the tags. The previous fix did not work and "None" would still end up in the tags if `FABRIC_FRONTMATTER_TAGS` was not specified.

  ## Related issues
  None

  ## Screenshots
  N/A

commits:
  [{"SHA":"3e624ded2f5c7b82daf01f8099ab847d78a7769b","Message":"Add configurable date format for save helper app\n\n- Update DATE_FORMAT to be configurable using the SAVE_DATE_FORMAT environment variable\n- Modify target filename generation to handle cases where SAVE_DATE_FORMAT is left blank\n- Default to date format \"%Y-%m-%d\" if SAVE_DATE_FORMAT is not set","Author":"Pierce Cohen"},{"SHA":"a4065c51b4564a2b135167b7afb1f938c678fae4","Message":"Bug fixes for tags\n\n- Prevent generation_date tag format from being modified when SAVE_DATE_FORMAT is\n  specified\n- Prevent NoneType from ending up in the tags (previous fix did not work)","Author":"Pierce Cohen"}]


title: added analyze_debate
author: her0marodeur
author_url: https://github.com/her0marodeur
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/406
merged_at: 2024-05-23 17:05:26+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Adds a pattern that analyzes debates. Inspired by a debate that stretched over 200 messages in the amazing UL community Discord.

commits:
  [{"SHA":"9555228daf7950698b90785c5af34185ae6b44b3","Message":"added analyze_debate","Author":"her0marodeur"}]


title: Bump requests from 2.31.0 to 2.32.0 in the pip group across 1 directory
author: dependabot
author_url: https://github.com/apps/dependabot
author_type: bot
url: https://github.com/danielmiessler/Fabric/pull/408
merged_at: 2024-05-23 17:05:16+00:00
created_at: 2025-07-16 04:25:34
body:
  Bumps the pip group with 1 update in the / directory: [requests](https://github.com/psf/requests).

  Updates `requests` from 2.31.0 to 2.32.0
  <details>
  <summary>Release notes</summary>
  <p><em>Sourced from <a href="https://github.com/psf/requests/releases">requests's releases</a>.</em></p>
  <blockquote>
  <h2>v2.32.0</h2>
  <h2>2.32.0 (2024-05-20)</h2>
  <h2>🐍 PYCON US 2024 EDITION 🐍</h2>
  <p><strong>Security</strong></p>
  <ul>
  <li>Fixed an issue where setting <code>verify=False</code> on the first request from a
  Session will cause subsequent requests to the <em>same origin</em> to also ignore
  cert verification, regardless of the value of <code>verify</code>.
  (<a href="https://github.com/psf/requests/security/advisories/GHSA-9wx4-h78v-vm56">https://github.com/psf/requests/security/advisories/GHSA-9wx4-h78v-vm56</a>)</li>
  </ul>
  <p><strong>Improvements</strong></p>
  <ul>
  <li><code>verify=True</code> now reuses a global SSLContext which should improve
  request time variance between first and subsequent requests. It should
  also minimize certificate load time on Windows systems when using a Python
  version built with OpenSSL 3.x. (<a href="https://redirect.github.com/psf/requests/issues/6667">#6667</a>)</li>
  <li>Requests now supports optional use of character detection
  (<code>chardet</code> or <code>charset_normalizer</code>) when repackaged or vendored.
  This enables <code>pip</code> and other projects to minimize their vendoring
  surface area. The <code>Response.text()</code> and <code>apparent_encoding</code> APIs
  will default to <code>utf-8</code> if neither library is present. (<a href="https://redirect.github.com/psf/requests/issues/6702">#6702</a>)</li>
  </ul>
  <p><strong>Bugfixes</strong></p>
  <ul>
  <li>Fixed bug in length detection where emoji length was incorrectly
  calculated in the request content-length. (<a href="https://redirect.github.com/psf/requests/issues/6589">#6589</a>)</li>
  <li>Fixed deserialization bug in JSONDecodeError. (<a href="https://redirect.github.com/psf/requests/issues/6629">#6629</a>)</li>
  <li>Fixed bug where an extra leading <code>/</code> (path separator) could lead
  urllib3 to unnecessarily reparse the request URI. (<a href="https://redirect.github.com/psf/requests/issues/6644">#6644</a>)</li>
  </ul>
  <p><strong>Deprecations</strong></p>
  <ul>
  <li>Requests has officially added support for CPython 3.12 (<a href="https://redirect.github.com/psf/requests/issues/6503">#6503</a>)</li>
  <li>Requests has officially added support for PyPy 3.9 and 3.10 (<a href="https://redirect.github.com/psf/requests/issues/6641">#6641</a>)</li>
  <li>Requests has officially dropped support for CPython 3.7 (<a href="https://redirect.github.com/psf/requests/issues/6642">#6642</a>)</li>
  <li>Requests has officially dropped support for PyPy 3.7 and 3.8 (<a href="https://redirect.github.com/psf/requests/issues/6641">#6641</a>)</li>
  </ul>
  <p><strong>Documentation</strong></p>
  <ul>
  <li>Various typo fixes and doc improvements.</li>
  </ul>
  <p><strong>Packaging</strong></p>
  <ul>
  <li>Requests has started adopting some modern packaging practices.
  The source files for the projects (formerly <code>requests</code>) is now located
  in <code>src/requests</code> in the Requests sdist. (<a href="https://redirect.github.com/psf/requests/issues/6506">#6506</a>)</li>
  <li>Starting in Requests 2.33.0, Requests will migrate to a PEP 517 build system
  using <code>hatchling</code>. This should not impact the average user, but extremely old
  versions of packaging utilities may have issues with the new packaging format.</li>
  </ul>
  <h2>New Contributors</h2>
  <ul>
  <li><a href="https://github.com/matthewarmand"><code>@​matthewarmand</code></a> made their first contribution in <a href="https://redirect.github.com/psf/requests/pull/6258">psf/requests#6258</a></li>
  <li><a href="https://github.com/cpzt"><code>@​cpzt</code></a> made their first contribution in <a href="https://redirect.github.com/psf/requests/pull/6456">psf/requests#6456</a></li>
  </ul>
  <!-- raw HTML omitted -->
  </blockquote>
  <p>... (truncated)</p>
  </details>
  <details>
  <summary>Changelog</summary>
  <p><em>Sourced from <a href="https://github.com/psf/requests/blob/main/HISTORY.md">requests's changelog</a>.</em></p>
  <blockquote>
  <h2>2.32.0 (2024-05-20)</h2>
  <p><strong>Security</strong></p>
  <ul>
  <li>Fixed an issue where setting <code>verify=False</code> on the first request from a
  Session will cause subsequent requests to the <em>same origin</em> to also ignore
  cert verification, regardless of the value of <code>verify</code>.
  (<a href="https://github.com/psf/requests/security/advisories/GHSA-9wx4-h78v-vm56">https://github.com/psf/requests/security/advisories/GHSA-9wx4-h78v-vm56</a>)</li>
  </ul>
  <p><strong>Improvements</strong></p>
  <ul>
  <li><code>verify=True</code> now reuses a global SSLContext which should improve
  request time variance between first and subsequent requests. It should
  also minimize certificate load time on Windows systems when using a Python
  version built with OpenSSL 3.x. (<a href="https://redirect.github.com/psf/requests/issues/6667">#6667</a>)</li>
  <li>Requests now supports optional use of character detection
  (<code>chardet</code> or <code>charset_normalizer</code>) when repackaged or vendored.
  This enables <code>pip</code> and other projects to minimize their vendoring
  surface area. The <code>Response.text()</code> and <code>apparent_encoding</code> APIs
  will default to <code>utf-8</code> if neither library is present. (<a href="https://redirect.github.com/psf/requests/issues/6702">#6702</a>)</li>
  </ul>
  <p><strong>Bugfixes</strong></p>
  <ul>
  <li>Fixed bug in length detection where emoji length was incorrectly
  calculated in the request content-length. (<a href="https://redirect.github.com/psf/requests/issues/6589">#6589</a>)</li>
  <li>Fixed deserialization bug in JSONDecodeError. (<a href="https://redirect.github.com/psf/requests/issues/6629">#6629</a>)</li>
  <li>Fixed bug where an extra leading <code>/</code> (path separator) could lead
  urllib3 to unnecessarily reparse the request URI. (<a href="https://redirect.github.com/psf/requests/issues/6644">#6644</a>)</li>
  </ul>
  <p><strong>Deprecations</strong></p>
  <ul>
  <li>Requests has officially added support for CPython 3.12 (<a href="https://redirect.github.com/psf/requests/issues/6503">#6503</a>)</li>
  <li>Requests has officially added support for PyPy 3.9 and 3.10 (<a href="https://redirect.github.com/psf/requests/issues/6641">#6641</a>)</li>
  <li>Requests has officially dropped support for CPython 3.7 (<a href="https://redirect.github.com/psf/requests/issues/6642">#6642</a>)</li>
  <li>Requests has officially dropped support for PyPy 3.7 and 3.8 (<a href="https://redirect.github.com/psf/requests/issues/6641">#6641</a>)</li>
  </ul>
  <p><strong>Documentation</strong></p>
  <ul>
  <li>Various typo fixes and doc improvements.</li>
  </ul>
  <p><strong>Packaging</strong></p>
  <ul>
  <li>Requests has started adopting some modern packaging practices.
  The source files for the projects (formerly <code>requests</code>) is now located
  in <code>src/requests</code> in the Requests sdist. (<a href="https://redirect.github.com/psf/requests/issues/6506">#6506</a>)</li>
  <li>Starting in Requests 2.33.0, Requests will migrate to a PEP 517 build system
  using <code>hatchling</code>. This should not impact the average user, but extremely old
  versions of packaging utilities may have issues with the new packaging format.</li>
  </ul>
  </blockquote>
  </details>
  <details>
  <summary>Commits</summary>
  <ul>
  <li><a href="https://github.com/psf/requests/commit/d6ebc4a2f1f68b7e355fb7e4dd5ffc0845547f9f"><code>d6ebc4a</code></a> v2.32.0</li>
  <li><a href="https://github.com/psf/requests/commit/9a40d1277807f0a4f26c9a37eea8ec90faa8aadc"><code>9a40d12</code></a> Avoid reloading root certificates to improve concurrent performance (<a href="https://redirect.github.com/psf/requests/issues/6667">#6667</a>)</li>
  <li><a href="https://github.com/psf/requests/commit/0c030f78d24f29a459dbf39b28b4cc765e2153d7"><code>0c030f7</code></a> Merge pull request <a href="https://redirect.github.com/psf/requests/issues/6702">#6702</a> from nateprewitt/no_char_detection</li>
  <li><a href="https://github.com/psf/requests/commit/555b870eb19d497ddb67042645420083ec8efb02"><code>555b870</code></a> Allow character detection dependencies to be optional in post-packaging steps</li>
  <li><a href="https://github.com/psf/requests/commit/d6dded3f00afcf56a7e866cb0732799045301eb0"><code>d6dded3</code></a> Merge pull request <a href="https://redirect.github.com/psf/requests/issues/6700">#6700</a> from franekmagiera/update-redirect-to-invalid-uri-test</li>
  <li><a href="https://github.com/psf/requests/commit/bf24b7d8d17da34be720c19e5978b2d3bf94a53b"><code>bf24b7d</code></a> Use an invalid URI that will not cause httpbin to throw 500</li>
  <li><a href="https://github.com/psf/requests/commit/2d5f54779ad174035c5437b3b3c1146b0eaf60fe"><code>2d5f547</code></a> Pin 3.8 and 3.9 runners back to macos-13 (<a href="https://redirect.github.com/psf/requests/issues/6688">#6688</a>)</li>
  <li><a href="https://github.com/psf/requests/commit/f1bb07d39b74d6444e333879f8b8a3d9dd4d2311"><code>f1bb07d</code></a> Merge pull request <a href="https://redirect.github.com/psf/requests/issues/6687">#6687</a> from psf/dependabot/github_actions/github/codeql-act...</li>
  <li><a href="https://github.com/psf/requests/commit/60047ade64b0b882cbc94e047198818ab580911e"><code>60047ad</code></a> Bump github/codeql-action from 3.24.0 to 3.25.0</li>
  <li><a href="https://github.com/psf/requests/commit/31ebb8102c00f8cf8b396a6356743cca4362e07b"><code>31ebb81</code></a> Merge pull request <a href="https://redirect.github.com/psf/requests/issues/6682">#6682</a> from frenzymadness/pytest8</li>
  <li>Additional commits viewable in <a href="https://github.com/psf/requests/compare/v2.31.0...v2.32.0">compare view</a></li>
  </ul>
  </details>
  <br />


  [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=requests&package-manager=pip&previous-version=2.31.0&new-version=2.32.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

  Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

  [//]: # (dependabot-automerge-start)
  [//]: # (dependabot-automerge-end)

  ---

  <details>
  <summary>Dependabot commands and options</summary>
  <br />

  You can trigger Dependabot actions by commenting on this PR:
  - `@dependabot rebase` will rebase this PR
  - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
  - `@dependabot merge` will merge this PR after your CI passes on it
  - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
  - `@dependabot cancel merge` will cancel a previously requested merge and block automerging
  - `@dependabot reopen` will reopen this PR if it is closed
  - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
  - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
  - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
  - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
  - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency
  - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions
  You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/danielmiessler/fabric/network/alerts).

  </details>

commits:
  [{"SHA":"12d96982b411eac41e3b0d3de952b23bcae81746","Message":"---\nupdated-dependencies:\n- dependency-name: requests\n  dependency-type: direct:development\n  dependency-group: pip\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e","Author":"dependabot[bot]"}]


title: Fixes a small typo in the `analyze_answers` pattern.
author: nadavc
author_url: https://github.com/nadavc
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/409
merged_at: 2024-05-23 17:04:45+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Fixes a small typo. 

  ## Related issues
  n/a

  ## Screenshots
  Provide any screenshots you may find relevant to facilitate us understanding your PR.

commits:
  [{"SHA":"2f2ee31aaf45a6fdca0188379525ac43c4dfbe9c","Message":"Update README.md","Author":"Nadav Cohen"}]


title: Add new pattern analyze_patent + bugfix in helper.py
author: silverstreak
author_url: https://github.com/silverstreak
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/415
merged_at: 2024-05-30 22:10:38+00:00
created_at: 2025-07-16 04:25:34
body:
  Add pattern analyze_patent

  ## What this Pull Request (PR) does
  Adds a new pattern called analyze_patent which (as is evident from the name) analyzes the text (claims and description) of a patent. The output is: field of technology; the problem being addressed; the advantages provided; assessment of novelty; assessment of inventive step; summary of the patent; keywords describing the main concept.

  ## Related issues
  Not applicable

  ## Screenshots
  Not applicable

commits:
  [{"SHA":"4f6a02c8b851ed370164b82303064fc8e4c06806","Message":"Create system.md\n\nAdd pattern analyze_patent","Author":"silverstreak"},{"SHA":"497a048b595b6a1a09683fa8c6939aae4681e69f","Message":"Bugfix in helper.py\n\nBugfix for the error: \r\n\r\nTraceback (most recent call last):\r\n  File \"/home/xxx/.local/bin/fabric\", line 8, in \u003cmodule\u003e\r\n    sys.exit(cli())\r\n             ^^^^^\r\n  File \"/home/xxx/.local/share/pipx/venvs/fabric/lib/python3.12/site-packages/installer/client/cli/fabric.py\", line 148, in main\r\n    session.list_sessions()\r\n  File \"/home/xxx/.local/share/pipx/venvs/fabric/lib/python3.12/site-packages/installer/client/cli/helper.py\", line 67, in list_sessions\r\n    most_recent = self.find_most_recent_file().split(\"/\")[-1]\r\n                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\nAttributeError: 'NoneType' object has no attribute 'split'","Author":"silverstreak"},{"SHA":"b0c6913f6d3298f49e946e91662e392b9a6c5e58","Message":"Added SOLUTION section to analyze_patent\n\nAdded a SOLUTION section; removed empty lines; added instruction to be verbose and detailed","Author":"silverstreak"}]


title: Update system.md
author: aidenberzins
author_url: https://github.com/aidenberzins
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/417
merged_at: 2024-05-30 22:09:59+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Adds Input to end of system.md

  ## Related issues
  N/A

  ## Screenshots
  N/A

commits:
  [{"SHA":"0674be7b6495949a0bd249bd1546daf0df624fcc","Message":"Update system.md","Author":"Aiden Berzins"}]


title: Create_Better_Frames - "Our" to "Are"
author: joesvetz
author_url: https://github.com/joesvetz
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/436
merged_at: 2024-05-30 22:08:09+00:00
created_at: 2025-07-16 04:25:34
body:
  Line 67 said: "When our frames our different,..."
  Changed it to say: "When our frames are different,..."

  ## What this Pull Request (PR) does
  This fixes a single very small type-o in the Create_Better_Frames system.md file.

  ## Related issues
  N/A

  ## Screenshots
  N/A

commits:
  [{"SHA":"e5ec6d59e8cd1780e45a225632e1275e1626c4e6","Message":"Create_Better_Frames - \"Our\" to \"Are\"\n\nLine 67 said: \"When our frames our different,...\"\r\nChanged it to say: \"When our frames are different,...\"","Author":"joesvetz"}]


title: Create coding_master pattern
author: helloIlovegimkit
author_url: https://github.com/helloIlovegimkit
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/477
merged_at: 2024-05-31 22:39:09+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  This simply adds a coding_master pattern (and no I am not a troll)


  ## Screenshots
  Provide any screenshots you may find relevant to facilitate us understanding your PR.


  ![image](https://github.com/danielmiessler/fabric/assets/164534666/79f38193-60d6-4d65-ab92-a599fa4b7f3a)
  ![image](https://github.com/danielmiessler/fabric/assets/164534666/cfd557b1-a544-4f78-9810-080a1092b4c0)

commits:
  [{"SHA":"47ee5c47b2601d1b9ff27da11e7e6a525d1a50a5","Message":"Create system.md","Author":"helloIlovegimkit"},{"SHA":"c3b146a0f96b59e23c801f831008f41fcb799191","Message":"Update system.md","Author":"helloIlovegimkit"},{"SHA":"01bb9359109b1075c0b980a3ba282975b89d689f","Message":"Update README.md","Author":"helloIlovegimkit"}]


title: added create_git_diff_commit pattern
author: digitalw00t
author_url: https://github.com/digitalw00t
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/480
merged_at: 2024-05-31 22:38:34+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  This pull request adds a new pattern that will use the output of a git diff or git show HEAD and create the git commands to commit those changes to the current repo.

  ## Related issues
  New pattern, does not correct any issues.

commits:
  [{"SHA":"e63e4ea44b650b9013ec4c8db84affa421213040","Message":"added create_git_diff_commit pattern","Author":"draeician"},{"SHA":"5f75128234a02c7e122fcfece8d0febde58d5bad","Message":"added README.md for the create_git_diff_commit pattern with usag for it","Author":"draeician"}]


title: feat: add create_stride_threat_model pattern
author: xvnpw
author_url: https://github.com/xvnpw
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/481
merged_at: 2024-05-31 22:38:11+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does

  Pattern to create STRIDE-based threat model for cybersecurity.

  ### Baseline - existing `create_threat_scenarios` with claude-3-opus-20240229:
  ```
  Here is a threat model for the AI Nutrition-Pro application architecture:

  THREAT SCENARIOS
  - Attacker gains access to API keys and makes unauthorized API calls
  - Attacker exploits vulnerability in API Gateway to bypass authentication 
  - Attacker exploits vulnerability in API application to access sensitive data
  - Attacker exploits vulnerability in control plane to modify configurations
  - Attacker gains access to AWS environment and accesses RDS databases
  - Attacker exploits vulnerability in meal planner app to upload malicious content 
  - Attacker exploits vulnerability in ChatGPT integration to manipulate responses
  - Insider threat - admin abuses privileges to access sensitive data
  - Denial of service attack overwhelms API Gateway and makes system unavailable
  - Data breach exposes sensitive client data stored in RDS databases
  - Compliance violation due to improper handling of regulated health data
  - Attacker tampers with data in transit between components 
  - Secrets like API keys and database credentials are exposed
  - Vulnerabilities in open source or third-party components are exploited
  - Improper logging and monitoring fails to detect malicious activity

  THREAT MODEL ANALYSIS
  - Focus on securing API keys and implementing strong authentication 
  - Harden API Gateway with security best practices and regular patching
  - Implement least privilege, input validation, output encoding in API app
  - Lock down control plane, use MFA, audit logging for changes
  - Follow AWS security best practices for securing cloud infrastructure 
  - Implement content scanning and filtering for uploads from meal planner
  - Validate and sanitize data from ChatGPT before using in responses
  - Use logging, access reviews, DLP to mitigate insider threats
  - Implement rate limiting and auto-scaling to defend against DoS
  - Encrypt data at rest and in transit, limit access to DBs
  - Understand and follow relevant healthcare data regulations like HIPAA
  - Use TLS encryption and validate certificates for data in transit
  - Use secret management solution and avoid hardcoding secrets in code
  - Scan for and promptly patch open source and third-party vulns
  - Implement robust logging and monitoring to detect anomalous activity

  RECOMMENDED CONTROLS
  - Require strong authentication for API clients using OAuth or similar
  - Regularly pen test and patch API Gateway, API app, control plane
  - Implement Web Application Firewall to protect against common web exploits
  - Use AWS IAM roles and policies to enforce least privilege access
  - Encrypt data at rest in RDS using AWS KMS and TDE
  - Scan and filter content uploads for malware and inappropriate content
  - Validate data from ChatGPT and encode output to prevent injection
  - Require MFA for admin access and log all privileged activities 
  - Configure auto-scaling and rate limiting to mitigate DoS attacks
  - Classify and protect regulated data, use tokenization if needed
  - Encrypt all data in transit using TLS 1.2+, use AWS Certificate Manager
  - Use AWS Secrets Manager to securely store and rotate secrets
  - Continuously scan for and remediate vulnerabilities in all components
  - Enable AWS CloudTrail, GuardDuty and CloudWatch for security monitoring

  NARRATIVE ANALYSIS
  The AI Nutrition-Pro architecture utilizes several interconnected components, including a web control plane, API Gateway, API application, and databases, along with integrations to external meal planner apps and the ChatGPT service. This complexity expands the attack surface.

  The most critical threats to consider are unauthorized access to APIs and databases containing sensitive client data, exploitation of vulnerabilities in the API or control plane, and abuse of the ChatGPT integration. Compliance with healthcare regulations is also a key concern.

  To mitigate these risks, the architecture should incorporate strong authentication and access controls, encryption of data at rest and in transit, secure configuration and patching of all components, filtering of untrusted input, and robust logging and monitoring.

  While no system is 100% secure, implementing layered security controls across the stack can significantly reduce the likelihood and impact of a breach. Ongoing penetration testing and vulnerability management are recommended.

  CONCLUSION
  A defense-in-depth approach with controls at every layer is needed to adequately protect this AI-powered healthcare solution.
  ```

  ### Proof of work with claude-3-opus-20240229

  To recreate:
  ```
  wget https://raw.githubusercontent.com/xvnpw/ai-nutrition-pro-design-claude3-opus/main/ARCHITECTURE.md
  cat ARCHITECTURE.md | fabric --stream --pattern create_stride_threat_model -m claude-3-opus-20240229 > fabric_claude3_opus_stride_threat_model.md
  ```

  ```
  # THREAT MODEL

  | THREAT ID | COMPONENT NAME | THREAT NAME | STRIDE CATEGORY | WHY APPLICABLE | HOW MITIGATED | MITIGATION | LIKELIHOOD EXPLANATION | IMPACT EXPLANATION | RISK SEVERITY |
  |-----------|----------------|-------------|-----------------|----------------|---------------|------------|------------------------|--------------------|--------------| 
  | 0001 | API Gateway | Attacker bypasses authentication and gains unauthorized access to backend API | Spoofing | API Gateway is the entry point to the system and if authentication can be bypassed, an attacker could gain unauthorized access to backend functionality. | Authentication is implemented using API keys for each Meal Planner application. | - Implement strong authentication mechanisms like OAuth2 or JWT tokens<br>- Protect API keys and rotate them regularly<br>- Implement rate limiting and IP blocking for failed authentication attempts | Medium - While authentication is implemented, API keys could potentially be compromised. Strong authentication and protection of secrets lowers the likelihood. | High - Unauthorized access to backend API could allow attacker to access sensitive data or abuse functionality. | High |
  | 0002 | API Gateway | Attacker performs denial of service attack against API Gateway | Denial of Service | API Gateway is exposed to the internet and could be targeted by DoS attacks to disrupt availability of the AI Nutrition-Pro service. | Not explicitly mitigated in current design. | - Implement rate limiting and throttling at the API Gateway<br>- Use AWS Shield for DDoS protection<br>- Have ability to quickly scale out infrastructure<br>- Define a DoS response playbook | Medium - DoS is a common attack and without explicit controls in place, likelihood is elevated. | High - Successful DoS would make service unavailable impacting customers. | High |
  | 0003 | Web Control Plane | Attacker gains ability to configure system properties as an administrator | Elevation of Privilege | The Web Control Plane allows administrators to configure sensitive system properties. If access controls are weak, an attacker could gain admin privileges. | Not explicitly mitigated in current design. | - Implement strong authentication and authorization for admin access<br>- Enforce least privilege and separation of duties for admins<br>- All admin actions should be logged and monitored<br>- Implement multi-factor authentication for admins | Medium - Insider threat or compromised admin credentials are common attack vectors. Explicit controls around admin access required to lower likelihood. | High - Admin access would give attacker full control over the system configuration. | High |
  | 0004 | Backend API | Attacker tampers with dietitian content samples being uploaded | Tampering | The Backend API accepts content samples that are used for AI generation. If an attacker can tamper with these samples, they could influence the AI model. | Not explicitly mitigated in current design. | - Authenticate and authorize Meal Planner apps uploading samples<br>- Validate and sanitize all content samples<br>- Digitally sign samples to detect tampering<br>- Monitor for anomalous content samples | Medium - Some authentication in place but content validation and integrity controls not mentioned, leaving tampering possible. | Medium - Tampered samples may degrade quality of AI model but unlikely to cause major damage as training process should be resilient. | Medium |
  | 0005 | Backend API | Attacker extracts sensitive data by abusing AI model | Information Disclosure | The Backend API returns AI generated content that could potentially include sensitive data if the model is trained on sensitive samples. | Not explicitly mitigated in current design. | - Carefully curate and review training data<br>- Implement output filtering to detect sensitive data<br>- Perform penetration testing of AI model<br>- Have ability to quickly retrain model if issues found | Low - Assumes training data is carefully curated. Some residual risk of data leakage in generated content. | Medium - Leakage of sensitive data would violate privacy and potentially cause reputational damage. | Low |
  | 0006 | API Database | Attacker gains unauthorized access to API database | Information Disclosure | The API database stores content samples and requests/responses used for training. An attacker with access could exfiltrate this potentially sensitive data. | Traffic to database is encrypted with TLS. | - Implement strong authentication and authorization for database access<br>- Encrypt sensitive data at rest<br>- Tightly restrict network access to database<br>- Monitor for anomalous database access patterns | Low - Encrypted communication and (assumed) restricted access limit likelihood of unauthorized database access. | Medium - Exfiltration of training data could allow attacker insights into model and potentially include sensitive information. | Low |

  # QUESTIONS & ASSUMPTIONS

  - What authentication and authorization mechanisms are used for the Web Control Plane, especially for administrator access?
    - Assumption: Strong authentication (e.g. MFA) and role-based access control is used to restrict administrator privileges. All admin actions are logged.

  - Are there validation and integrity checks on the dietitian content samples uploaded to the Backend API? 
    - Assumption: Content samples are validated, sanitized and integrity protected as they are the input to the AI model training process.

  - What processes are in place to curate training data and test model outputs for sensitive data leakage?
    - Assumption: Training data is carefully curated and model outputs are tested for leakage of sensitive information. Ability to quickly retrain model if issues are discovered.

  - Are there encryption and access controls in place for sensitive data stored in the API Database? 
    - Assumption: Sensitive API Database data is encrypted at rest and access is tightly restricted to only what is required.

  - What is the patching and upgrade strategy for all system components to address newly discovered vulnerabilities?
    - Assumption: A robust patch and upgrade process is in place to quickly deploy fixes to systems when new vulnerabilities are reported. Penetration testing is performed regularly.

  The threat model focuses on the most impactful and likely threats based on the provided design. Threats that are deemed lower risk due to existing mitigations or inherent nature of the system are de-prioritized. The model makes some assumptions around security best practices being followed. Further discussion would be needed to validate these assumptions and identify any additional threats or mitigations.

  ```

  ### Input - example of design document
  https://github.com/xvnpw/ai-nutrition-pro-design-claude3-opus/blob/main/ARCHITECTURE.md

  ### Baseline 2 - threat model using https://github.com/xvnpw/ai-threat-modeling-action
  https://github.com/xvnpw/ai-nutrition-pro-design-claude3-opus/blob/main/ARCHITECTURE_SECURITY.md

  ## Related issues
  Please reference any open issues this PR relates to in here.
  If it closes an issue, type `closes #[ISSUE_NUMBER]`.

  ## Screenshots
  Provide any screenshots you may find relevant to facilitate us understanding your PR.

commits:
  [{"SHA":"545c6599e87b18f6681874d9239d354f106662cc","Message":"feat: add create_stride_threat_model pattern","Author":"xvnpw"}]


title: Added idea compass pattern
author: HillviewCap
author_url: https://github.com/HillviewCap
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/486
merged_at: 2024-06-01 22:36:03+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  My PR adds the create_idea_compass pattern using the Zettelkasten method of note taking
  Below is the output using Claude Opus

  Here is a summary of the key points from the survey on adversarial reconnaissance techniques:

  Tags:: #cybersecurity #reconnaissance #adversary #taxonomy

  Date:: 04/19/2023

  # Idea/Question:: 
  The paper provides a comprehensive survey and taxonomy of the techniques, tactics, and tools that adversaries use to conduct reconnaissance activities throughout the cyber attack process. It aims to categorize and understand this complex but vital aspect of cyber attacks.

  # Definition::
  Reconnaissance refers to the ongoing process used by attackers to gather as much information as possible about target systems or networks that can be used to conduct various types of malicious activity, such as gaining unauthorized access or denial of service. It plays a crucial role throughout the cyber kill chain.

  # Evidence::
  - Reconnaissance enables attackers to understand system configurations and find ways to exploit vulnerabilities. Case studies like the Ukrainian power grid cyberattack and Bangladesh Bank cyber heist show the importance of both external and internal reconnaissance.

  - The paper categorizes target information into non-technical (organization details, people information) and technical (network, host, application, user-level). 

  - Reconnaissance occurs in two main phases - external (before gaining network access) and internal (after breaching the network).

  - The taxonomy categorizes recon techniques based on the source: third-party (footprinting), human-based (social engineering), and system-based (scanning, sniffing, side-channel attacks).

  # Source::
  Roy, S., Sharmin, N., Acosta, J.C., Kiekintveld, C. and Laszka, A., 2022. Survey and Taxonomy of Adversarial Reconnaissance Techniques. ACM Computing Surveys (CSUR).

  ___
  #### West:: Similar
  - Other cyber kill chain models and attack life cycle frameworks
  - Penetration testing and red teaming methodologies 
  - Threat intelligence and indicators of compromise

  #### East:: Opposite
  - Defensive measures like intrusion detection, deception, moving target defense
  - Security awareness training to counter social engineering
  - Limiting publicly available information about systems and people

  #### North:: theme/question
  - How do different types of adversaries conduct reconnaissance?  
  - What motivates attackers to prioritize certain information?
  - How can defenders detect and mitigate different recon techniques?

  #### South:: What does this lead to?
  - Improved modeling of adversary reconnaissance process and decision making
  - Empirical studies on prevalence and effectiveness of recon techniques
  - Development of targeted defensive measures based on the taxonomy
  - Analysis of evolving recon techniques for new technologies like AI/ML systems

  ## Related issues
  No issue adding a new pattern

  ## Screenshots
  ![image](https://github.com/danielmiessler/fabric/assets/57773927/a11c72dc-59c0-47d6-9309-d3c7f5b235e8)

commits:
  [{"SHA":"2244750d13172b2eda0aba333020a065247130f3","Message":"Added idea compass pattern","Author":"HillviewCap"}]


title: Refactored save.py
author: BrianArbuckle
author_url: https://github.com/BrianArbuckle
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/494
merged_at: 2024-06-01 22:34:39+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  This addressed a couple of minor refactorings including, swapping a conditional and removing an unused f-string.

  ## Related issues
  Please reference any open issues this PR relates to in here.
  If it closes an issue, type `closes #493 `.

  ## Screenshots
  Provide any screenshots you may find relevant to facilitate us understanding your PR.

commits:
  [{"SHA":"47ee8c5446af82f07cf9d37678c7af7c31285ec4","Message":"Refactored save.py","Author":"Brian Arbuckle"}]


title: Add pattern for analyzing logs
author: PatrickRuddiman
author_url: https://github.com/PatrickRuddiman
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/512
merged_at: 2024-06-03 22:11:14+00:00
created_at: 2025-07-16 04:25:34
body:
  # Summary
  This adds a new pattern `analyze_logs` the pattern defines a prompt for log analysis.

  *Note* - when used with a real log file make sure you have enough tokens in your rate limits as you will quickly use them all. 

commits:
  [{"SHA":"82b99e9b13ea27f4ee0785ce691c55f9ccd085bf","Message":"Add system.md file for analyzing logs and identifying patterns and anomalies","Author":"Patrick Ruddiman"}]


title: removes .python-version
author: bdmorin
author_url: https://github.com/bdmorin
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/515
merged_at: 2024-06-03 22:11:00+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  removes .python-version from `main`
  Currently there is a syntax error in the file.
  The python version dependancy is already handled in pyproject.toml, so .python-version isn't required.
  ## Related issues
  [#496]

commits:
  [{"SHA":"d5bda3045b4cf06c4060a1c69026861566c4bc1c","Message":"removes .python-version","Author":"Brian Morin"}]


title: Fix anchor links in README
body:
  ## What this Pull Request (PR) does
  I noticed some of the links to sections are broken.

author: MichaelCurrin
author_url: https://github.com/MichaelCurrin
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/516
merged_at: 2024-06-03 22:10:42+00:00
created_at: 2025-07-16 04:25:34
commits:
  [{"SHA":"a08e644a503de6e6ebeca669134e7e6588713b78","Message":"fix anchor links in README","Author":"Michael Currin"},{"SHA":"089b005377ba1a7ba543b9b6e0cc48c8d06fefc8","Message":"fix naming links","Author":"Michael Currin"}]


title: Created Tweet Monster Pattern
author: PrivacyOsint2
author_url: https://github.com/PrivacyOsint2
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/521
merged_at: 2024-06-03 22:10:31+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Created Tweet Monster Pattern
  Any help would be great to make it better.

commits:
  [{"SHA":"ad523fb15c5a2392fb55d51748adc11d5410c284","Message":"Create system.md","Author":"PrivacyOsint2"},{"SHA":"da342447e9ca8af7dea1b016f2a6df3d5f5f8f2a","Message":"Update system.md","Author":"PrivacyOsint2"}]


title: fix typos and formatting in nuclei template rule
author: MichaelCurrin
author_url: https://github.com/MichaelCurrin
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/525
merged_at: 2024-06-03 22:10:11+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Avoid possible confusion by the AI with typos and bad formatting

  ## Related issues
  closed #524

commits:
  [{"SHA":"bcf6bb92f0d6662362e1039f3cbe87382170ac4f","Message":"fix typos and formatting in nuclei template rule","Author":"Michael Currin"}]


title: feat: improve create_stride_threat_model pattern
author: xvnpw
author_url: https://github.com/xvnpw
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/531
merged_at: 2024-06-06 19:48:44+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Improve `create_stride_threat_model` pattern

  ## Proof of work with `claude-3-opus-20240229`

  ```markdown
  # ASSETS

  The following data and assets need protection in the AI Nutrition-Pro system:

  1. Dietitians' content samples stored in the API database
  2. Request and response data related to LLM interactions stored in the API database
  3. Control plane data (tenant information, billing data, configuration) stored in the Control Plane Database
  4. API keys used for authentication of Meal Planner applications
  5. Access credentials for the ChatGPT-3.5 LLM service

  # TRUST BOUNDARIES

  The following trust boundaries are identified in the AI Nutrition-Pro system:

  1. Between the Meal Planner application and the API Gateway
  2. Between the API Gateway and the API Application
  3. Between the API Application and the ChatGPT-3.5 LLM service
  4. Between the Web Control Plane and the Control Plane Database
  5. Between the API Application and the API database

  # DATA FLOWS

  The following data flows are identified in the AI Nutrition-Pro system:

  1. Meal Planner application uploads dietitians' content samples to AI Nutrition-Pro via API Gateway (crosses trust boundary)
  2. Meal Planner application fetches AI-generated results from AI Nutrition-Pro via API Gateway (crosses trust boundary)
  3. API Gateway forwards requests to API Application for processing (crosses trust boundary)
  4. API Application sends requests to ChatGPT-3.5 LLM service for content generation (crosses trust boundary)
  5. Web Control Plane reads/writes data to Control Plane Database
  6. API Application reads/writes data to API database

  # THREAT MODEL

  | THREAT ID | COMPONENT NAME | THREAT NAME | STRIDE CATEGORY | WHY APPLICABLE | HOW MITIGATED | MITIGATION | LIKELIHOOD EXPLANATION | IMPACT EXPLANATION | RISK SEVERITY |
  |-----------|----------------|-------------|-----------------|----------------|---------------|------------|------------------------|--------------------|--------------| 
  | 0001 | API Gateway | Unauthorized access to API endpoints | Spoofing | Attackers may try to access API endpoints without proper authentication to gain unauthorized access to data or functionality. | Authentication with API keys for each Meal Planner application is implemented. | Ensure strong API key generation, secure storage, and regular rotation. Implement rate limiting and input validation at the API Gateway level. | Low, as authentication and rate limiting are in place, making it difficult for attackers to gain unauthorized access. | High, as unauthorized access could lead to data breaches or misuse of the system. | Medium |
  | 0002 | API Database | Exposure of sensitive data stored in the database | Information Disclosure | The API database contains sensitive information such as dietitians' content samples and LLM request/response data, which could be exposed in case of a breach. | Not explicitly mentioned in the design document. | Encrypt sensitive data at rest, use strong access controls and authentication for database access, and regularly monitor for suspicious activities. | Medium, as the database is a valuable target for attackers, but the likelihood depends on the security measures in place. | High, as the exposure of sensitive data could lead to reputational damage and loss of trust. | High |
  | 0003 | API Application | Injection of malicious content in LLM requests | Tampering | Attackers may attempt to inject malicious content in the requests sent to the ChatGPT-3.5 LLM service to manipulate the generated content or exploit vulnerabilities. | Input filtering is mentioned as a responsibility of the API Gateway. | Implement strict input validation and sanitization in the API Application to prevent injection attacks. Use secure coding practices and keep the application updated with the latest security patches. | Medium, as the API Gateway provides some level of input filtering, but the effectiveness depends on the implementation. | Medium, as the impact of manipulated content depends on how it is used in the Meal Planner applications. | Medium |
  | 0004 | Web Control Plane | Elevation of privileges in the control plane | Elevation of Privilege | Attackers may attempt to gain unauthorized access to the Web Control Plane to manipulate configuration, billing data, or perform other privileged actions. | Not explicitly mentioned in the design document. | Implement strong authentication and access controls for the Web Control Plane, regularly review and audit user permissions, and monitor for suspicious activities. | Low, as the Web Control Plane is an internal system, and the likelihood of privilege escalation depends on the access controls in place. | High, as unauthorized access to the control plane could lead to system-wide impact and compromise. | Medium |
  | 0005 | ChatGPT-3.5 LLM Service | Denial of service due to excessive requests | Denial of Service | If the API Application sends a high volume of requests to the ChatGPT-3.5 LLM service, it may cause a denial of service, impacting the availability of the AI Nutrition-Pro system. | Rate limiting is mentioned as a responsibility of the API Gateway. | Implement rate limiting and throttling mechanisms in the API Application to prevent excessive requests to the LLM service. Monitor the usage and set appropriate limits based on the service agreement. | Low, as rate limiting is in place at the API Gateway level, reducing the likelihood of excessive requests reaching the LLM service. | Medium, as the impact of a temporary denial of service depends on the duration and the availability requirements of the Meal Planner applications. | Low |

  # QUESTIONS & ASSUMPTIONS

  1. Q: Are there any additional security measures in place for the API database, such as encryption at rest or strong access controls?
     A: The design document does not explicitly mention encryption at rest or specific access controls for the API database. It is assumed that standard security practices are followed, but additional measures may be necessary to protect sensitive data.

  2. Q: How are user permissions managed and audited in the Web Control Plane?
     A: The design document does not provide details on user permission management and auditing in the Web Control Plane. It is assumed that appropriate access controls and regular audits are in place to prevent unauthorized access and privilege escalation.

  3. Q: Is there a mechanism to detect and respond to security incidents or anomalies in the system?
     A: The design document does not mention any specific incident detection and response mechanisms. It is assumed that monitoring and logging are in place to identify and investigate suspicious activities, but a dedicated incident response plan may be necessary.

  4. Q: Are there any compliance requirements or regulations that the AI Nutrition-Pro system needs to adhere to?
     A: The design document does not specify any compliance requirements or regulations. It is assumed that the system is not subject to strict regulatory requirements, but this should be verified based on the specific use case and industry.

  5. Q: Is there a process for regularly updating and patching the components of the AI Nutrition-Pro system?
     A: The design document does not mention a specific process for updating and patching the system components. It is assumed that a regular update and patch management process is in place to address known vulnerabilities and maintain the security of the system.

  ```

commits:
  [{"SHA":"c8c7dedacd9e6321b052a15dfd1db5602afedaac","Message":"feat: improve create_stride_threat_model pattern","Author":"xvnpw"}]


title: Fix typo in README.md
body:
  ## What this Pull Request (PR) does
  Fix typo in README.md

author: Saik0s
author_url: https://github.com/Saik0s
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/535
merged_at: 2024-06-06 19:47:43+00:00
created_at: 2025-07-16 04:25:34
commits:
  [{"SHA":"2d701bc25e82209cdaa7f5eb6e81fa6658cce706","Message":"Fix typo in README.md","Author":"Igor Tarasenko"}]


title: Update README.md
author: rogergarciapages
author_url: https://github.com/rogergarciapages
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/547
merged_at: 2024-06-06 19:40:05+00:00
created_at: 2025-07-16 04:25:34
body:
  typos fixed

  ## What this Pull Request (PR) does
  Please briefly describe what this PR does.

  ## Related issues
  Please reference any open issues this PR relates to in here.
  If it closes an issue, type `closes #[ISSUE_NUMBER]`.

  ## Screenshots
  Provide any screenshots you may find relevant to facilitate us understanding your PR.

commits:
  [{"SHA":"4baacdf0aeacff594cd125115a3ee91fc2b7cfee","Message":"Update README.md\n\ntypos fixed","Author":"Roger Garcia"}]


title: Minor spelling for extract business ideas
author: jeffscottward
author_url: https://github.com/jeffscottward
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/556
merged_at: 2024-06-06 19:39:14+00:00
created_at: 2025-07-16 04:25:34
body:
  by to be

  ## What this Pull Request (PR) does
  Please briefly describe what this PR does.

  ## Related issues
  Please reference any open issues this PR relates to in here.
  If it closes an issue, type `closes #[ISSUE_NUMBER]`.

  ## Screenshots
  Provide any screenshots you may find relevant to facilitate us understanding your PR.

commits:
  [{"SHA":"5fd8fbbc4439aea5e63174b0c79872787e69bf71","Message":"Minor spelling\n\nby to be","Author":"Jeff Scott Ward"}]


title: feat: add create_pattern pattern
author: blade1981m
author_url: https://github.com/blade1981m
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/559
merged_at: 2024-06-06 19:38:29+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  This pull request includes a pattern to create new fabric patterns

  ## Related issues


  ## Screenshots

commits:
  [{"SHA":"5427cc96ec6116d987e2cf9f7e90539dccd52a63","Message":"feat: add create_pattern pattern","Author":"blade1981m"}]


title: Update README.md
author: youssoufdasilva
author_url: https://github.com/youssoufdasilva
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/569
merged_at: 2024-07-01 20:40:48+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  I love this project and it's OpenSource and CrowdSource nature.
  This PR adds a single word to a readme. 
  Changing "...the stuff read, watch, or listen to." to "...the stuff *WE* read, watch, or listen to."

  Full NEW Sentence:
  > "Not only that, but it's also too easy to forget the stuff we read, watch, or listen to."

commits:
  [{"SHA":"5ad65945141bba26ff37289754fba7d19a087cbb","Message":"Update README.md","Author":"Youssouf da Silva"}]


title: Add create_sigma_rules Pattern
author: bobby-tablez
author_url: https://github.com/bobby-tablez
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/589
merged_at: 2024-07-01 20:40:22+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Add a pattern which takes a cybersecurity related publication and extracts TTP indicators in the form of Sigma rules. 
  https://github.com/SigmaHQ/sigma

  ## Related issues
  none

  ## Screenshots
  none

commits:
  [{"SHA":"f19ceaf16a72d0bfda6881ddc40a819d490d5c97","Message":"Create system.md","Author":"Bobby-Tablez"}]


title: Fixed minor typo in the summarise_paper pattern.
body: app4. roach >> approach
author: elloxar
author_url: https://github.com/elloxar
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/595
merged_at: 2024-07-01 20:38:33+00:00
created_at: 2025-07-16 04:25:34
commits:
  [{"SHA":"b7c1193f72fefa836c856b16ba1b8ce3403183bf","Message":"Fixed minor typo in the summarise_paper pattern.\n\napp4. roach \u003e\u003e approach","Author":"elloxar"}]


title: Update patterns\clean_text\system.md to improve text cleaning instructions
author: Gerkinfeltser
author_url: https://github.com/Gerkinfeltser
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/600
merged_at: 2024-07-01 20:37:46+00:00
created_at: 2025-07-16 04:25:34
body:
  This is a very simple pull to get my "pull request" feet wet! 😄 

  ## What this Pull Request (PR) does
  This adds a single line to the `clean_text` pattern that instructs the llm add capitalization, paragraphs, and other formatting. This makes the output  much more readable and works well with youtube transcripts.

  ## Example:
  (The following is using `meta-llama/llama-3-70b-instruct` as the model for both outputs.)
  ```
  yt "https://www.youtube.com/watch?v=8f5DKSx_nEE" | fabric -p clean_text
  ```
  ### With the added line:
  ```
  Here is the properly formatted text:

  this is NASA's Boeing crew flight test mission, it the very first flight of astronauts aboard Starliner to the International Space Station. The past 24 hours have been a testament to what it's about in human space flight and really all the hard work that they've poured into this spacecraft over many years to get us to this point.

  Toward the end of the day yesterday, uh, I would say it was around 4:30 local time here in Houston, after they had performed some of the demos. We noticed a little bit of increase in the helium leak rate that we talked pre-launch. Um, what we found also was two other leaks in Port manifold one, and that leak was a little larger than the ones we had seen before.

  As a precaution, because we didn't need the capability to have all the thrusters, we're just maintaining attitude, pointing the tail toward the sun. Now, we recovered four of these five thrusters. So what we did is, once the Thruster fails ? when I say Thruster fails, what I mean is the software sees something that it doesn't like about that Thruster ? so the Thruster, uh, is maybe a little less thrust or the thrust rise rate doesn't come up exactly the way that the software is looking for.

  I think we'll have to take a little bit more time to figure out what's going on with the thrusters. Uh, again, the rest of the Rendezvous went really well. The Vesta system, which is navigation system, worked great the whole time. Uh, all those sensors performed well. Um, the NDS system, the NASA docking system, which Jim talked about, is going to be used for Orion, worked extremely well. That system performed nominally. Um, and so most of the vehicle did awesome going into the Rendezvous.
  ```
  ### Without the line:
  ```
  Here is the properly formatted text:

  this is NASA's Boeing crew flight test mission, it the very first flight of astronauts aboard Starliner to the International Space Station. The past 24 hours have been a testament to what it's about in human space flight and really all the hard work that they've poured into this spacecraft over many years to get us to this point. Toward the end of the day yesterday, uh, I would say it was around 4:30 local time here in Houston, after they had performed some of the demos, we noticed a little bit of increase in the helium leak rate that we talked pre-launch. Um, what we found also was two other leaks in Port manifold one, and that leak was a little larger than the ones we had seen before. As a precaution, because we didn't need the capability to have all the thrusters, we're just maintaining attitude, pointing the tail toward the sun. Now, we recovered four of these five thrusters. So what we did is, once the Thruster fails, when I say Thruster fails, what I mean is the software sees something that it doesn't like about that Thruster, so the Thruster, uh, is maybe a little less thrust or the thrust rise rate doesn't come up exactly the way that the software is looking for. I think we'll have to take a little bit more time to figure out what's going on with the thrusters. Uh, again, the rest of the Rendevous went really well. The Vesta system, which is navigation system, worked great the whole time. Uh, all those sensors performed well. Um, the NDS system, the NASA docking system, which Jim talked about, is going to be used for Orion, worked extremely well. That system performed nominally. Um, and so most of the vehicle did awesome going into the Rond do.
  ```

commits:
  [{"SHA":"1f809a4e290fe2badea6da0a4b0178521fe46756","Message":"Update patterns\\clean_text\\system.md to improve text cleaning instructions","Author":"Gerk"}]


title: Update utils.py to support Claude 3.5 Sonnet
author: azmaveth
author_url: https://github.com/azmaveth
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/630
merged_at: 2024-06-20 18:03:47+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Updates the Claude models to use 3.5 Sonnet instead of 3.0 Sonnet. Since the API costs are identical, there are few use cases for the older model, so it has been replaced instead of adding the new model to the array.

commits:
  [{"SHA":"dad02cda33a2b20647c9ca71ab0159feb045310e","Message":"Update utils.py to support Claude 3.5 Sonnet","Author":"azmaveth"},{"SHA":"e1fc5517f54d0f952030aefa9ad38e0a84df1fa4","Message":"Update utils.py to add Claude 3 Sonnet back in for backwards compatibility","Author":"azmaveth"}]


title: Add create_coding_project Pattern
author: jp-cpe
author_url: https://github.com/jp-cpe
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/632
merged_at: 2024-06-23 22:58:41+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Adds a pattern called "create_coding_project"

  ## Related issues
  Net new feature add. No issues being closed.

  ## Screenshots
  No screenshots. See README.md for example.

commits:
  [{"SHA":"33e0eddee65cd6da0da84a8a06ba9fda384de848","Message":"Added the 'create_coding_project' directory. Added README.md. Added system.md (prompt).","Author":"Jonathan Porter"},{"SHA":"1aca359098c9aa506191286a04266754282f9e50","Message":"Merge branch 'danielmiessler:main' into create_coding_project","Author":"Jonathan Porter"},{"SHA":"ad70c01c1482224627a718d85afe64e042342b85","Message":"Added create_coding_project pattern","Author":"Jonathan Porter"},{"SHA":"a2842fd1afcd2499654d9e976efeefdeaa3bfe99","Message":"Merge remote-tracking branch 'origin/create_coding_project' into create_coding_project","Author":"Jonathan Porter"},{"SHA":"896223985f345e0d3e51075d2ed46ae3ff37e4ea","Message":"fixed readme","Author":"Jonathan Porter"}]


title: Update extract article wisdom README.md
author: joskezelensky
author_url: https://github.com/joskezelensky
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/641
merged_at: 2024-07-01 20:34:43+00:00
created_at: 2025-07-16 04:25:34
body:
  fixed curl commands - are they obsolete?

  ## What this Pull Request (PR) does
  fixed some links
  ## Related issues
  Please reference any open issues this PR relates to in here.
  If it closes an issue, type `closes #[ISSUE_NUMBER]`.

commits:
  [{"SHA":"1da9b0bb797d5dac8c1eaad39eab87e9d0ee2c74","Message":"Update extract article wisdom README.md\n\nfixed curl commands - are they obsolete?","Author":"joskezelensky"}]


title: Create system.md for create_tags pattern
author: paulrobello
author_url: https://github.com/paulrobello
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/644
merged_at: 2024-07-01 20:33:43+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Add a pattern which takes input text and generates a list of space separated tags relevant to the input. Especially useful for tagging in apps like Obsidian

  Tested using gpt-3.5-turbo, gpt-4, gpt-4o

  ## Related issues
  None

  ## Screenshots
  None

commits:
  [{"SHA":"f927cf24ec8ff9a3c8fe183fcca93bf26792aec4","Message":"Create system.md for create_tags pattern","Author":"Paul Robello"}]


title: added my personal pattern for summarize my course lectures
author: CyRamos
author_url: https://github.com/CyRamos
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/646
merged_at: 2024-07-01 20:33:10+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  I wanted to share the personal pattern I created for my learning path. 
  This pattern is called 'summarize_lecture' and it should summarize the course's lecture from its transcripts. 
  Hopefully it could help other people except me :)

  ## Related issues
  None 

  ## Screenshots
  Not necessary 

commits:
  [{"SHA":"669abde0813242a29d79d8dacf75d4bc708cf8be","Message":"added my personal pattern for summarize my course lecutres","Author":"CyRamos"}]


title: Fix some typos in analyze_spiritual_text
author: fureigh
author_url: https://github.com/fureigh
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/647
merged_at: 2024-07-01 20:32:12+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  This PR fixes a few typos in `analyze_spiritual_text`'s `system.md`:
  - tenants -> tenets
  - a handful of punctuation edits

  ## Related issues
  N/A.

  ## Screenshots
  N/A. Reviewing the diff will probably be clearest.

  Thank you!

commits:
  [{"SHA":"1b0338bbe8d255410976f9b6a0b26afbc2b571d6","Message":"Fix some typos in analyze_spiritual_text\n\n- tenants -\u003e tenets\r\n- a handful of punctuation edits","Author":"Fureigh"}]


title: Fix some typos in create_logo
author: fureigh
author_url: https://github.com/fureigh
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/648
merged_at: 2024-07-01 20:31:52+00:00
created_at: 2025-07-16 04:25:34
body:
  Thanks for all of your work!

  ## What this Pull Request (PR) does
  This PR fixes a few punctuation typos in `create_logo`:
  * removes a stray quotation mark
  * adds a missing period for consistency
  * adds a missing hyphen
  * changes a hyphen to an em-dash

  ## Related issues
  N/A.

  ## Screenshots
  N/A.

commits:
  [{"SHA":"219a423330a42a94957cafa32835d3eab244538c","Message":"Fix some typos in create_logo\n\n* remove a stray quotation mark\r\n* add a missing period for consistency\r\n* add a missing hyphen\r\n* change a hyphen to an em-dash","Author":"Fureigh"}]


title: Fix missing text in the HABITS step (extract_wisdom)
author: weekscharlie
author_url: https://github.com/weekscharlie
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/651
merged_at: 2024-07-01 20:31:26+00:00
created_at: 2025-07-16 04:25:34
body:
  Added missing language back to the HABITS step.

  ## What this Pull Request (PR) does
  Please briefly describe what this PR does.

  ## Related issues
  Please reference any open issues this PR relates to in here.
  If it closes an issue, type `closes #[ISSUE_NUMBER]`.

  ## Screenshots
  Provide any screenshots you may find relevant to facilitate us understanding your PR.

commits:
  [{"SHA":"9ba7b1059e4821933eb73d0e728f3d3933234986","Message":"Update system.md\n\nAdded missing language back to the HABITS step.","Author":"weekscharlie"}]


title: Update system.md - Typo, language error
body:
  ## What this Pull Request (PR) does
  Fix a typo ("OUPTUP") and a language error ("it's" -> "its")

author: Hullow
author_url: https://github.com/Hullow
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/660
merged_at: 2024-07-01 20:28:52+00:00
created_at: 2025-07-16 04:25:34
commits:
  [{"SHA":"b672abba8864c5d0711a7d1d83891492f31c27f2","Message":"Update system.md - Typo, language error","Author":"Hullow"}]


title: fix: typo in system.md
author: nilp0inter
author_url: https://github.com/nilp0inter
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/666
merged_at: 2024-07-01 20:28:35+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Fixes a small typo

  ## Related issues
  N/A

  ## Screenshots
  N/A

commits:
  [{"SHA":"b08a053092d334ac2bb3bff578513a8e2600fc99","Message":"fix: typo in system.md","Author":"Roberto Abdelkader Martínez Pérez"}]


title: Removing the note about pattern updates changing the default model
author: BtrYrSlf
author_url: https://github.com/BtrYrSlf
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/667
merged_at: 2024-07-01 20:28:14+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  This removes the "NOTE: This will revert the default model to gpt4-turbo. please run --changeDefaultModel to once again set the default model" that appears (1) in the readme file, and (2) in the --help text. The note appears to reflect behavior that is no longer happening, at least, I've not observed this reversion.

  ## Note
  If this behavior still happens, given some specific conditions, then the note should be changed (instead of removed) to call that out.

commits:
  [{"SHA":"6df49a44ad82cb243a3134e79a1fb5bf7e305808","Message":"Update README.md\n\nRemoved \"NOTE: This will revert the default model to gpt4-turbo. please run --changeDefaultModel to once again set the default model\". This note appears to reflect behavior that is no longer happening.","Author":"BtrYrSlf"},{"SHA":"6dbc7a380f8ae8eaa1723aa42a31d4f88d094f74","Message":"Update fabric.py\n\nRemoved \"NOTE: This will revert the default model to gpt4-turbo. please run --changeDefaultModel to once again set the default model\". This note appears to reflect behavior that is no longer happening.","Author":"BtrYrSlf"}]


title: fix (grammar)
author: MentalGear
author_url: https://github.com/MentalGear
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/670
merged_at: 2024-07-01 20:25:32+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Please briefly describe what this PR does.

  ## Related issues
  Please reference any open issues this PR relates to in here.
  If it closes an issue, type `closes #[ISSUE_NUMBER]`.

  ## Screenshots
  Provide any screenshots you may find relevant to facilitate us understanding your PR.

commits:
  [{"SHA":"d0b7ca574040dc77c9f5ce3aed74bf2e14afb0d1","Message":"fix (grammar)","Author":"MentalGear"}]


title: Add 2 patterns: `summarize_prompt` which was used for `suggest_pattern`
author: kevnk
author_url: https://github.com/kevnk
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/678
merged_at: 2024-07-01 21:12:31+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  My goal is use a fabric command to learn how to better use fabric and all of its commands. 

  1. I created a pattern to summarize the purpose, nuances, and output of a prompt
  2. I attempted to create a 2nd pattern that would suggest a pattern when I wanted to do something (eg. Find the pattern that may help me list the how-to steps in a video) and if there were no patterns, then give suggestions for `create_pattern`
  3. I created a script to use the `summarize_prompt` pattern to summarize each of fabric's patterns for use in the `suggest_pattern` prompt

  ## Related issues
  #676 

commits:
  [{"SHA":"b86f682c84789079dccb337cb8f806616ccab2d1","Message":"Add summarize_prompt pattern","Author":"Kevin Kirchner"},{"SHA":"3972665da9fa906b704e22e57879662def138aa3","Message":"first attempt at suggest_pattern pattern with user.md generated with script that uses summarize_prompt pattern","Author":"Kevin Kirchner"}]


title: Adding write_hackerone_report
author: Rhynorater
author_url: https://github.com/Rhynorater
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/679
merged_at: 2024-07-01 21:11:54+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  This adds the `write_hackerone_report` pattern to assist with generating HackerOne reports.

commits:
  [{"SHA":"8379e1c7a9af5bd855d06c15947066c957155914","Message":"Adding write_hackerone_report","Author":"Justin Gardner (Rhynorater)"}]


title: Create system.md for extract_jokes pattern
author: paulrobello
author_url: https://github.com/paulrobello
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/681
merged_at: 2024-08-16 19:28:38+00:00
created_at: 2025-07-16 04:25:34
body:
  What this Pull Request (PR) does
  Add a pattern which takes input text and extracts a list of jokes with punchlines.

  Related issues
  none

  Screenshots
  none

  Tested using gpt-3.5-turbo, gpt-4, gpt-4o

commits:
  [{"SHA":"df34b73a27f4f269a363cc52bea2f572fa847047","Message":"Create system.md for extract_jokes pattern","Author":"Paul Robello"}]


title: create explain_math pattern
author: black-backdoor
author_url: https://github.com/black-backdoor
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/683
merged_at: 2024-08-16 19:26:45+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  explain_math is a pattern designed to help you understand mathematical concepts in a clear and engaging way


  Tested using gpt-3.5-turbo, gpt-4, gpt-4o

commits:
  [{"SHA":"45d2643234fef5c88c5bd2d520ff8e60426f17aa","Message":"create explain_math pattern","Author":"black-backdoor"}]


title: Addition of `extract_instructions`
author: johnconnor-sec
author_url: https://github.com/johnconnor-sec
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/692
merged_at: 2024-08-16 19:00:34+00:00
created_at: 2025-07-16 04:25:34
body:
  ## Addition of extract_instructions
  This pattern is for use with `yt --transcript`, specifically for videos from Network Chuck, David Bombal, and other tech creators. I've been using `extract_instructions` with gpt-4o as the LLM to help me along my technical learning journey.

  ### Changes Made
   - Adds a pattern, `extract_instructions`

  ### What this Pull Request (PR) does:
  This adds a system message to fabric prompting the LLM to extract the instructions from a video transcript and detail them in step-by-step, actionable goals.  The pattern is presented to the LLM in the 'official pattern tempate' formula. The goal of creating this prompt was to attempt to extract the code/commands that are often spoken aloud in tech tutorial videos and have them ordered into actionable steps.  

  ### Testing
  This pattern works amazingly with gpt-4o and is surprisingly sub optimal with claude-3.5-sonnet. 

commits:
  [{"SHA":"a7f726521437acd1f3caa27bba530864ec0fa834","Message":"Create system.md for extract_instructions\n\nI created this pattern using the official_pattern_template and piping it to improve_prompt multiple times.","Author":"John Connor"}]


title: feat: add a pattern to draft or respond to an email
author: praharshbhatt
author_url: https://github.com/praharshbhatt
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/702
merged_at: 2024-08-16 18:59:15+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Added a Pattern to Create / Respond to Email, in a formal fashion.

commits:
  [{"SHA":"3d1a55e4eb8c60f7eb48be22dac7818828e73515","Message":"feat: add a pattern to draft or respond to an email","Author":"Praharsh Bhatt"}]


title: Add a mermaid diagram that can render in github markdown readmes
author: idvorkin
author_url: https://github.com/idvorkin
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/704
merged_at: 2024-08-16 18:58:43+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does

  Add a mermaid diagram creator that renders nicely on github ... For an E.g. 

  https://gist.github.com/idvorkin/81085d6533e29c3c38b23a1dd012b1bf

  <img width="1099" alt="image" src="https://github.com/danielmiessler/fabric/assets/280981/aecd03e9-7405-4c64-9337-b68a43a561f3">

commits:
  [{"SHA":"f03197259483e65b8b48ee0f830585630ecce215","Message":"Add a mermaid diagram that can render in github markdown readmes","Author":"Igor Dvorkin"}]


title: Fixed typo 'bolt' to 'bold' in pattern templates
author: Suyog-16
author_url: https://github.com/Suyog-16
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/706
merged_at: 2024-08-16 18:58:17+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Fixes a typo in the output instructions of the pattern template files. Corrects "bolt" to "bold" for clarity and consistency.

  ## Related issues
  Fixes the issue #696 

  ## Screenshots
  ![Screenshot 2024-07-08 203611](https://github.com/danielmiessler/fabric/assets/156910948/9c553654-9b10-48d3-9a1f-c868613d7110)

  ![Screenshot 2024-07-08 203752](https://github.com/danielmiessler/fabric/assets/156910948/58dd364f-a9cb-4d67-ad5c-b4b15ea321af)

  ![Screenshot 2024-07-08 203920](https://github.com/danielmiessler/fabric/assets/156910948/0312f6ba-bccf-4ba2-85d0-2e7c0c61159b)

commits:
  [{"SHA":"937a2603287e0f7821c82474b3c7055c04947db4","Message":"Fixed typo 'bolt' to 'bold' in pattern templates","Author":"Suyog Ghimire"}]


title: Typoooooo My bad Daniel
body: Typooo
author: Rhynorater
author_url: https://github.com/Rhynorater
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/722
merged_at: 2024-08-16 18:55:55+00:00
created_at: 2025-07-16 04:25:34
commits:
  [{"SHA":"9ef8e424731e12970f43871999e4956d3344c143","Message":"Update system.md\n\nTypooo","Author":"Justin Gardner"}]


title: docs: update summarize_git_diff to refine output and instruction clarity
author: richardphi1618
author_url: https://github.com/richardphi1618
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/723
merged_at: 2024-08-16 18:55:36+00:00
created_at: 2025-07-16 04:25:34
body:
  CHANGES:
  - Add intro sentence output requirement
  - Emphasize succinct bullet points in CHANGES section
  - Remove redundant output instruction
  - Expand commit prefix list in instructions
  - Add imperative mood and present tense guidelines
  - Mention Deis Commit Style Guide adherence

  ## What this Pull Request (PR) does
  expands on summarize_git_diff

  ## Related issues
  After using `git commit -m "$(git diff --staged | fabric -p summarize_git_diff)"` for awhile I found that 
  a) commits were still using past tense at times
  b) would skip the intro sentence

  This aims to address these issue while also providing more guidance. 

commits:
  [{"SHA":"bba3182d57b36690f81b69477a80446dc0ed3e58","Message":"docs: update system.md to refine output and instruction clarity\n\nCHANGES:\n- Add intro sentence output requirement\n- Emphasize succinct bullet points in CHANGES section\n- Remove redundant output instruction\n- Expand commit prefix list in instructions\n- Add imperative mood and present tense guidelines\n- Mention Deis Commit Style Guide adherence","Author":"richard blanchette"}]


title: Correct typos in documentation files
author: wilfriedago
author_url: https://github.com/wilfriedago
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/793
merged_at: 2024-08-16 18:52:31+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  fix various spelling and grammatical errors to improve readability and clarity.

  ## Related issues
  #772

commits:
  [{"SHA":"8d8a3659d5fe4d1fadac6fb40535ab1f4997236c","Message":"docs: correct typos in documentation files\n\nfix various spelling and grammatical errors to improve readability and clarity.","Author":"Wilfried AGO"}]


title: Update patterns/extract_article_wisdom/README.md, missing word for clarity
author: sko9370
author_url: https://github.com/sko9370
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/795
merged_at: 2024-08-16 18:50:58+00:00
created_at: 2025-07-16 04:25:34
body:
  inserted "you" into "...to forget the stuff read, watch, or listen to" so that it reads "...to forget the stuff you read, watch, or listen to"

  ## What this Pull Request (PR) does
  Inserted "you" into "...to forget the stuff read, watch, or listen to" so that it reads "...to forget the stuff you read, watch, or listen to"

  ## Related issues
  N/A

  ## Screenshots
  N/A

commits:
  [{"SHA":"d6c64b68eeee91ef0f0e0107964b69a97a627458","Message":"Update README.md, missing word for clarity\n\ninserted \"you\" into \"...to forget the stuff read, watch, or listen to\" so that it reads \"...to forget the stuff you read, watch, or listen to\"","Author":"Sang Oh"}]


title: Add pattern to analyze email headers for SPF, DKIM and DMARC
author: drhitchen
author_url: https://github.com/drhitchen
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/797
merged_at: 2024-08-16 18:50:27+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Adds a new pattern called analyze_email_headers to analyze SPF, DKIM, and DMARC in email headers.

  ## Related issues
  None

commits:
  [{"SHA":"e72bf4d7cfd5357e708f804209cee2bb3f6bb41a","Message":"new pattern to analyze email headers for SPF, DKIM and DMARC","Author":"Doug Hitchen"},{"SHA":"a78b5dcc54e664ac7be12549dbafec846766c821","Message":"Add empty user.md for consistency","Author":"Doug Hitchen"},{"SHA":"e9ef0415d35fdece610006452b61380ed0f51bc7","Message":"Improved analyze_email_headers pattern","Author":"Doug Hitchen"}]


title: fix(ci): upload built binaries to GitHub Releases on tag creation
author: p5
author_url: https://github.com/p5
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/810
merged_at: 2024-08-17 10:11:32+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Updates the GitHub Actions workflow to be triggered on tag creation.
  On tag creation, it runs the regular builds, but the only difference is a final step to upload the artifacts to GitHub Releases so they are discoverable.

  Also manages the Go version in a single go.mod file, rather than across two different files, where the workflow version is easily forgotten. 

  Finally updates the binary names to not include the distribution.  ubuntu-latest binaries work on Fedora, so therefore it makes more sense to me to call them `linux` and `darwin`.

  ## Related issues
  Closes #808 

commits:
  [{"SHA":"845b4003e781122acf64aace5b86406ea23711ae","Message":"fix(ci): upload built binaries to GitHub Releases on tag creation","Author":"Robert Sturla"},{"SHA":"01169cf71da32d07f2da9177c2aacea49f70d904","Message":"fix(ci): standardise binary names","Author":"Robert Sturla"},{"SHA":"3b35d88611d8bfae01476c0e2a833db1e2300d0e","Message":"chore(ci): keep macos binary around in release assets","Author":"Robert Sturla"}]


title: patterns fixes
author: criadoperez
author_url: https://github.com/criadoperez
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/836
merged_at: 2024-08-20 21:12:15+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Fixes some patterns

  ## Related issues
  Related to PR #698 that was closed because it was the python version.

  These include changes on the GO version

commits:
  [{"SHA":"02f90361e5349aee64a12c80b656756134e3b4eb","Message":"patterns fixes","Author":"Alejandro"}]


title: Fix spelling error in fabric.go
author: PickleOgre
author_url: https://github.com/PickleOgre
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/837
merged_at: 2024-08-20 21:11:39+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Fixed a possible spelling error that occurred during setup where the function SetupVendors would print "skiped" when it skipped a vendor. Changed the output to "skipped".

  ## Related issues
  Please reference any open issues this PR relates to in here.
  If it closes an issue, type `closes #[ISSUE_NUMBER]`.

  ## Screenshots
  Provide any screenshots you may find relevant to facilitate us understanding your PR.

commits:
  [{"SHA":"8a39866513449da50e1013494b3b239359b9a925","Message":"Fix spelling error in fabric.go","Author":"Josiah Lawrence"},{"SHA":"077824f6a771fbb8aaba1c77cd2c70ae5b9461df","Message":"Update ollama.go","Author":"Josiah Lawrence"}]


title: Adding new pattern to help analyze CFP submissions for conference org…
author: rdegges
author_url: https://github.com/rdegges
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/842
merged_at: 2024-08-20 21:11:11+00:00
created_at: 2025-07-16 04:25:34
body:
  Adding a new pattern which is very useful for conference organizers and can help with the reviewing of CFP submissions.

commits:
  [{"SHA":"adc57b14ed674b9e1d37dce77e4dd20d7a6688ae","Message":"Adding new pattern to help analyze CFP submissions for conference organizers.","Author":"Randall Degges"},{"SHA":"035c0bb0cae1d785f22367b6f43f4e2a704ea9c5","Message":"Merge branch 'main' into analyze_cfp_submission_pattern","Author":"Randall Degges"}]


title: Update README.md
body: Fix typo
author: iqbalabd
author_url: https://github.com/iqbalabd
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/844
merged_at: 2024-08-20 21:10:23+00:00
created_at: 2025-07-16 04:25:34
commits:
  [{"SHA":"4473b68d9bfbfc31b750b92be3cca65b57ba9b75","Message":"Update README.md\n\nFix typo","Author":"Iqbal Abdullah"}]


title: remove duplicate usage
body:
  ## What this Pull Request (PR) does
  Removes a duplicate usage block in the readme

author: fail-open
author_url: https://github.com/fail-open
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/848
merged_at: 2024-08-20 21:09:11+00:00
created_at: 2025-07-16 04:25:34
commits:
  [{"SHA":"60d9393c873c6cd5ef3c7a1e3e92098cdd3f7612","Message":"remove duplicate usage","Author":"failopen"}]


title: test: Implement db unit tests
body: Unit tests for db package
author: eugeis
author_url: https://github.com/eugeis
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/851
merged_at: 2024-08-20 23:03:16+00:00
created_at: 2025-07-16 04:25:34
commits:
  [{"SHA":"1bafde09b64a02ca11f491b2dbd45ef6de5b4de7","Message":"test: Implement db unit tests","Author":"Eugen Eisler"},{"SHA":"ff97b8549753369d7cfa766a577ccebfe487fce5","Message":"ci: split ci and release jobs","Author":"Eugen Eisler"}]


title: Adding new pattern: create_recursive_outline.
author: rdegges
author_url: https://github.com/rdegges
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/852
merged_at: 2024-09-08 01:34:26+00:00
created_at: 2025-07-16 04:25:34
body:
  This pattern is actually based on this incredibly great article: https://learnhowtolearn.org/how-to-build-extremely-quickly/

  The idea is to use this pattern whenever you want to break an idea or task down into small components, fully fleshing out your own TODO list of things to implement to get it working.

  This applies to things like writing articles/papers, creating applications, and much more.

commits:
  [{"SHA":"e12dc5b0e85604fca711f19d98e6bf2040e83885","Message":"Adding new pattern: create_recursive_outline.\n\nThis pattern is actually based on this incredibly great article: https://learnhowtolearn.org/how-to-build-extremely-quickly/\n\nThe idea is to use this pattern whenever you want to break an idea or\ntask down into small components, fully fleshing out your own TODO list\nof things to implement to get it working.\n\nThis applies to things like writing articles/papers, creating\napplications, and much more.","Author":"Randall Degges"},{"SHA":"83a1fd104de0dc49f056618f71e23d6154a978fb","Message":"Merge branch 'main' into create_recursive_outline","Author":"Randall Degges"},{"SHA":"b025e69875a272721d73ff1c47e1b3355d5633f2","Message":"Merge branch 'main' into create_recursive_outline","Author":"Randall Degges"}]


title: Fix broken link in table of contents in README.md (Migrating -> Migration)
author: jaycgen
author_url: https://github.com/jaycgen
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/860
merged_at: 2024-09-08 01:34:49+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Minor typo fix. The table of contents is broken and links to the word 'Migrating' instead of 'Migration'

  ## Related issues
  N/A

  ## Screenshots
  N/A

commits:
  [{"SHA":"151fff8f8dbf8f66edc57a1151497504529d9792","Message":"Fix broken link in table of contents in README.md (Migrating -\u003e Migration)","Author":"James Craigen"}]


title: Scrape url
author: noamsiegel
author_url: https://github.com/noamsiegel
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/861
merged_at: 2024-09-16 19:37:10+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does

  - added --scrape_url or -u CLI command to curl the content of a webpage in markdown form
  - uses [Jina AI](https://github.com/jina-ai/reader)
  - no API key is needed

  ## Screenshots
  [Video Overview](https://www.loom.com/share/2d8045f90bc543a48f2770dcf96e2b7e)

  ## How to use it
  The easiest way to use it is with this format: fabric -scrape_url {URL} | fabric --stream --pattern  {fabric}. This scrapes the {URL}, transforms it into markdown, and then pipes it into fabric.

commits:
  [{"SHA":"c7449c68b7fee44ae351dc3b6b50672cde47fef9","Message":"chore: Add ScrapeURL flag for CLI to scrape website URL to markdown using Jina AI","Author":"Noam Siegel"},{"SHA":"9b4c20dd19ca9e919b496bf6bd99073f830b9334","Message":"removed debug statements","Author":"Noam Siegel"},{"SHA":"b2be94f2f8d7f1f43248820ca8a91b9d41975d59","Message":"added back some debug statements","Author":"Noam Siegel"},{"SHA":"bac7d8739004cc63f4876d0e4a8cad79ef110ed6","Message":"Merge branch 'main' into scrape_url","Author":"Noam Siegel"},{"SHA":"6f116ca5279698bcc80a061cd544b7783f3a882b","Message":"feat: Add Jina AI integration for web scraping and question search","Author":"Noam Siegel"},{"SHA":"4534ef654429f0161b1c06bd2772dcddd012e85a","Message":"made jina api key optional","Author":"Noam Siegel"}]


title: Create setup_fabric.bat, a batch script to automate setup and running…
author: Thepathakarpit
author_url: https://github.com/Thepathakarpit
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/862
merged_at: 2024-10-13 14:42:27+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does

  Automates setup and usage of fabric in really user friendly way in one command. 
  -It does the following:
  1. Checks for administrator privileges.
  2. Installs Chocolatey (a package manager for Windows) if it's not already installed.
  3. Uses Chocolatey to install Go and Git if they're not already installed.
  4. Installs Fabric and the yt helper using go install.
  5. Runs Fabric setup.
  6. Prompts the user for YouTube and OpenAI API keys and adds them to the Fabric configuration.
  7. Provides a menu-driven interface to:
  8. Run Fabric with custom options
  -List patterns
  -List models
  -Update patterns
  -Exit the script

  Just open cmd as an administrator run setup_fabric.bat (move to folder where it is saved first) and done it will do everything and ask for all the required info from users.

commits:
  [{"SHA":"cf0b9d2c3d88f08e8e56a5c7433c4a942f266d8c","Message":"Create setup_fabric.bat, a batch script to automate setup and running fabric on windows.","Author":"Arpit Pathak"},{"SHA":"5ad994346208aba26ab68f8c0f1a6a5b3c487286","Message":"Merge branch 'main' into patch-1","Author":"Arpit Pathak"}]


title: Impl tests
body: Test for common and cli package and also some cleanup for setup functionality
author: eugeis
author_url: https://github.com/eugeis
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/863
merged_at: 2024-08-22 20:29:08+00:00
created_at: 2025-07-16 04:25:34
commits:
  [{"SHA":"4d77ed30e9cfe31279276e1720863f0eea5d981e","Message":"test: implement test for common package","Author":"Eugen Eisler"},{"SHA":"6996278c8fc7d67e5ef58b0168096c0749db1679","Message":"test: implement test for common package","Author":"Eugen Eisler"},{"SHA":"4b3afb3c8ef004855ab82ac9f3dba08bdf76cbac","Message":"feat: simplify setup logic","Author":"Eugen Eisler"}]


title: Fix groq spelling
body: closes #[#858
author: eugeis
author_url: https://github.com/eugeis
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/865
merged_at: 2024-08-22 20:39:53+00:00
created_at: 2025-07-16 04:25:34
commits:
  [{"SHA":"0549e0e7f04fbddf6187a68f4f641be9aad118ed","Message":"fix: groq spelling","Author":"Eugen Eisler"},{"SHA":"92e4960eeefc4c49354b506611e0c1abc0f9396e","Message":"Merge branch 'main' into fix_groq_spelling","Author":"Eugen Eisler"}]


title: test: core
body: Implement unit tests for core package
author: eugeis
author_url: https://github.com/eugeis
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/866
merged_at: 2024-08-22 21:44:31+00:00
created_at: 2025-07-16 04:25:34
commits:
  [{"SHA":"58c9af6aaccf99e03c5a7fa943590b74b214f76e","Message":"test: core","Author":"Eugen Eisler"},{"SHA":"58c2c26bff2b44a6022568dd1942a345e9af3be5","Message":"test: core","Author":"Eugen Eisler"}]


title: feat: native integration of yt to fabric
author: eugeis
author_url: https://github.com/eugeis
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/867
merged_at: 2024-08-22 22:55:36+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Rework and integration of https://github.com/danielmiessler/yt to fabric


  New CLI parameters would be:

    -y, --youtube=                 YouTube video url to grab transcript, comments from it and send to chat
        --transcript                  Grab transcript from YouTube video and send to chat
        --comments                Grab comments from YouTube video and send to chat

commits:
  [{"SHA":"a67dca253a364635bb5441e924a0e3d8bec93a4b","Message":"feat: native integration of yt tp fabric","Author":"Eugen Eisler"}]


title: fix: correct os.Exit code from -1 to 1 in main.go
author: ALX99
author_url: https://github.com/ALX99
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/871
merged_at: 2024-08-24 14:46:17+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Changes the exit code from -1 to 1. 1 means the program terminated due to a generic error

  ## Related issues
  N/A

  ## Screenshots
  N/A

commits:
  [{"SHA":"e8d5fba256b016c5ea266fd6c28bf37fd2ed8adc","Message":"fix: correct os.Exit code from -1 to 1 in main.go\n\nAs per the os.Exit documentation, the exit code should be in the rage\n[0, 125]","Author":"ALX99"}]


title: fix: shadowing original error
author: ALX99
author_url: https://github.com/ALX99
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/872
merged_at: 2024-08-29 16:56:22+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  This fixes shadowing the original error so that the original error is
  propagated upwards

  ## Related issues
  Shadowing original error

  ## Screenshots
  N/A

commits:
  [{"SHA":"7cbd49375a8429847750d060bceb4e090dfe341f","Message":"fix: shadowing original error\n\nThis fixes shadowing the original error so that the original error is\npropagated upwards","Author":"ALX99"}]


title: Typo fixed
author: buerbaumer
author_url: https://github.com/buerbaumer
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/875
merged_at: 2024-09-08 00:05:37+00:00
created_at: 2025-07-16 04:25:34
body:
  Great code and prompts!

  I have just fixed some typos and grammar mistakes.
  Please see the explanation in each commit for details.

  Best Regards,
  HB

commits:
  [{"SHA":"b6b86bb2c247c7fb8b6794f3ced88d0efee97416","Message":"Update system.md\n\nUpdate system.md - removed \"a\" for a better model understanding","Author":"buerbaumer"},{"SHA":"083cf4c82c589d7091fc5b29a41a28a4fe29c1c3","Message":"Update system.md\n\nChanged \"highlight\" to \"highlights\" to match subject-verb agreement.","Author":"buerbaumer"},{"SHA":"c5f926ba0cc21b4e2ff17aaba837859aebcf4104","Message":"Update system.md\n\nCorrected \"upmost\" to \"at most\" for proper expression.","Author":"buerbaumer"},{"SHA":"60e5b536b4aa71390a7c230178c1f878ced64327","Message":"Update system.md\n\nRemoved extra \"the\" for grammatical correctness.","Author":"buerbaumer"},{"SHA":"a93acd3afce2903aa821d12df0fc446d2f75ab79","Message":"Update system.md\n\nCorrected \"it's\" to \"its\" to denote possession instead of a contraction.","Author":"buerbaumer"},{"SHA":"78aa378ab8c1ef3f64798b48b6bd1a07357e149d","Message":"Update system.md\n\nReplaced the nested parentheses with equals signs for clarity","Author":"buerbaumer"},{"SHA":"bacc49c25a8612bc88164cfa11ed5eb832cc95cd","Message":"Update system.md\n\nCorrected grammatical issues and made the list more readable and consistent.","Author":"buerbaumer"}]


title: refactor: accept context as parameter of Vendor.Send
author: ALX99
author_url: https://github.com/ALX99
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/881
merged_at: 2024-08-29 17:06:14+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  In golang, contexts should be propagated downwards in order to be able
  to provide features such as cancellation.

  This commit refactors the Vendor interface to accept a context as a
  first parameter so that it can be propagated downwards.

  **Note:** If this PR is accepted, there is of course more work required to fix other places
  to not create their own context but rather accept a context as a parameter.

  ## Related issues
  N/A other than that `fabric` does not support cancellation signals for example.
  Continuing this type of work will make it trivial to support cancellations signals
  in the future.

  ## Screenshots
  Provide any screenshots you may find relevant to facilitate us understanding your PR.

commits:
  [{"SHA":"21f4b5f774205ad02f683c53d3d5b72c2e3be41f","Message":"refactor: accept context as parameter of Vendor.Send\n\nIn golang, contexts should be propagated downwards in order to be able\nto provide features such as cancellation.\n\nThis commit refactors the Vendor interface to accept a context as a\nfirst parameter so that it can be propagated downwards.","Author":"ALX99"}]


title: fix: usage with deprecated elements
author: songzhibin97
author_url: https://github.com/songzhibin97
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/891
merged_at: 2024-08-29 17:07:51+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  fix: usage with deprecated elements

  ## Related issues
  Please reference any open issues this PR relates to in here.
  If it closes an issue, type `closes #[ISSUE_NUMBER]`.

  ## Screenshots
  Provide any screenshots you may find relevant to facilitate us understanding your PR.

commits:
  [{"SHA":"e7fd450dadb9727ccf9aa8c41610442b4cc76af1","Message":"fix: usage with deprecated elements","Author":"Bin"}]


title: Add dry run
author: kanaqsasak
author_url: https://github.com/kanaqsasak
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/892
merged_at: 2024-09-03 09:07:36+00:00
created_at: 2025-07-16 04:25:34
body:
  # Pull Request Description

  ## Summary
  This pull request introduces a new `--dry-run` flag to the CLI application. This flag allows users to see what would be sent to the model without actually sending the request. The changes include updates to the `README.md` for documentation purposes and modifications to the CLI code to implement the dry-run functionality.

  ## Files Changed
  1. **README.md**
     - Added a description for the new `--dry-run` flag under the Application Options section.

  2. **cli/cli.go**
     - Implemented the logic for handling the `--dry-run` flag. This includes fetching the pattern and context content (if provided) and displaying the formatted request that would be sent to the model.

  3. **cli/flags.go**
     - Added the `DryRun` field to the `Flags` struct to accommodate the new command-line option.

  ## Code Changes

  ### README.md
  ```diff
   Application Options:
     -u, --url=              Choose ollama url (default: http://127.0.0.1:11434)
     -o, --output=           Output to file
     -n, --latest=           Number of latest patterns to list (default: 0)
  +      --dry-run           Show what would be sent to the model without actually sending it
  ```

  ### cli/cli.go
  ```diff
   func Cli() (message string, err error) {
   		}
   	}

  +	if currentFlags.DryRun {
  +		var patternContent string
  +		var contextContent string
  +
  +		if currentFlags.Pattern != "" {
  +			pattern, patternErr := fabric.Db.Patterns.GetPattern(currentFlags.Pattern)
  +			if patternErr != nil {
  +				fmt.Printf("Error getting pattern content: %v\n", patternErr)
  +				return "", patternErr
  +			}
  +			patternContent = pattern.Pattern // Assuming the content is stored in the 'Pattern' field
  +		}
  +
  +		if currentFlags.Context != "" {
  +			context, contextErr := fabric.Db.Contexts.GetContext(currentFlags.Context)
  +			if contextErr != nil {
  +				fmt.Printf("Error getting context content: %v\n", contextErr)
  +				return "", contextErr
  +			}
  +			contextContent = context.Content
  +		}
  +
  +		systemMessage := strings.TrimSpace(contextContent) + strings.TrimSpace(patternContent)
  +		userMessage := strings.TrimSpace(currentFlags.Message)
  +
  +		fmt.Println("Dry run: Would send the following request:\n")
  +		if systemMessage != "" {
  +			fmt.Printf("System:\n%s\n\n", systemMessage)
  +		}
  +		if userMessage != "" {
  +			fmt.Printf("User:\n%s\n", userMessage)
  +		}
  +		return "", nil
  +	}
  ```

  ### cli/flags.go
  ```diff
   type Flags struct {
   	YouTube                 string  `short:"y" long:"youtube" description:"YouTube video url to grab transcript, comments from it and send to chat"`
   	YouTubeTranscript       bool    `long:"transcript" description:"Grab transcript from YouTube video and send to chat"`
   	YouTubeComments         bool    `long:"comments" description:"Grab comments from YouTube video and send to chat"`
  +	DryRun                  bool    `long:"dry-run" description:"Show what would be sent to the model without actually sending it"`
   }
  ```

  ## Reason for Changes
  The `--dry-run` flag is introduced to provide users with a way to preview the request that would be sent to the model. This can be useful for debugging and ensuring that the correct data is being sent without making an actual request.

  ## Impact of Changes
  - **Functionality**: Adds a new feature allowing users to perform a dry run of their request.
  - **Usability**: Improves the user experience by providing a way to verify requests before sending them.
  - **Codebase**: Introduces additional conditional logic to handle the `--dry-run` flag.

  ## Test Plan
  - Manually test the `--dry-run` flag with various combinations of patterns, contexts, and messages to ensure the correct output is displayed.
  - Verify that the application behaves as expected when the `--dry-run` flag is not used.

  ## Additional Notes
  - Ensure that any existing automated tests that may interact with the CLI are updated to account for the new `--dry-run` functionality.
  - Consider adding automated tests specifically for the `--dry-run` feature in future updates.

commits:
  [{"SHA":"4006f3f417d25ee686aa99f300020137f47d00bf","Message":"Add dry run","Author":"Azwar Tamim"},{"SHA":"7d3bf8c3a24a839e878b91eb3535c217d7360124","Message":"Fix dry run","Author":"Azwar Tamim"},{"SHA":"feabd565dcb3c6a747121fb8ab69d38aba560135","Message":"Refactor dry run to DryRun Vendor","Author":"Azwar Tamim"},{"SHA":"e26d72c2f089fd9626ee5f7109c48d14413d9242","Message":"Merge branch 'main' into add_dry_run","Author":"Azwar Tamim"},{"SHA":"33632030f6647e4c1877bb7e7f23115fec57d871","Message":"Revert unneeded DryRun Vendor registration","Author":"Azwar Tamim"},{"SHA":"fb9bb89da74624575d11a93719d8d2d005627c3b","Message":"Merge branch 'danielmiessler:main' into add_dry_run","Author":"Azwar Tamim"}]


title: Add MIT license file
author: IanYoung-BO
author_url: https://github.com/IanYoung-BO
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/893
merged_at: 2024-09-08 00:06:09+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Please briefly describe what this PR does.

  This PR addresses issue #833 by adding a LICENSE file to the repository.

  ## Related issues
  Please reference any open issues this PR relates to in here.
  If it closes an issue, type `closes #[ISSUE_NUMBER]`.

  closes #833

  ## Screenshots
  Provide any screenshots you may find relevant to facilitate us understanding your PR.

commits:
  [{"SHA":"7079c9cb23d3ca9a4acc9aafbf051c8ba8a1db3c","Message":"Add MIT license file","Author":"Ian"}]


title: Adding new pattern: `analyze_product_feedback`.
author: rdegges
author_url: https://github.com/rdegges
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/894
merged_at: 2024-09-08 00:04:46+00:00
created_at: 2025-07-16 04:25:34
body:
  This pattern allows you to summarize, rate, and deduplicate feedback about products. It's very helpful for anyone working in product management, engineering, etc.

commits:
  [{"SHA":"19cd12029ef359e4b542d74e81c89bb78de6e6e8","Message":"Adding new pattern: `analyze_product_feedback`.\n\nThis pattern allows you to summarize, rate, and deduplicate feedback\nabout products. It's very helpful for anyone working in product\nmanagement, engineering, etc.","Author":"Randall Degges"}]


title: Add SiliconCloud support
author: nep-0
author_url: https://github.com/nep-0
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/908
merged_at: 2024-09-13 09:32:59+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  This Pull Request adds [SiliconCloud](https://cloud.siliconflow.cn/) support.

  ## Related issues

  ## Screenshots

commits:
  [{"SHA":"29f9de7f5647d6a1611b1be1a01d6ae5c2795852","Message":"feat: add SiliconCloud support","Author":"NeP"}]


title: Openrouter
author: rudi-bruchez
author_url: https://github.com/rudi-bruchez
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/910
merged_at: 2024-09-13 09:36:31+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Adding OpenRouter as a new vendor.

  ## Related issues
  closes #495 

commits:
  [{"SHA":"824e2eb1903b27e490d27a27ee0ac022c6f48762","Message":"OpenRouter Vendor","Author":"Rudi Bruchez"},{"SHA":"272b21237ce3e8f0d3cade141b61028eb9f8a95f","Message":"OpenRouter Vendor","Author":"Rudi Bruchez"},{"SHA":"4294489c1c9bfc116e8d7dfc72872d8a33e9b681","Message":"Merge branch 'main' into openrouter","Author":"Eugen Eisler"}]


title: update: add env variable info for Apple Silicon
author: verebes1
author_url: https://github.com/verebes1
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/913
merged_at: 2024-09-08 00:00:38+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  -Updated the readme with env variables for Apple Silicon based mac as the path for Brew installed apps is different there.

  The path on Apple Silicon based macs for brew installed go is:
  `opt/homebrew/bin/go`
  On Intel based macs it will be:
  `/usr/local/go`

  This is just a small proposal that clears it up.

commits:
  [{"SHA":"5da056b87acdcf32290d7cd486e5543cef3b1d87","Message":"update: add  env variable info for Apple Silicon\n\n-Updated the readme with env variables for Apple Silicon based mac\r\nas the path for Brew installed apps is different there.","Author":"David"}]


title: Patch 1
author: NerdyPunkDad
author_url: https://github.com/NerdyPunkDad
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/916
merged_at: 2024-09-07 23:59:56+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  This update briefly explains changes to the --agents (-a), --gui, --clearsession, --remoteOllamaServer, and --sessionlog, -c, and -s command line options.

  ## Related issues
  The issues #779 and #869  mention the fact that --gui doesn't work anymore and other users are probably wondering what changed.

commits:
  [{"SHA":"4e82b27424cf529c038360feb0b10fc14479a4eb","Message":"Describe CLI changes / Update README.md","Author":"NerdyPunkDad"},{"SHA":"44d47395ccacd2f8528a9ac2663aae8c74bfb892","Message":"Update README.md","Author":"NerdyPunkDad"},{"SHA":"731e800177af47fb8031ee39f58b22a0df5cc858","Message":"Update user.md to match current CLI\n\nUpdate this pattern to match the current fabric command line options Remove --agents, add -S as an alternative to --setup, and replace -c with -C to align with the current cli interface.","Author":"NerdyPunkDad"}]


title: Add a pattern for extracting minutes from a transcribed meeting.
author: CJones-Optics
author_url: https://github.com/CJones-Optics
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/920
merged_at: 2024-09-07 23:59:15+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  This pattern takes in a transcript from a meeting, and outputs minute, actionables and decisions.

   The intended workflow is to record your meetings  on your phones recorder app and get a transcript. Google Pixel does this automatically, others can use Whisper to get the transcript.

  ## Related issues
  No related open issues.

  ## Screenshots
  I cannot provide screenshots of my  meeting minutes because they are confidential. However, it has been tested on several of my work meetings and works as expected.

commits:
  [{"SHA":"e1d9bd599ad89e4813a09b120ae606920cb5dae5","Message":"Add a pattern for extracting minutes from a transcribed meeting","Author":"CJones-Optics"}]


title: Update README.md
body: Small cleanup suggestion
author: jmanico
author_url: https://github.com/jmanico
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/932
merged_at: 2024-09-07 23:58:40+00:00
created_at: 2025-07-16 04:25:34
commits:
  [{"SHA":"f1c4c604690b2def9fbd780d1b56d08ea31055b7","Message":"Update README.md\n\nSmall cleanup suggestion","Author":"Jim Manico"}]


title: add extract_ctf_writeup as a new pattern
author: mrtnrdl
author_url: https://github.com/mrtnrdl
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/938
merged_at: 2024-09-12 04:23:17+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  I've recently started to use this as a way to decide, if i want to invest the time and watch a full video e.g. of IPPSEC doing a hackthebox machine. 


  ## Example output

  Source: https://www.youtube.com/watch?v=tQ34Ntkr7H4v

  ```markdown
  ## SUMMARY

  In this Hack The Box walkthrough, IPSec demonstrates exploiting a DevOps-themed box, highlighting common developer mistakes. The main vulnerabilities include an XML External Entity (XXE) injection and an exposed SSH key, which allowed unauthorized access to the system. Learnings include the importance of securing sensitive files and validating file uploads.

  ## VULNERABILITIES

  - **Local File Inclusion (LFI) via XXE Injection**: No specific CVE mentioned.
  - **Exposed SSH Key**: No specific CVE mentioned.
  - **Insecure Direct Object Reference (IDOR)**: No specific CVE mentioned.
  - **Unintended SSH Key in Git History**: No specific CVE mentioned.

  ## TIMELINE

  - **Initial Scanning**
    - `nmap -SC -SV -oA nmap/DevOps 10.10.10.91`
    - Ports found: 22 (SSH), 5000 (HTTP)

  - **HTTP Enumeration**
    - Accessed `http://10.10.10.91:5000`
    - Found `/feed` endpoint returning an image
    - Ran GoBuster: `gobuster -u http://10.10.10.91:5000 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -o gobuster.log`
    - Found `/upload` endpoint

  - **Exploit XXE Injection**
    - Uploaded XML file with XXE payload to `/upload`
    - Used payload to read `/etc/passwd` and other files

  - **Source Code Analysis**
    - Read `feed.py` via XXE
    - Identified vulnerable `pickle` deserialization

  - **Pickle Exploitation**
    - Created exploit script using Python pickle to get a reverse shell
    - `nc -lvnp 9001` to catch the reverse shell

  - **Privilege Escalation**
    - Found SSH key in `/home/russa/.ssh/id_rsa`
    - SSH into the box as `russa`
    - Found another SSH key in the git history
    - SSH into the box as `root` using the key from git history

  ## REFERENCES

  - **Tools Used**
    - `nmap`
    - `gobuster`
    - `burpsuite`
    - `nc (netcat)`
    - `git`
    - `python`
    - `pen-test-monkey reverse shell cheat sheet`

  - **Websites and Resources**
    - Hack The Box: https://www.hackthebox.eu
    - Pen Test Monkey Reverse Shell Cheat Sheet: https://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet
    - GitHub Payloads: https://github.com/swisskyrepo/PayloadsAllTheThings
  ```

commits:
  [{"SHA":"dcfafe5ce16189b236a8bb6dd1b260f233ce1ca1","Message":"add extract_ctf_writeup as a new pattern","Author":"martin riedel"}]


title: Fix typo in README.md
author: sleeper
author_url: https://github.com/sleeper
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/941
merged_at: 2024-09-12 04:22:56+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Fix a typo in README.md

  ## Related issues
  N/A

  ## Screenshots
  N/A

commits:
  [{"SHA":"c79a2915b3645741ca51431bf76817923c55d55a","Message":"Fix typo in README.md","Author":"Frederick Ros"}]


title: add new pattern extract_skills
author: maxleungtszchun
author_url: https://github.com/maxleungtszchun
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/943
merged_at: 2024-09-12 04:22:41+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Hi, I would like to add a new pattern "extract_skills" for extracting skills from job description.

commits:
  [{"SHA":"e50414f045504e2412409c32f603ea2bf99273cc","Message":"add new pattern extract_skills","Author":"Max Leung"}]


title: Readme: move fabric setup after environment setup
author: marcelritzschke
author_url: https://github.com/marcelritzschke
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/944
merged_at: 2024-09-12 04:22:18+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Proposal to update Readme file for a smoother setup experience, especially for users who use Golang for the first time.

  Why: According to current Readme users might attempt to call `fabric --setup` before they have added the Golang environment variables.

  ## Related issues
  https://github.com/danielmiessler/fabric/issues/942

  ## Screenshots

commits:
  [{"SHA":"0266a6f36dc2b729a7f25c36e5d1ef40310f575d","Message":"move fabric setup after environment setup in readme","Author":"Marcel Ritzschke"}]


title: Latex pdfs
body:
  ## What this Pull Request (PR) does
  adds a new write_latex pattern and to_pdf tool

author: jthack
author_url: https://github.com/jthack
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/953
merged_at: 2024-09-12 23:58:03+00:00
created_at: 2025-07-16 04:25:34
commits:
  [{"SHA":"9597580185f0850cace8734c6eb9236d61351f48","Message":"latex + pdf","Author":"Joseph Thacker"},{"SHA":"63b73bc7458a9935854658389fd67c808ea7ba4e","Message":"to_pdf readme","Author":"Joseph Thacker"},{"SHA":"7e182acbc6800e32b1f05b3d4d5d823db9647099","Message":"fixing binary to .go file","Author":"Joseph Thacker"}]


title: Add cmd -g to select the language would reply
author: quarechen
author_url: https://github.com/quarechen
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/957
merged_at: 2024-09-19 20:42:29+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does

  Add a command -g to make the program return results according to the specified language.
  Solve the multilingual adaptation problem. It can take prompts in various languages and return different results according to the same prompt.


  ## Screenshots
  ![image](https://github.com/user-attachments/assets/8e070bdd-9f93-40d7-a307-50b944c2c11b)

commits:
  [{"SHA":"b96415d44566b68fa5aef01abb451560c110f793","Message":"feat: add cmd -g to select the language would reply","Author":"csquarechen"},{"SHA":"d5746700843808d7fc96f2e46f0d8f11ef2d6567","Message":"use default language param default:\"\" to avoid changes in the output.","Author":"csquarechen"},{"SHA":"680129e370de0bda8059188505d3316012e9e64c","Message":"update the discription of language commend","Author":"csquarechen"},{"SHA":"2b79a058deda4be684efc5ab3c8b8c3064519000","Message":"Merge branch 'main' into specify_language_return","Author":"Eugen Eisler"},{"SHA":"26fccfe18ecd64265738a5e2474feee48dd0fde4","Message":"feat: integrate the output language to the system/user prompt","Author":"Eugen Eisler"}]


title: Update prompt in agility_story
body:
  ## What this Pull Request (PR) does
  Changes example output topic name to make sense.

author: alucarded
author_url: https://github.com/alucarded
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/962
merged_at: 2024-10-02 15:51:26+00:00
created_at: 2025-07-16 04:25:34
commits:
  [{"SHA":"0bc7cd97857022c7ebe9dbe5f83b03a86b0e8bae","Message":"Update system.md\n\nTopic should make sense","Author":"Tomasz Edward Posluszny"}]


title: Updated Path to install to_pdf in readme[Bug Fix]
author: akashkankariya
author_url: https://github.com/akashkankariya
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/967
merged_at: 2024-09-25 21:59:03+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Please briefly describe what this PR does.
  It is updating the installation path of to_pdf

  ## Related issues
  Please reference any open issues this PR relates to in here.
  If it closes an issue, type `closes #[ISSUE_NUMBER]`.
  https://github.com/danielmiessler/fabric/issues/956
  ## Screenshots
  Provide any screenshots you may find relevant to facilitate us understanding your PR.

commits:
  [{"SHA":"3bf1c95dc26b3a1d69f4f07006ea307cc12ccec8","Message":"Updated Path to install to_pdf [Bug Fix]","Author":"Akash Kankariya"}]


title: add mistral vendor
author: mark-kazakov
author_url: https://github.com/mark-kazakov
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/970
merged_at: 2024-09-16 15:34:49+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  This pull request adds [mistral.ai](https://mistral.ai) support for fabric.

commits:
  [{"SHA":"bd33795f728a99ded777478ba16ae0b0bf8a92ff","Message":"add mistral vendor","Author":"Mark Kazakov"}]


title: fix: correct changeDefaultModel flag description
author: pavdmyt
author_url: https://github.com/pavdmyt
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/976
merged_at: 2024-09-20 10:56:39+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does

  Corrects the description for `-d, --changeDefaultModel` flag.

  ## Related issues
  Please reference any open issues this PR relates to in here.
  If it closes an issue, type `closes #[ISSUE_NUMBER]`.

  ## Screenshots
  Provide any screenshots you may find relevant to facilitate us understanding your PR.

commits:
  [{"SHA":"c293c6137b9849191017823e6ff8b7b436140f59","Message":"fix: correct changeDefaultModel flag description","Author":"Pavel Dmytrenko"}]


title: adding flag for pinning seed in openai and compatible APIs
author: riccardo1980
author_url: https://github.com/riccardo1980
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/984
merged_at: 2024-09-25 21:52:18+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Using optional seed parameter in OpenAI API to get reproducible results 

  ## Changes
  - adding -e flag to cli Flags
  - propagating seed value up to go-openai.ChatCompletionRequest struct
  - adding a log line (Debug level) to track system_fingerprint
  - adding tests in openai and cli modules

  ## Related infos
  - Even if we set the seed, we may get different results, we will have same results between two different calls only if Openai / Groq B/E status or model configuration is not changed. Changes are tracked using system_fingerprint parameter in return values.
  - OpenAI relevant notes: https://platform.openai.com/docs/advanced-usage/reproducible-outputs
  - Groq relevant notes: https://console.groq.com/docs/api-reference#chat

commits:
  [{"SHA":"a619c915e1d20cf2042a8c8a43bf41d479df9731","Message":"adding flag for pinning seed in openai and compatible APIs","Author":"Riccardo Zanella"},{"SHA":"cfae9efcbb65a8ea2d3a9c363bf63e517092ab67","Message":"updating README with the new flag","Author":"Riccardo Zanella"},{"SHA":"7322d249e2e40b2096192a28adc37c2250efa53e","Message":"Merge branch 'main' into feature/seed_parameter","Author":"Riccardo Zanella"}]


title: feat: remove cli list label and indentation
author: joshmedeski
author_url: https://github.com/joshmedeski
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/987
merged_at: 2024-10-01 19:59:04+00:00
created_at: 2025-07-16 04:25:34
body:
  Trims the formatting on fabric -l, making it easier to combine with other CLI tools like fzf

  ## Before
  <img width="450" alt="SCR-20240921-gpou" src="https://github.com/user-attachments/assets/e5f6fe4d-6d79-4472-8912-05acdf3247f4">

  ## After
  <img width="286" alt="SCR-20240921-gpyb" src="https://github.com/user-attachments/assets/a1e3b98e-c296-4dd0-a582-45587fcc2f48">

  ## With gum (filtering CLI)
  ![SCR-20240921-gqoi](https://github.com/user-attachments/assets/1f01d9e9-ad67-4d89-9daa-6dbf2af2884c)

  This is a breaking change from the previous functionality. I also think we could combine this with a "raw" flag (ex: `fabric -l --raw`).

  Let me know what you think, thanks!

commits:
  [{"SHA":"c51c4c8d3ea3fc830d2f8c8c91cbf92d28b4cba1","Message":"feat: remove cli list label and indentation","Author":"Josh Medeski"}]


title: Fix GOROOT path for Apple Silicon Macs
author: aculich
author_url: https://github.com/aculich
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/991
merged_at: 2024-09-23 19:35:35+00:00
created_at: 2025-07-16 04:25:34
body:
  This PR addresses an issue in the setup instructions for Apple Silicon Macs. The previous configuration for GOROOT pointed to '/opt/homebrew/bin/go', which resulted in an error: 'go: cannot find GOROOT directory'. 

  By dynamically determining the correct GOROOT path using Homebrew's installation path, this fix ensures compatibility with M1/M2 Macs. These changes resolve the issue for users following the README on Apple Silicon Macs.

commits:
  [{"SHA":"4a34355c3b58480ba888d984e8f138017869ee5b","Message":"Fix GOROOT path for Apple Silicon Macs in setup instructions\n\nThe previous instructions incorrectly set GOROOT to '/opt/homebrew/bin/go', which points to the Go binary rather than the Go root directory. This caused errors when running Go commands on Apple Silicon-based Macs.\n\nI updated the instructions to dynamically determine the correct GOROOT path using Homebrew, ensuring compatibility across different environments. This change resolves the 'go: cannot find GOROOT directory' issue on M1/M2 Macs.","Author":"Aaron Culich"}]


title: Add pattern analyze_military_strategy
author: OddDuck11
author_url: https://github.com/OddDuck11
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/994
merged_at: 2024-10-02 15:51:10+00:00
created_at: 2025-07-16 04:25:34
body:
  Use this pattern to analyze real historic, or fictional battle strategy.

  ## What this Pull Request (PR) does
  Adds a pattern

commits:
  [{"SHA":"24816f25d156f6150448ff1b3989acf63149a5b3","Message":"Add pattern analyze_military_strategy\n\nUse this pattern to analyze real historic, or fictional battle strategy.","Author":"OddDuck11"}]


title: add wipe flag for ctx and session
author: hallelujah-shih
author_url: https://github.com/hallelujah-shih
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/996
merged_at: 2024-09-27 09:50:29+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  A wipe parameter is added to context and session for cleaning up outdated data

  ## Screen
  ![Pasted image](https://github.com/user-attachments/assets/0ca99f41-30cd-4502-ba31-39886639d404)

commits:
  [{"SHA":"dd6cd06b5ac9f7b79518c457704f6170ff0f4667","Message":"add wipe flag for ctx and session","Author":"shih"}]


title: Update patterns/solve_with_cot/system.md typos
author: fn5
author_url: https://github.com/fn5
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1005
merged_at: 2024-10-02 15:52:00+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Fixes typo:

  > . Use a "Chain of Thought" reasoning process if necessary, breaking down y [sic]

  Corrects steps under 3.c which should be underneath and not following.

commits:
  [{"SHA":"522c1038fb10d42e8d1acc24b8d197e6b6d8fe5b","Message":"Update patterns/solve_with_cot/system.md typos","Author":"Jack"},{"SHA":"ad6260fab53b81954398ba413b5fe587646878ce","Message":"Update patterns/solve_with_cot/system.md typos part two\n\nForgot the last typos. Sorry.","Author":"Jack"},{"SHA":"b2a2ea0c0348ad49166303c6cc2a0c65ae60595f","Message":"Update patterns/solve_with_cot/system.md part three\n\nNoticed the opening closing brackets were incorrect \u003c \u003e","Author":"Jack"}]


title: support turn any web page into clean view content
author: hallelujah-shih
author_url: https://github.com/hallelujah-shih
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1007
merged_at: 2024-10-02 20:10:02+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Support turn any web page into clean main-content.

  ## Example:
  curl https://www.marktechpost.com/2024/09/27/researchers-at-uc-berkeley-developed-docetl-an-open-source-low-code-ai-system-for-llm-powered-data-processing/ | ./fabric --readability -p create_summary

  ## Screenshots
  ![image](https://github.com/user-attachments/assets/68ab4f6b-a5e4-4b2d-b771-97f53da3400c)

commits:
  [{"SHA":"cc8711cc07d55c5b863bffd42fbc1e191633be20","Message":"support turn any web page into clean view content","Author":"hallelujah-shih"}]


title: Update system.md in transcribe_minutes
author: MattBash17
author_url: https://github.com/MattBash17
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1008
merged_at: 2024-10-02 15:50:43+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Fixed typos and improved consistency of the different sections.

  ## Related issues
  none

commits:
  [{"SHA":"98292df3ccc2d360d930bb9a6cf367bdf35b4848","Message":"Update system.md in transcribe_minutes","Author":"MattBash17"}]


title: Grab transcript from youtube matching the user's language
author: fooman
author_url: https://github.com/fooman
author_type: organization
url: https://github.com/danielmiessler/Fabric/pull/1011
merged_at: 2024-10-01 15:10:29+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  This PR will match the language of the transcript to the one from the user rather than selecting the first returned from Youtube. Defaults to English if nothing else specified.

  ## Related issues
  closes #1010 

commits:
  [{"SHA":"be37d889a02bc8106fc4d8e937a723dcaf7fd76b","Message":"Grab transcript from youtube matching the user's language instead of the first one","Author":"Kristof Ringleff, Fooman"}]


title: Corrected spelling and grammatical errors for consistency and clarity for transcribe_minutes
author: joshuafuller
author_url: https://github.com/joshuafuller
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1021
merged_at: 2024-10-07 16:44:06+00:00
created_at: 2025-07-16 04:25:34
body:
  ### Description

  - Changed "agreed within the meeting" to "agreed upon within the meeting" for grammatical accuracy.
  - Added missing periods for consistency across list items.
  - Corrected the spelling of "highliting" to "highlighting."
  - Fixed the spelling of "exxactly" to "exactly."
  - Updated phrasing from "Write NEXT STEPS a 2-3 sentences" to "Write NEXT STEPS as 2-3 sentences" for grammatical correctness.

  These changes enhance readability and ensure that the document is consistent and free of grammatical errors.

  ### What this Pull Request (PR) Does
  This PR corrects spelling, grammar, and punctuation issues in the document to improve overall clarity and consistency.

commits:
  [{"SHA":"bad01040e3e81b7e35e07756f94920fb38115544","Message":"Corrected spelling and grammatical errors for consistency and clarity\n\nDescription:\r\n\r\nChanged \"agreed within the meeting\" to \"agreed upon within the meeting\" to improve grammatical accuracy.\r\n\r\nAdded missing periods to ensure consistency across list items.\r\n\r\nCorrected the spelling of \"highliting\" to \"highlighting.\"\r\n\r\nFixed the spelling of \"exxactly\" to \"exactly.\"\r\n\r\nUpdated phrasing in \"Write NEXT STEPS a 2-3 sentences\" to \"Write NEXT STEPS as 2-3 sentences\" for grammatical correctness.\r\n\r\nThese changes improve the readability and consistency of the document, ensuring all instructions are clear and error-free.","Author":"Joshua Fuller"}]


title: Feature/set default lang
author: hallelujah-shih
author_url: https://github.com/hallelujah-shih
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1039
merged_at: 2024-10-11 18:54:11+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Provide an option to set a default output language to make commands more concise.

  ## Screenshots

  ![image](https://github.com/user-attachments/assets/978d6112-98a0-4688-b415-c96ac6240ff3)

  ![image](https://github.com/user-attachments/assets/229deb14-8424-4a38-af24-5ed110ea253f)

commits:
  [{"SHA":"e1fa674a3f837a6858688235503f196bf1b5e5f9","Message":"support set default output language\n\n# Conflicts:\n#\tcli/cli.go\n#\tcore/fabric.go","Author":"hallelujah-shih"},{"SHA":"9f94cfb7189baada337fa06e8a9e5b2d0836db01","Message":"fmt","Author":"hallelujah-shih"}]


title: Feat/rest api
author: eugeis
author_url: https://github.com/eugeis
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1044
merged_at: 2024-10-13 14:40:32+00:00
created_at: 2025-07-16 04:25:34
body:
  - Restructuring and extracting API interfaces to enhance reusability across different environments, such as WebUI.
  - Preparing for a refactor to a plugin-based architecture, improving flexibility in the setup process.
  - Implementing REST API and endpoints for the database component.

commits:
  [{"SHA":"3380972df1c72167edce36fab472821506f6c56f","Message":"feat: work on Rest API","Author":"Eugen Eisler"},{"SHA":"8f3928f4b25250bf34c3033421152fa47ef1736f","Message":"feat: work on Rest API","Author":"Eugen Eisler"},{"SHA":"a6d63f4d0e3d444da936f3a955161dc9a2a4872a","Message":"feat: work on Rest API","Author":"Eugen Eisler"},{"SHA":"6efe7960cdf131ed906e4d3f3f0bf6ab0168e088","Message":"feat: work on Rest API","Author":"Eugen Eisler"},{"SHA":"401f0da689592e94c2b4a7196c6b114d946501a1","Message":"feat: work on Rest API","Author":"Eugen Eisler"},{"SHA":"4104317b3427d32ad840c2f29bd9dbdf298970b5","Message":"feat: work on Rest API","Author":"Eugen Eisler"},{"SHA":"17bde814cc09a356a9c0fe39a5c50b6c55c8fb60","Message":"feat: restructure for better reuse","Author":"Eugen Eisler"},{"SHA":"56f995afb46181407e5d06d45d5c8c22cc5a8aaa","Message":"feat: restructure for better reuse","Author":"Eugen Eisler"},{"SHA":"d7683e4c39eebd95e04afee83222b78165f56df5","Message":"feat: restructure for better reuse","Author":"Eugen Eisler"},{"SHA":"686d039392caaeffd73dbd85e7cd65eb7e282a92","Message":"Merge branch 'main' into feat/rest-api","Author":"Eugen Eisler"}]


title: Update patterns/analyze_answers/system.md - Fixed a bunch of typos
body: Just fixed a bunch of typos in analyze_answers
author: Fenicio
author_url: https://github.com/Fenicio
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1045
merged_at: 2024-10-16 13:27:14+00:00
created_at: 2025-07-16 04:25:34
commits:
  [{"SHA":"888342c119ac6ea250b72d5ae672e7e1c3308a64","Message":"Update patterns/analyze_answers/system.md - Fixed a bunch of typos","Author":"Guillermo G C"}]


title: Analyze Proposition Pattern
author: noamsiegel
author_url: https://github.com/noamsiegel
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1059
merged_at: 2024-10-28 22:36:23+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Added pattern to analyze government, state, and local propositions.

commits:
  [{"SHA":"151c58d0ef5a14a79e50fc4474861d25699b50bd","Message":"Added system and user prompts","Author":"Noam Siegel"}]


title: Analyze Candidates Pattern
body:
  ## What this Pull Request (PR) does
  Adds a pattern that analyzes candidates.

author: noamsiegel
author_url: https://github.com/noamsiegel
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1060
merged_at: 2024-11-09 05:25:48+00:00
created_at: 2025-07-16 04:25:34
commits:
  [{"SHA":"7139ad013dc7ab1445bb8c22e7bb26547e68a03a","Message":"Added system and user prompts","Author":"Noam Siegel"}]


title: Update README.md with pbpaste section
author: rprouse
author_url: https://github.com/rprouse
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1064
merged_at: 2024-10-25 20:57:10+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Adds a `pbpaste` section to the Readme for Windows and Linux users. 

  My linter also removed a few trailing whitespace chars.

  ## Related issues
  closes #1063

commits:
  [{"SHA":"ef3c043f776060b7b2fd06c0a5c6b7a0b78dc016","Message":"Update README.md with pbpaste section","Author":"Rob Prouse"}]


title: feat: create create_design_document pattern
author: xvnpw
author_url: https://github.com/xvnpw
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1070
merged_at: 2024-10-25 21:12:18+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  New pattern: `create_design_document` - it creates structured design document with initial description of idea or project. 

  ## Related issues
  Please reference any open issues this PR relates to in here.
  If it closes an issue, type `closes #[ISSUE_NUMBER]`.

  ## Screenshots

  ### Input

  ```
  # AI Nutrition-Pro

  ## Business background

  Dietitians use online applications to create meals, diets and calculate calories called meal planners. Different professionals have different ways of creating diets, which gives a personal style to it. LLMs can reproduce this personal style of writing based on samples of already created content. Meal planners can use LLMs to speed up diet creation for dietitians.

  ## Project Overview

  AI Nutrition-Pro will be backend API application that will have the possibility to integrate with any meal planner application for dietitians. It will reproduce the personal style of a nutrition specialist based on samples.

  Dietitians will not use the application directly but from their meal planner applications. There will be no user interface exposed to Dietitians. Integration will be using meal plan applications backend.

  Direct clients of AI Nutrition-Pro will be applications like DietMaster Pro, Nutritionist Pro, or others. Those clients will send to AI Nutrition-Pro samples of content and AI Nutrition-Pro will generate requested type of content based on that. AI Nutrition-Pro will use LLM to generate requested content.

  ## Core Features

  - multi-tenant API application - where tenant is client application like DietMaster Pro, Nutritionist Pro, or others.
  - each tenant can contain many dietitians.
  - each dietitian can have multiple customers.
  - the application will be deployed into AWS cloud and use cloud-based services to store and process data.
  - the application will store and process PII information that might contain personal health data of customers.
  - ChatGPT 3.5 will be used as LLM.

  ## High level connection view

  mermaid
  flowchart TB
      DietMaster-Pro --> AI-Nutrition-Pro
      Nutritionist-Pro --> AI-Nutrition-Pro
      subgraph AWS
      AI-Nutrition-Pro
      end
      subgraph OpenAI
      ChatGPT-3.5
      end
      AI-Nutrition-Pro --> ChatGPT-3.5
  ```

  ### Output

  ```
  # AI Nutrition-Pro Design Document

  ## BUSINESS POSTURE

  The business priorities and goals for AI Nutrition-Pro are to enhance the efficiency and personalization of diet creation for dietitians by integrating with existing meal planner applications. The key objectives are to provide a seamless and secure backend API service that can reproduce the personal style of nutrition specialists using LLMs. 

  Most important business risks include:
  1. Ensuring data privacy and protection, especially concerning PII and personal health data.
  2. Maintaining high availability and reliability of the API service.
  3. Ensuring scalability to handle multiple tenants and large volumes of data.

  ## SECURITY POSTURE

  Existing Security Controls:
  - security control: Use of AWS cloud services with built-in security features for data storage and processing.
  - security control: Integration with ChatGPT 3.5 will be secured using OpenAI's recommended practices.
  - security control: API access will be secured using API keys and OAuth2.

  Accepted Risks:
  - accepted risk: Dependency on third-party services like OpenAI for LLM functionality, which may introduce latency or service outages.

  Recommended Security Controls:
  - Implement encryption for data at rest and in transit.
  - Establish a comprehensive logging and monitoring system to detect and respond to security incidents.
  - Conduct regular security audits and vulnerability assessments.

  Security Requirements:
  - The system must comply with data protection regulations such as GDPR and HIPAA.
  - Role-based access control should be implemented to restrict access to sensitive data.
  - Data anonymization techniques should be applied to reduce the risk of exposing PII.

  ## DESIGN

  ### C4 CONTEXT

  mermaid
  graph TB
      DietMasterPro[DietMaster Pro] -->|Integrates with| AI_NutritionPro[AI Nutrition-Pro]
      NutritionistPro[Nutritionist Pro] -->|Integrates with| AI_NutritionPro
      AI_NutritionPro -->|Requests content from| ChatGPT35[ChatGPT 3.5]

  | Name             | Type         | Description                                                 | Responsibilities                                | Security Controls                                 |
  |------------------|--------------|-------------------------------------------------------------|-------------------------------------------------|---------------------------------------------------|
  | DietMaster Pro   | External App | Meal planner application integrating with AI Nutrition-Pro  | Sends dietitian samples and requests content    | API key, OAuth2                                    |
  | Nutritionist Pro | External App | Meal planner application integrating with AI Nutrition-Pro  | Sends dietitian samples and requests content    | API key, OAuth2                                    |
  | AI Nutrition-Pro | System       | Backend API service for generating personalized content     | Processes requests, interfaces with ChatGPT 3.5 | Encryption, access control, logging                |
  | ChatGPT 3.5      | External API | LLM API by OpenAI used for content generation               | Generates personalized content                  | OpenAI security practices, API key                 |

  ### C4 CONTAINER

  mermaid
  graph TB
      subgraph AI_NutritionPro
          APIService[API Service] --> ProcessingService[Processing Service]
          ProcessingService --> DataStore[Data Store]
          ProcessingService --> OpenAIConnector[OpenAI Connector]
      end
      OpenAIConnector --> ChatGPT35

  | Name             | Type          | Description                                        | Responsibilities                              | Security Controls                                 |
  |------------------|---------------|----------------------------------------------------|-----------------------------------------------|---------------------------------------------------|
  | API Service      | Container     | Handles incoming requests and responses            | Validates requests, manages authentication    | API gateway, rate limiting                        |
  | Processing Service| Container    | Processes data and interfaces with other services  | Applies business logic, manages data flow     | Data validation, logging                          |
  | Data Store       | Container     | Stores samples and generated content               | Data storage and retrieval                    | Encryption, access control                        |
  | OpenAI Connector | Container     | Manages communication with ChatGPT 3.5             | Handles API requests and responses            | API key, OpenAI security practices                |

  ### C4 DEPLOYMENT

  mermaid
  graph TB
      subgraph AWS_Cloud
          EC2Instance[EC2 Instance] --> APIService
          EC2Instance --> ProcessingService
          RDSInstance[RDS Instance] --> DataStore
      end
      OpenAICloud[OpenAI Cloud] --> ChatGPT35


  | Name            | Type       | Description                              | Responsibilities                          | Security Controls                                 |
  |-----------------|------------|------------------------------------------|-------------------------------------------|---------------------------------------------------|
  | EC2 Instance    | Node       | AWS compute resource for running services| Hosts API and Processing services         | Security groups, IAM roles                        |
  | RDS Instance    | Node       | AWS database service for data storage    | Hosts Data Store                          | Encryption, VPC isolation                         |
  | OpenAI Cloud    | External   | OpenAI's infrastructure for ChatGPT 3.5  | Hosts ChatGPT 3.5 API                     | Managed by OpenAI                                 |

  ## RISK ASSESSMENT

  - What are critical business processes we are trying to protect?
    The critical business processes include secure data handling, content generation, and maintaining service availability for meal planner integrations.

  - What data are we trying to protect, and what is their sensitivity?
    We are trying to protect PII and personal health data of customers, which are highly sensitive and subject to data protection regulations.

  ## QUESTIONS & ASSUMPTIONS

  Questions:
  - What specific data protection regulations (e.g., HIPAA, GDPR) apply to AI Nutrition-Pro?
  - What are the expected volumes of data and requests, and how will scalability be managed?

  Assumptions:
  - It is assumed that the meal planner applications will handle user consent and data collection in compliance with relevant regulations.
  - It is assumed that OpenAI's ChatGPT 3.5 will remain available and reliable for content generation tasks.

  ```

commits:
  [{"SHA":"819021b7ba163efff92c2448138964369021c076","Message":"feat: create create_design_document pattern","Author":"xvnpw"}]


title: feat: add review_design pattern
author: xvnpw
author_url: https://github.com/xvnpw
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1072
merged_at: 2024-10-25 21:11:45+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Adds pattern for `review_design` - pattern creates comprehensive review of provided design 

  ## Related issues

  ## Screenshots

  ### Input 

  ```
  # Architecture

  This document outlines the architecture of the AI Nutrition-Pro application

  ## Containers Context diagram

  mermaid
  C4Container
      title Container diagram for AI Nutrition-Pro

      Container_Boundary(c0, "AI Nutrition-Pro") {
          Container(api_gateway, "API Gateway", "Kong", "Authentication of clients, filtering of input, rate limiting")
          Container(app_control_plane, "Web Control Plane", "Golang, AWS Elastic Container Service", "Provides control plane to onboard and manage clients, configuration and check billing data")
          ContainerDb(control_plan_db, "Control Plane Database", "Amazon RDS", "Stores all data related to control plan, tenants, billing")
          Container(backend_api, "API Application", "Golang, AWS Elastic Container Service", "Provides AI Nutrition-Pro functionality via API")
          ContainerDb(api_db, "API database", "Amazon RDS", "Stores dietitian' content samples, request and responses to LLM.")
          Person(admin, "Administrator", "Administrator of AI Nutrition-Pro application")
      }

      System_Ext(mealApp, "Meal Planner", "Application to create diets by dietitians")

      System_Ext(chatgpt, "ChatGPT-3.5", "LLM")

      Rel(mealApp, api_gateway, "Uses for AI content generation", "HTTPS/REST")
      Rel(api_gateway, backend_api, "Uses for AI content generation", "HTTPS/REST")
      Rel(admin, app_control_plane, "Configure system properties")
      Rel(backend_api, chatgpt, "Utilizes ChatGPT for LLM-featured content creation", "HTTPS/REST")

      Rel(app_control_plane, control_plan_db, "read/write data", "TLS")
      Rel(backend_api, api_db, "read/write data", "TLS")

  ### External systems and persons

  | Name | Type | Description | Responsibilities |
  | --- | --- | --- | --- |
  | Meal Planner application | External system, web application | One of many Meal Planner applications that can be integrated with AI Nutrition-Pro. It connects to AI Nutrition-Pro using REST and HTTPS. | - uploads samples of dietitians' content to AI Nutrition-Pro <br/> - fetches AI generated results, e.g. diet introduction, from AI Nutrition-Pro | 
  |  ChatGPT-3.5 | External system, API | It's OpenAI product, an LLM solution | It will be used to generate content based on provided samples. |
   
  ### AI Nutrition-Pro container context systems and persons

  | Name | Type | Description | Responsibilities |
  | --- | --- | --- | --- |
  | Web Control Plane | Internal system, Web application | It's written using Golang and deployed as Docker container into AWS Elastic Container Service. It uses Control Plane Database to store data. It's used in 3 roles: Administrator, App Onboarding Manager, and Meal Planner application manager. | Provide control plane to onboard and manage clients, configuration and check billing data |
  | Control Plane Database | Internal database, Amazon RDS instance | Database | storing data for Web Control Plane |
  | API Gateway | Internal system, API Gateway | Kong API Gateway | - authentication <br> - rate limiting <br> - filtering of input |
  | API Application | Internal system, API application | It's written using Golang and deployed as Docker container into AWS Elastic Container Service | Provides AI Nutrition-Pro functionality via API. |
  | API database | Internal database, Amazon RDS instance | Stored data: samples of dietitians' content, requests, and responses to LLM. | Storing data for API Application |
  | Administrator | Internal Person | Administrator of AI Nutrition-Pro application. | - manage server configuration <br> - resolve problems <br> |

  ### Security

  1. Authentication with Meal Planner applications - each has individual API key.
  2. Authorization of Meal Planner applications - API Gateway has ACL rules that allow or deny certain actions.
  3. Encrypted network traffic - network traffic between Meal Planner applications and API Gateway is encrypted using TLS.
  ```

  ### Output 

  ```
  # Architecture Review Analysis

  ## Architecture Clarity and Component Design

  Good aspects:
  - Clear separation of control plane and data plane
  - Well-defined container boundaries
  - Logical component separation with distinct responsibilities
  - Use of managed services (AWS RDS, ECS) reduces operational complexity

  Areas for improvement:
  - Missing health check mechanisms between components
  - No clear indication of monitoring or logging architecture
  - Interface contracts between components not specified
  - No indication of API versioning strategy

  ## External System Integrations

  Good aspects:
  - Simple REST/HTTPS integration pattern
  - API Gateway provides consistent entry point
  - Clear separation from external meal planner apps

  Areas for improvement:
  - Lack of circuit breakers for external system calls
  - No retry policies defined for ChatGPT integration
  - Missing API documentation standards
  - No clear failover strategy for external system outages

  ## Security Architecture

  Good aspects:
  - TLS encryption for all communications
  - API key authentication implementation
  - ACL-based authorization
  - Network traffic encryption

  Areas for improvement:
  - No mention of secrets management
  - Missing API request/response validation
  - Lack of rate limiting details per client
  - No security scanning approach defined
  - Missing audit logging architecture

  ## Performance, Scalability and Resilience

  Good aspects:
  - Containerized deployment enables horizontal scaling
  - Separate databases for control and data planes
  - Use of API Gateway for traffic management

  Areas for improvement:
  - No caching strategy defined
  - Missing performance SLAs and metrics
  - No clear database scaling approach
  - Lack of disaster recovery planning
  - No mention of backup strategies

  ## Data Management and Storage Security

  Good aspects:
  - Separate databases for different concerns
  - Use of managed RDS service

  Areas for improvement:
  - No data retention policies defined
  - Missing data classification scheme
  - Unclear backup and restore procedures
  - No mention of data encryption at rest
  - Missing data archival strategy

  ## Maintainability, Flexibility and Future Growth

  Good aspects:
  - Containerized architecture enables easy updates
  - Modular design with clear boundaries
  - Use of modern cloud services

  Areas for improvement:
  - No CI/CD pipeline defined
  - Missing feature flag strategy
  - No clear approach for configuration management
  - Lack of development environment strategy
  - No mention of testing approach

  ## Potential Risks and Areas for Improvement

  Key risks:
  - Single point of failure at API Gateway
  - Dependency on ChatGPT availability
  - No clear data privacy controls
  - Missing monitoring and alerting
  - Undefined incident response process

  Recommendations:
  - Implement service mesh for resilience
  - Add caching layer for performance
  - Develop comprehensive monitoring
  - Create detailed backup procedures
  - Implement secrets management
  - Define API versioning strategy

  ## Document Readability

  Improvements needed:
  - Add glossary of terms
  - Include deployment diagram
  - Add sequence diagrams for key flows
  - Expand security section
  - Include error handling scenarios
  - Add performance requirements
  - Document API contracts

  ## Summary

  The architecture provides a solid foundation with good separation of concerns and use of modern cloud services. Critical improvements should focus on:

  1. Resilience and fault tolerance
  2. Monitoring and observability
  3. Security hardening
  4. Data management policies
  5. Operational procedures
  6. Documentation completeness

  These improvements would significantly enhance the robustness and maintainability of the system.
  ```

commits:
  [{"SHA":"90dbab6376caf5871fd22b8f0e518f138cb364df","Message":"feat: add review_design pattern","Author":"xvnpw"}]


title: Five patterns to explore a project, opportunity or brief.
author: mattjoyce
author_url: https://github.com/mattjoyce
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1073
merged_at: 2024-10-28 22:35:20+00:00
created_at: 2025-07-16 04:25:34
body:
  identify_dsrp_distinctions
  identify_dsrp_perspectives
  identify_dsrp_relationships
  identify_dsrp_systems
  identify_job_stories

commits:
  [{"SHA":"ef4e7aa89acd1db89ced2fb009402d20440b9b58","Message":"Initial dsrp prompts","Author":"Matt Joyce"},{"SHA":"dd063f42bbbb9b004c37a1a6436cbe4999ec5929","Message":"Fixed mix up with system","Author":"Matt Joyce"},{"SHA":"9f29642635dbe770ce0ff9937e4fe1b3f58ae373","Message":"updated all dsrp prompts to increase divergenct thinking.","Author":"Matt Joyce"},{"SHA":"3c2280bc42825d75b88902228ac84a9e0a21fe48","Message":"Added identify_job_stories","Author":"Matt Joyce"},{"SHA":"703cd07210e622da04ae6cd46498739224486c5a","Message":"initial draft of s7 Strategy profiling","Author":"Matt Joyce"},{"SHA":"ef6e49a6c9c6a9f28e7a476463c8ea40e8dd65bf","Message":"added headwinds and tailwinds","Author":"Matt Joyce"},{"SHA":"1837ca3715dd7d19e46bae7c5a65b571421d5136","Message":"added structure to prompt","Author":"Matt Joyce"},{"SHA":"022011fb0d2b60054ac174a07366b7d6dd26f626","Message":"Merge branch 'danielmiessler:main' into main","Author":"Matt Joyce"},{"SHA":"721f6515ed6cee9685ca9c5a28aad1af2f92bbd7","Message":"added metadata and styleguide","Author":"Matt Joyce"},{"SHA":"62bc783d142f8aebe1b1cdb409fcaf07fcd6dfa8","Message":"Merge branch 'main' of https://github.com/mattjoyce/fabric into main","Author":"Matt Joyce"}]


title: feat: add pattern refine_design_document
author: xvnpw
author_url: https://github.com/xvnpw
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1077
merged_at: 2024-10-27 15:32:59+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  `refine_design_document` pattern is used to refine particular design document according to review. It suppose to be used with two other pattern `create_design_document` (https://github.com/danielmiessler/fabric/pull/1070) and `review_design` (https://github.com/danielmiessler/fabric/pull/1072)

  Example of usage:
  PROJECT.md:
  ```
  # AI Nutrition-Pro

  ## Business background

  Dietitians use online applications to create meals, diets and calculate calories called meal planners. Different professionals have different ways of creating diets, which gives a personal style to it. LLMs can reproduce this personal style of writing based on samples of already created content. Meal planners can use LLMs to speed up diet creation for dietitians.

  ## Project Overview

  AI Nutrition-Pro will be backend API application that will have the possibility to integrate with any meal planner application for dietitians. It will reproduce the personal style of a nutrition specialist based on samples.

  Dietitians will not use the application directly but from their meal planner applications. There will be no user interface exposed to Dietitians. Integration will be using meal plan applications backend.

  Direct clients of AI Nutrition-Pro will be applications like DietMaster Pro, Nutritionist Pro, or others. Those clients will send to AI Nutrition-Pro samples of content and AI Nutrition-Pro will generate requested type of content based on that. AI Nutrition-Pro will use LLM to generate requested content.

  ## Core Features

  - multi-tenant API application - where tenant is client application like DietMaster Pro, Nutritionist Pro, or others.
  - each tenant can contain many dietitians.
  - each dietitian can have multiple customers.
  - the application will be deployed into AWS cloud and use cloud-based services to store and process data.
  - the application will store and process PII information that might contain personal health data of customers.
  - ChatGPT 3.5 will be used as LLM.

  ## High level connection view

  mermaid
  flowchart TB
      DietMaster-Pro --> AI-Nutrition-Pro
      Nutritionist-Pro --> AI-Nutrition-Pro
      subgraph AWS
      AI-Nutrition-Pro
      end
      subgraph OpenAI
      ChatGPT-3.5
      end
      AI-Nutrition-Pro --> ChatGPT-3.5

  ```

  **Create design document**:
  ```bash
  echo "DESIGN DOCUMENT" > design-document.md
  cat PROJECT.md | fabric -p create_design_document >> design-document.md
  ```

  **Manually review design document**

  **Create review pattern**:
  ```bash
  echo "DESIGN REVIEW" > design-review.md
  cat design-document.md | fabric -p review_design >> design-review.md
  ```

  **Refine design according to review with pattern:**
  ```bash
  cat design-document.md design-review.md | fabric -p refine_design_document >> design-document-refined.md
  ```

  ## Related issues

  - create_design_document - https://github.com/danielmiessler/fabric/pull/1070 
  - review_design - https://github.com/danielmiessler/fabric/pull/1072

  ## Screenshots

commits:
  [{"SHA":"23ff16a03946d765fa0bafd3f5c013a66eaa96ef","Message":"feat: add pattern refine_design_document","Author":"xvnpw"}]


title: Create a basic translator pattern, edit file to add desired language
author: NuCl34R
author_url: https://github.com/NuCl34R
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1086
merged_at: 2024-10-27 15:03:28+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  This creates a new folder named translate in the pattern folder and adds the system.md file which contains the prompt for basic translation request.
  Users will want to edit the system.md file and replace the <Language> with the desired language to be translated to.
  I've tested it with a few files created from extract_wisdom and it seemed to work pretty well.

  ## Related issues
  None

  ## Screenshots
  None

commits:
  [{"SHA":"5c8b59fa2b5bad511acc80efb2775c954b687756","Message":"Create system.md","Author":"NuCl34R"}]


title: feat: add DEFAULT_CONTEXT_LENGTH setting
author: jaredmontoya
author_url: https://github.com/jaredmontoya
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1088
merged_at: 2024-10-30 15:59:13+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  This PR adds support for setting default Model Context Length.

  Motivation:
  - I don't want to create a separate extended context model in Ollama just to set the num_ctx parameter, also you can't change it on the fly if you do so.
  - This will fix all issues that are caused by Ollama's default 2048 token context window. They are common because Fabric's best patterns like `extract_wisdom`, `summarize` and others almost always require high context window lengths to work on large inputs.

  This PR adds:
  - `--contextLength` flag to set context length using cli
  - `DEFAULT_CONTEXT_LENGTH` option to `.config/fabric/.env` (used if `--contextLength` is not used)
  - *if neither `--contextLength` nor `DEFAULT_CONTEXT_LENGTH` are set context parameter is not sent at all*
  - `--dry-run` support is included

  How it works:
  - Now when choosing the default model during setup you can optionally specify the context window length to use with it because the model size and the context window you can afford corelate a lot.
  - The parameter is not sent at all if left blank which lets Ollama later implement dynamic context window adjustment based on your VRAM.
  - I chose to add context length to global defaults instead of ollama defaults to simplify implementation of the `--dry-run` vendor and so that in the future it can be reused for other vendors if they ever provide an API option to change the context window length. As well as because of the corelation between model size and how much more memory you can give to it's context window.

  Notes:
  - I realize that context length is a term that fights with fabric's context concept and that fabric already used all possible short one-letter flags that relate to the word context
  - I do not provide a short one-letter cli flag for setting contextLength because there are none left that mean context and because it's more of a debugging feature anyway. Users will just use the `.env` config to set this value.

  ## Related issues
  *actually* closes #662
  *actually* closes #743
  *possibly* closes #655

commits:
  [{"SHA":"455215290fc7cdc9460ab3eee770a444a00771c8","Message":"add model context length setting","Author":"jaredmontoya"}]


title: Introduce Nix to the project
author: jaredmontoya
author_url: https://github.com/jaredmontoya
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1089
merged_at: 2024-10-30 10:37:46+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  *Don't run `extract_wisdom` or `summarize` on this*

  I am the maintainer of `fabric-ai` package in the central NixOS repository called [nixpkgs](https://github.com/NixOS/nixpkgs)

  Earlier I created a PR #1088, but to make development a lot more comfortable for myself and other Nix users who decide to contribute to fabric I also wrote this Nix flake which will bring benefits of the Nix ecosystem to fabric.

  It improves developer experience and lets people unclutter their systems. Flake maintenance is not resource intensive at all if you know what you are doing, so any Nix user can create a PR if `flake.lock` needs updating.

  What does this bring to the project:
  - Reproducibility, if you use `nix build` to build fabric the build will be binary level reproducible on any system because everything is pinned in the `flake.lock` including the compiler.
  - Development shell, this flake provides a development shell configuration that can be activated automatically using [direnv](https://github.com/direnv/direnv) when entering the project root. It includes everything that you will need to develop the project including the `go` compiler, go tools, gomod2nix, 
  and the helper script `update` that basically executes `go mod -u && go mod tidy && gomod2nix generate`. Everything in this flake is pinned using `flake.lock` which is checked into git so you also get a history of ALL your dependencies including the compiler, not just go modules.
  -  This essentially means that even in a lot of years when old fabric code is incompatible with the new go compiler version you can just revert to the old git commit and automatically get the old compiler version and you will be able to build old versions of fabric with no problems.
  - **The package provided by this `flake.nix` means that NixOS users can directly install `fabric` from your git repository and any of it's branches or tags bypassing the `fabric-ai` package the central [nixpkgs](https://github.com/NixOS/nixpkgs) repository that is updated a lot less frequently.**
  - `nix fmt` formats all go files codebase with `gofmt` and all nix files with various nix formatters. It is possible to add `yamlfmt.enable = true;` to `treefmt.nix` and then it will also format yaml files, basically it's a tool to format any text files in the project. `nix flake check` can be used to check  if all files are formatted properly. In the future I probably will open a PR that adds `goimports-reviser` support to `treefmt-nix` so it will also be able to sort imports.

  If you don't know what Nix is and don't use it:
  - You can just ignore all files in this PR and use your own compiler like you did before even with those files present. Nothing changes for you personally.
  - In the future, if you need to build an old version of fabric with an old version of the compiler instead of having only one option you will have two options:
  - - Find out which version of the go compiler is needed for that commit, find it's package somewhere, install it, build the commit you want.
  - - Install Nix, checkout the needed commit, run either `nix build` for a production package or `nix develop` to enter a devshell with the needed compiler and run `go build`

  What to keep in mind:
  - Unfortunately if you run `go get -u && go mod tidy` or modify `go.mod` in any other way and then don't run `gomod2nix generate` after that it will desync `go.mod` and `gomod2nix.toml` which can lead to unexpected results when using `nix build`or installing the nix package, **normal builds will not be affected**.
  - **This problem can be mitigated by creating a github workflow that runs `gomod2nix gnerate` on all commits so that if `go.mod` is changed in any of them `gomod2nix.toml` is automatically synced.**
  - Another solution might be to just install [gomod2nix](https://github.com/tweag/gomod2nix) and remember to run it whenever you change `go.mod` but you will have to remind this to everyone who creates a PR that requires changing `go.mod`

commits:
  [{"SHA":"9b4db98ed9dc090d6ad6823812abcee95e4d7d22","Message":"add trailing newline","Author":"jaredmontoya"},{"SHA":"c67fe04d3cc8868d869c6b48f5402b38fd6160d4","Message":"add Nix Flake","Author":"jaredmontoya"}]


title: A couple of patterns.
author: wrochow
author_url: https://github.com/wrochow
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1090
merged_at: 2024-10-28 11:17:41+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  I have created two new patterns:

  - Ask Uncle Duke is a Java-centric software development pattern.
  - Dialog with Socrates is a conversational pattern for developing critical thinking.

commits:
  [{"SHA":"f8841b606e41c5a3bc6d2d601acdbb087368faca","Message":"Dialog with Socrates\n\nHave a conversation with a modern day philosopher who desires to engage in deep, meaningful conversations.","Author":"Waldo Rochow"},{"SHA":"47d2b438aaee3bb94e56ffbd5c9d55d14e0899fa","Message":"Ask uncle Duke\n\nDuke is an expert in software development using the Java programing language, especially with the Spring Framework and Maven.","Author":"Waldo Rochow"}]


title: feat: add md_callout pattern
author: joshmedeski
author_url: https://github.com/joshmedeski
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1094
merged_at: 2024-10-30 07:56:36+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Adds a pattern that can convert text into an appropriate markdown callout

commits:
  [{"SHA":"8b5be309feedd0b1bb9946e5ec31730938a7891e","Message":"feat: add md_callout pattern\n\nAdd a pattern that can convert text into an appropriate markdown callout","Author":"Josh Medeski"}]


title: Implement automated ci nix package version update
body:
  ## What this Pull Request (PR) does
  Implemented automatic CI updates of the nix package version

author: jaredmontoya
author_url: https://github.com/jaredmontoya
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1096
merged_at: 2024-10-30 19:06:03+00:00
created_at: 2025-07-16 04:25:34
commits:
  [{"SHA":"1ea3b4b3c58efc83a347265b04ce0ff29f5b005d","Message":"modularize nix flake","Author":"jaredmontoya"},{"SHA":"cd177ff4761bf0ccef08e559e9595412f89c71fe","Message":"automate nix package version update","Author":"jaredmontoya"}]


title: Fix nix package update workflow
author: jaredmontoya
author_url: https://github.com/jaredmontoya
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1098
merged_at: 2024-10-30 19:58:12+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  It's not possible for me to test if the CI works correctly before creating a PR so I made a mistake in #1096
  I forgot to add the line that adds the updated file to git.

commits:
  [{"SHA":"cb1b2bf5ca205fe85b918f9f18327ad6f0073d3c","Message":"fix nix package version auto update workflow","Author":"jaredmontoya"}]


title: Create user story pattern
body: A new pattern to help create user stories in agile software teams.
author: jholsgrove
author_url: https://github.com/jholsgrove
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1102
merged_at: 2024-10-31 18:02:19+00:00
created_at: 2025-07-16 04:25:34
commits:
  [{"SHA":"385d381cf1bb8569d4282d287e85ca5b1c334867","Message":"create user story pattern","Author":"Justin Holsgrove"}]


title: [add] RegEx for YT shorts
author: butterflyx
author_url: https://github.com/butterflyx
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1108
merged_at: 2024-11-06 22:28:30+00:00
created_at: 2025-07-16 04:25:34
body:
  ## Summary
  This pull request modifies the regular expression used in the `GetVideoId` function within the `youtube.go` file of the YouTube plugin. The change enhances the regex pattern to account for YouTube Shorts URLs.

  ## Files Changed
  - **plugins/tools/youtube/youtube.go**: 
    - The regex pattern for extracting video IDs from YouTube URLs was modified to include support for YouTube Shorts URLs.

  ## Code Changes
  The specific change made in the `youtube.go` file is as follows:
  ```go
  -       pattern := `(?:https?:\/\/)?(?:www\.)?(?:youtube\.com\/(?:[^\/\n\s]+\/\S+\/|(?:v|e(?:mbed)?)\/|\S*?[?&]v=)|youtu\.be\/)([a-zA-Z0-9_-]{11})`
  +       pattern := `(?:https?:\/\/)?(?:www\.)?(?:youtube\.com\/(?:[^\/\n\s]+\/\S+\/|(?:v|e(?:mbed)?)\/|(?:s(?:horts)\/)|\S*?[?&]v=)|youtu\.be\/)([a-zA-Z0-9_-]{11})`
  ```
  The addition of `(?:s(?:horts)\/)` allows the regex to match URLs that contain the "shorts" path, enabling the extraction of video IDs from YouTube Shorts links.

  ## Reason for Changes
  The primary reason for this change is to enhance the functionality of the YouTube plugin by allowing it to recognize and extract video IDs from YouTube Shorts URLs. As the popularity of Shorts continues to grow, it is essential for the plugin to support this format for better user experience and usability.

  ## Impact of Changes
  This change will improve the functionality of the YouTube plugin by ensuring that it can handle a wider range of YouTube URLs. It will make the tool more versatile and user-friendly, particularly for users who frequently share or work with YouTube Shorts.

  ## Test Plan
  To validate the changes, the following tests should be conducted:
  1. Use various YouTube Shorts URLs to ensure the `GetVideoId` function correctly extracts the video ID.
  2. Test existing YouTube video URLs to confirm that they continue to function as expected, ensuring no regression occurred with this change.

  ## Additional Notes
  No additional notes at this time. The changes have been made to enhance the functionality without impacting existing features.

commits:
  [{"SHA":"203add15e57bea17cf283ddd55314cf28dac9b24","Message":"[add] VideoID for YT shorts","Author":"butterflyx"},{"SHA":"e01a84b21db332bdb2fbb4d2096ebdf0727e609f","Message":"Merge branch 'main' into fix/yt-shorts","Author":"Eugen Eisler"}]


title: Added create_diy
author: ignacio-arce
author_url: https://github.com/ignacio-arce
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1115
merged_at: 2024-11-06 22:24:44+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Add a new pattern to create do it your self tutorial, you can use this for cooking recipes, tutorials, etc

commits:
  [{"SHA":"263b1cb187404a7e112aee53b29cda4f294a66b0","Message":"Added create_diy","Author":"Ignacio Arce"}]


title: Add alias generation information
author: verebes1
author_url: https://github.com/verebes1
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1117
merged_at: 2024-11-06 22:28:06+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  This PR updates the readme with information how to automatically generate aliases for all the patterns rather than having to use the full command for each pattern, you can now use their name on their own.
  It also adds the information on how to create an alias for youtube transcripts like in the previous python based version of fabric `yt`
  As an example with the information provided in the PR you'll be able to have shortcut access to your patterns like this:
  ```bash
  # use the alias
  summarize
  # instead of the full pattern prompt
  fabric --pattern summarize
  ```
  Also you'll be able to get a transcript of a youtube video:
  ```bash
  # like this
  yt https://www.youtube.com/watch?v=4b0iet22VIk
  # instead of the full command
  fabric -y https://www.youtube.com/watch?v=4b0iet22VIk --transcript
  ```

  ## Related issues
  Could not find any related issues

commits:
  [{"SHA":"c5483276e5772393ac18990b37888ef441197adc","Message":"Add alias generation information\n\n-Updated the readme with information about generating aliases for each\nprompt including on for youtube transcripts\n-Updated the table of contents","Author":"David"},{"SHA":"97c5341bc175022009bab5e872e0187edc7c211d","Message":"Merge branch 'main' into add-aliases-for-patterns","Author":"David"}]


title: Add auto save functionality
author: verebes1
author_url: https://github.com/verebes1
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1119
merged_at: 2024-11-07 12:13:35+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  This PR updates the readme with information how to create update the aliases for all the commands with auto saving functionality. 

  This still allows to use the pattern aliases on their own for example `summarize` however if you pass in a title for example `summarize "uni_article"` then it will create a markdown file with today's date in `YYYY-MM-DD-uni_article.md` in your obsidian vault path that you provide :)
  Of course you can tweak this to your likings and choose the datestamp format that suits you.

  ## Related issues
  Please reference any open issues this PR relates to in here.
  `closes #1012 `

commits:
  [{"SHA":"6377f951d8eebdbbde847fc8d8f8dfb2ab499711","Message":"Add auto save to aliases\n\n-Updated the readme with information about autogenerating aliases that\nallow autosaving to obsidian like tools\n-Updated the table of contents","Author":"David"}]


title: :sparkles: Added unaliasing to pattern setup
author: polyglotdev
author_url: https://github.com/polyglotdev
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1123
merged_at: 2024-11-09 05:24:22+00:00
created_at: 2025-07-16 04:25:34
body:
  In the process of setting up patterns, we've added a step to unalias any existing alias with the same name. This ensures that our dynamically defined functions won't conflict with any pre-existing aliases.

  ## What this Pull Request (PR) does
  During the setup of fabric I added the obsidian vault bits and received this error after sourcing my `~/.zshrc`

   ```bash
   (eval):2: defining function based on alias `agility_story'
      (eval):2: parse error near `()'
      (eval):2: defining function based on alias `ai'
      (eval):2: parse error near `()'
      (eval):2: defining function based on alias `analyze_answers'
      (eval):2: parse error near `()'
      (eval):2: defining function based on alias `analyze_cfp_submission'
      (eval):2: parse error near `()'
      (eval):2: defining function based on alias `analyze_claims'
      (eval):2: parse error near `()'
      (eval):2: defining function based on alias `analyze_comments'
      (eval):2: parse error near `()'
      (eval):2: defining function based on alias `analyze_debate'
  .... cut for brevity
  ```

  The unalias "`$pattern_name" 2>/dev/null` command removes any existing alias with the same name as the function you're about to define. The `2>/dev/null` part suppresses any error messages if the alias doesn't exist, ensuring the script runs smoothly.


  ## Related issues
  n/a

  ## Screenshots
  After sourcing with initial command:
  ![--llan~projectsfabric 2024-11-08 at 11 25 54 AM](https://github.com/user-attachments/assets/68488f54-62b8-423e-a4df-5072b50193f9)

  After corrected script:
  ![--llan~projectsfabric 2024-11-08 at 11 27 24 AM](https://github.com/user-attachments/assets/ab8148fb-be19-45b5-8d11-b392056b0505)

commits:
  [{"SHA":"de61e56fda458249e0c1ae2cfc5dd5dff2e5611e","Message":":sparkles: Added unaliasing to pattern setup\n\nIn the process of setting up patterns, we've added a step to unalias any existing alias with the same name. This ensures that our dynamically defined functions won't conflict with any pre-existing aliases.","Author":"Dom Hallan"}]


title: flake: add gomod2nix auto-update
author: jaredmontoya
author_url: https://github.com/jaredmontoya
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1126
merged_at: 2024-11-10 18:43:55+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Previously I added a nix flake for this project, but it requires constant `gomod2nix.toml` maintenance and as a result the reproducible fabric package provided by the flake broke when `go.mod` was updated without syncing `gomod2nix.toml`

  This pull request adds automatic gomod2nix updates to the existing github workflow.

commits:
  [{"SHA":"0289b67a84a4c95a405b1d2591df0b6023ecfb01","Message":"flake: add gomod2nix auto-update","Author":"jaredmontoya"}]


title: add a screenshot of fabric
author: xyb
author_url: https://github.com/xyb
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1129
merged_at: 2024-11-18 09:12:59+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  I attempted to submit Fabric to Terminal Trove and noticed their [requirement for an image preview](https://terminaltrove.com/post/). To comply with this guideline, I've created a screenshot demonstrating the summarize pattern. This should help potential users better understand the tool's functionality.

  ## Related issues
  None.

  ## Screenshots
  No more.

commits:
  [{"SHA":"c396288ca7fa2385549d41489b861c791525de7b","Message":"add a screenshot of fabric","Author":"Xie Yanbo"}]


title: fix: fix default gin
author: igophper
author_url: https://github.com/igophper
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1133
merged_at: 2024-11-18 09:13:12+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Please briefly describe what this PR does.
  gin.Default() to gin.New() because `gin.Default()` already includes the Logger and Recover middleware. 
  ```
  r.Use(gin.Logger())
  r.Use(gin.Recovery())
  ```
  ## Related issues
  Please reference any open issues this PR relates to in here.
  If it closes an issue, type `closes #[ISSUE_NUMBER]`.

  ## Screenshots
  Provide any screenshots you may find relevant to facilitate us understanding your PR.

commits:
  [{"SHA":"2ae26dc2a6b9b1f90942062efc64b3705f1a1165","Message":"fix: fix default gin","Author":"江杭辉"}]


title: Add `extract_recipe`
author: mrtnrdl
author_url: https://github.com/mrtnrdl
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1135
merged_at: 2024-11-26 08:51:41+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  I've created a pattern that lets  you easily extract a recipe from cooking-videos or articles. 

  ## Examples: 

  ### Spaghetti Carbonara

  ```
  yt 'https://www.youtube.com/watch?v=D_2DBLAt57c' | fabric --pattern extract_recipe
  ## Description
  Carbonara is a classic Italian pasta dish that features creamy cheese, crispy cured pork, and a hint of pepper. It's a moderately easy dish that takes around 20 minutes to prepare, ideal for a delightful meal with family or friends.

  ## Ingredients
  - 200g pasta
  - 100g Guanciale or Pancetta
  - 50g Pecorino Romano cheese, grated
  - 1 organic free-range egg
  - Black pepper, freshly ground
  - Salt, to taste
  - 1 garlic clove (optional)

  ## Steps
  - Hold the pasta with both hands, twist slightly, and release into boiling salted water. Cook for about 8 minutes.
  - Trim the rind off the Guanciale and cut it into 1cm thick slices, then roughly chop into 0.5cm pieces.
  - Place Guanciale in a cold pan and heat it over medium-high heat to render the fat.
  - Lightly crush the garlic clove and add it to the pan to infuse the oil, then remove it once the Guanciale turns golden.
  - Grind black pepper and sift to separate the finer, spicier interior from the milder outer shells.
  - In a bowl, beat the egg and mix in about 20g of Pecorino Romano cheese until smooth.
  - Once the Guanciale is crispy and the fat has rendered, remove the garlic clove and turn off the heat.
  - Add the cooked pasta to the pan along with a splash of pasta water to cool the pan.
  - Stir in the egg mixture, adding more pasta water as needed to create a creamy sauce.
  - Finish with additional ground black pepper and a sprinkle of Pecorino Romano cheese before serving.
  ```

  ### Cheesecake 

  ```
  yt 'https://www.youtube.com/watch?v=dyL8D4MOZd0' | fabric --pattern extract_recipe
  ## Short Description
  This classic cheesecake recipe is simple and can be enjoyed any time of the year. With a buttery shortcrust and a creamy, rich filling, this cheesecake is fresh and light, perfect for any occasion. The preparation involves making a shortcrust pastry and a smooth quark filling, followed by baking to achieve a golden top.

  ## Ingredients

  ### For the Shortcrust Pastry
  - 200 grams butter
  - 70 grams sugar
  - 300 grams flour
  - 1 teaspoon baking powder
  - 1 egg

  ### For the Quark Filling
  - 200 grams whipping cream
  - 125 grams soft butter
  - 200 grams sugar
  - 5 eggs
  - 500 grams low-fat quark
  - 200 grams sour cream
  - 40 grams cornstarch
  - 1 packet vanilla aroma

  ## Steps to Prepare the Meal

  - Prepare the shortcrust pastry by mixing butter, sugar, flour, baking powder, and egg until smooth. Knead with hands and refrigerate for about 10 minutes.
  - Roll out the dough and place it in a greased and floured baking form, creating a base and sides.
  - Prick the base with a fork and refrigerate while preparing the filling.
  - Whip the whipping cream and refrigerate.
  - Cream butter and sugar, then add eggs one at a time.
  - Incorporate quark, sour cream, cornstarch, and vanilla aroma into the mixture.
  - Fold the whipped cream into the mixture until smooth.
  - Pour the filling into the prepared pastry base.
  - Bake at 180 degrees Celsius for about an hour. After 30 minutes, score the edges of the cake to prevent cracking.
  - Allow the cheesecake to cool in the oven with the door slightly open.
  - Once cooled, serve and enjoy.
  ```

commits:
  [{"SHA":"81d765a34c4acc0f7d6160981b8b0f49dc808bce","Message":"Update version to v..1 and commit","Author":"github-actions[bot]"},{"SHA":"b758a27b93e1d67e179c428915a7691eacb15747","Message":"add extract_recipe to easily extract the necessary information from cooking-videos","Author":"martin riedel"},{"SHA":"beeba6989ae6b96e5af3ea18785e198920f173f4","Message":"Merge branch 'main' into main","Author":"Martin Riedel"},{"SHA":"153b8217fdac6ae7fd55b29efcf2ba27d509ebfd","Message":"Update version to v..1 and commit","Author":"github-actions[bot]"}]


title: feat: add file-based pattern support
author: mattjoyce
author_url: https://github.com/mattjoyce
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1142
merged_at: 2024-11-18 22:20:34+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  # Add file-based pattern support

  This PR adds the ability to load patterns directly from files using explicit path prefixes, making it easier to test and iterate on patterns without requiring installation into the fabric config structure.

  ## Why
  Currently, to test a pattern it needs to be instantiated in the fabric config file structure. This change allows for quicker testing and iteration of patterns directly from files.

  ## What
  - Adds support for loading patterns from files using explicit path prefixes
  - Maintains full backwards compatibility with named patterns
  - Handles common path formats:
    - Relative paths (`./pattern.txt`, `../pattern.txt`)
    - Home directory (`~/patterns/test.txt`)
    - Absolute paths (`/path/to/pattern.txt`)

  ## How
  Use explicit path prefixes to distinguish file paths from pattern names:
  ```bash
  # From files
  fabric --pattern ./draft-pattern.txt
  fabric --pattern ~/patterns/my-pattern.txt
  fabric --pattern ../../shared-patterns/test.txt

  # Existing pattern behavior remains unchanged
  fabric --pattern patternname

commits:
  [{"SHA":"af4752d32410c796c9893a4202a2f82d131fe9f3","Message":"feat: add file-based pattern support\n\nAllow patterns to be loaded directly from files using explicit path prefixes\n(~/, ./, /, or \\). This enables easier testing and iteration of patterns\nwithout requiring installation into the fabric config structure.\n\n- Supports relative paths (./pattern.txt, ../pattern.txt)\n- Supports home directory expansion (~/patterns/test.txt)\n- Supports absolute paths\n- Maintains backwards compatibility with named patterns\n- Requires explicit path markers to distinguish from pattern names\n\nExample usage:\n  fabric --pattern ./draft-pattern.txt\n  fabric --pattern ~/patterns/my-pattern.txt\n  fabric --pattern ../../shared-patterns/test.txt","Author":"Matt Joyce"}]


title: Update docker image
author: mariozig
author_url: https://github.com/mariozig
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1143
merged_at: 2024-11-18 09:11:39+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does

  Updates the docker image to `golang:1.23.3-alpine`. 

  This change fixes an issue when trying to use fabric via docker. Prior to this change if you'd run `docker-compose up` it would fail with the following error: 

  ```
  > [fabric-api builder 4/6] RUN go mod download:
  0.131 go: go.mod requires go >= 1.22.8 (running go 1.22.5; GOTOOLCHAIN=local)

  failed to solve: process "/bin/sh -c go mod download" did not complete successfully: exit code: 1
  ```
  ## Related issues
  None

  ## Screenshots
  None

commits:
  [{"SHA":"e8acf9ca07e8def9e6767e44e6d35fd57ba8b3a6","Message":"Update docker image","Author":"Mario Zigliotto"}]


title: Add summarize_meeting
author: mrwadams
author_url: https://github.com/mrwadams
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1146
merged_at: 2024-11-18 22:22:42+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Add a new pattern to create a meeting summary from an audio transcript.

  The pattern outputs the following sections (where relevant):
  - Key Points
  - Tasks
  - Decisions
  - Next Steps

commits:
  [{"SHA":"20a039a8abcd5be1318c0df5bfb51d60a7e28f32","Message":"Add summarize_meeting\n\n# What this Pull Request (PR) does\r\n\r\nAdd a new pattern to create a meeting summary from an audio transcript.\r\n\r\nThe pattern outputs the following sections (where relevant):\r\n- Key Points\r\n- Tasks\r\n- Decisions\r\n- Next Steps","Author":"Matt Adams"}]


title: refactor: unify pattern loading and variable handling
author: mattjoyce
author_url: https://github.com/mattjoyce
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1147
merged_at: 2024-11-19 08:54:47+00:00
created_at: 2025-07-16 04:25:34
body:
  - Stronger separation of concerns between chatter.go and patterns.go
  - Consolidate pattern loading logic into GetPattern method
  - Support both file and database patterns through single interface
  - Maintain API compatibility with Storage interface
  - Handle variable substitution in one place
  - Keep backward compatibility for REST API through Get method

  The changes enable cleaner pattern handling while maintaining existing interfaces and adding file-based pattern support.

commits:
  [{"SHA":"1f07ea25a29083a266d452ec56e99da7a563541b","Message":"refactor: unify pattern loading and variable handling\n\n- Stronger separation of concerns between chatter.go and patterns.go\n- Consolidate pattern loading logic into GetPattern method\n- Support both file and database patterns through single interface\n- Maintain API compatibility with Storage interface\n- Handle variable substitution in one place\n- Keep backward compatibility for REST API through Get method\n\nThe changes enable cleaner pattern handling while maintaining\nexisting interfaces and adding file-based pattern support.","Author":"Matt Joyce"}]


title: Fix typo in md_callout
author: mathisto
author_url: https://github.com/mathisto
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1149
merged_at: 2024-11-19 20:35:24+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Just a small typo in this pattern. Thanks so much for this splendid tool.

  ## Related issues

  ## Screenshots

commits:
  [{"SHA":"590a9e452d66ed1da621301e59e86ebe23d586f5","Message":"Fix typo in md_callout\n\nJust a small typo in this pattern. Thanks so much for this splendid tool.","Author":"Matt Kelly"}]


title: Curly brace templates and plugins
author: mattjoyce
author_url: https://github.com/mattjoyce
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1155
merged_at: 2024-11-21 21:56:37+00:00
created_at: 2025-07-16 04:25:34
body:
  Template System with Plugin Support

  This pull request introduces a new, centralized template package to support variable substitution, along with a core plugin system that extends the template's capabilities. The implementation aims to simplify and centralize the logic for processing variables, which will serve as the foundation for future templating features like front matter and plugin integrations.

  Key Changes:

  Template Package for Variable Substitution

  Added a new template package to handle variable substitution using {{variable}} syntax.

  Centralized substitution logic, previously embedded in patterns, into a unified template system.

  Updated existing code (e.g., patterns.go, chatter.go, and REST API) to use the new template package.

  Added support for multi-pass processing to handle nested variables and ensure comprehensive substitutions.

  Implemented error reporting for missing required variables.

  Core Plugin System and Utility Plugins

  Introduced a set of core plugins that extend the template system:

  datetime: Provides date/time formatting and manipulation.

  fetch: Handles HTTP content retrieval.

  file: Supports file system operations and content handling.

  sys: Offers system information and environment access.

  text: Facilitates string manipulation and formatting.

  Each plugin is fully documented and tested, ensuring robust utility across various scenarios.

  Motivation:
  These changes provide a robust foundation for centralized variable handling while opening doors to enhanced templating features through plugins. This approach will make it easier to maintain and extend the system, while the plugin architecture provides immediate practical tools for developers.

  Future Steps:

  Expand the plugin system with additional plugins for specific use cases.

  Integrate support for front matter and other advanced templating features.

  Testing:

  All changes are covered by comprehensive unit tests.

  Documentation for each plugin is included to guide developers in leveraging the new features.


  This relates to : https://github.com/danielmiessler/fabric/issues/1144#top

commits:
  [{"SHA":"d475e7b56828ec586682c9163c89d128d44c925a","Message":"feat(template): introduce template package for variable substitution\n\n- Add new template package to handle variable substitution with {{variable}} syntax\n- Move substitution logic from patterns to centralized template system\n- Update patterns.go to use template package for variable processing\n- Support special {{input}} handling for pattern content\n- Update chatter.go and rest API to pass input parameter\n- Enable multiple passes to handle nested variables\n- Report errors for missing required variables\n\nThis change sets up a foundation for future templating features like front matter\nand plugin support while keeping the substitution logic centralized.","Author":"Matt Joyce"},{"SHA":"b6eb969b3a960b161f27b530a96eae9db2369174","Message":"feat(template): implement core plugin system and utility plugins\n\nAdd initial set of utility plugins for the template system:\n- datetime: Date/time formatting and manipulation\n- fetch: HTTP content retrieval and processing\n- file: File system operations and content handling\n- sys: System information and environment access\n- text: String manipulation and formatting operations\n\nEach plugin includes:\n- Implementation with comprehensive test coverage\n- Markdown documentation of capabilities\n- Integration with template package\n\nThis builds on the template system to provide practical utility functions\nwhile maintaining a focused scope for the initial plugin release.","Author":"Matt Joyce"}]


title: fix: process template variables in raw input
author: mattjoyce
author_url: https://github.com/mattjoyce
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1157
merged_at: 2024-11-24 15:30:55+00:00
created_at: 2025-07-16 04:25:34
body:
  Process template variables ({{var}}) consistently in both pattern files and raw input messages. Previously variables were only processed when using pattern files.

  - Add template variable processing for raw input in BuildSession
  - Initialize messageContent explicitly
  - Remove errantly committed build artifact (fabric binary in previous commit)

  This will now support inline macros, with missing var checks.
   echo 'Hello {{name}}' | ./fabric -v=name:World

commits:
  [{"SHA":"58f9d3c89c234210f93d4cf34e93a093f61bdbed","Message":"fix: process template variables in raw input\n\nProcess template variables ({{var}}) consistently in both pattern files\nand raw input messages. Previously variables were only processed when\nusing pattern files.\n\n- Add template variable processing for raw input in BuildSession\n- Initialize messageContent explicitly\n- Remove errantly committed build artifact (fabric binary in previous commit)","Author":"Matt Joyce"},{"SHA":"9afa397c2715619baa34bcdc755612dc6823ba2f","Message":"fix : template.go will handle missing var in stdin imput too.\n\necho 'Hello {{name}}' | ./fabric -v=noname:World\nmissing required variable: name","Author":"Matt Joyce"},{"SHA":"af16494be10fdc8a5dcedff98295d57724eaca4d","Message":"fax:\traw mode was doubling user input, because it's now already embeded in pattern\n\tstreamlined some context staging","Author":"Matt Joyce"}]


title: fix: provide default message content to avoid nil pointer dereference
author: MegaGrindStone
author_url: https://github.com/MegaGrindStone
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1164
merged_at: 2024-11-26 22:13:20+00:00
created_at: 2025-07-16 04:25:34
body:
  In the current version, if user is executing pattern without input, eg `fabric --pattern summarize_git_diff`, the program will panic with this error:
  ```
  panic: runtime error: invalid memory address or nil pointer dereference
  [signal SIGSEGV: segmentation violation code=0x1 addr=0x10 pc=0xe22330]

  goroutine 1 [running]:
  github.com/danielmiessler/fabric/core.(*Chatter).BuildSession(0xc0004e43c0, 0xc00051e060, 0x0)
          /home/gs/go/pkg/mod/github.com/danielmiessler/fabric@v1.4.111/core/chatter.go:116 +0x3b0
  github.com/danielmiessler/fabric/core.(*Chatter).Send(0xc0004e43c0, 0xc00051e060, 0xc0003f00a0)
          /home/gs/go/pkg/mod/github.com/danielmiessler/fabric@v1.4.111/core/chatter.go:30 +0x69
  github.com/danielmiessler/fabric/cli.Cli({0x129b59d, 0x8})
          /home/gs/go/pkg/mod/github.com/danielmiessler/fabric@v1.4.111/cli/cli.go:230 +0x7fc
  main.main()
          /home/gs/go/pkg/mod/github.com/danielmiessler/fabric@v1.4.111/main.go:12 +0x25

  ```
  This PR address that issue by giving an empty input, or `messageContent` if `request.Message` is nil.

commits:
  [{"SHA":"34f508fd82a450da6683daaf6bf1d2878b475cb8","Message":"fix: provide default message content to avoid nil pointer dereference","Author":"MegaGrindStone"}]


title: feat: Fabric Web UI
author: johnconnor-sec
author_url: https://github.com/johnconnor-sec
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1165
merged_at: 2024-11-26 21:39:16+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Adds a Web Interface to Fabric

  The goal is to not only provide a user interface for Fabric, but also a out-of-the-box website for those who want to get started with web development or blogging. 
  Users can use this app as a GUI interface for Fabric, a ready to go blog-site, and / or a website template for their own projects. 

  ## Overview
  This PR introduces a web interface for Fabric, built with SvelteKit, that serves multiple purposes:
  1. Provides a GUI interface for Fabric operations
  2. Offers a ready-to-use blog platform
  3. Serves as a customizable website template

  ## Key Changes

  ### Web Interface (`/web`)
  - Added a new SvelteKit application for the frontend interface
  - Features include:
    - Chat interface
    - Blog post layout system
    - Tag management
    - Modern, responsive design
    - Dark mode support

  ### REST API (`/restapi`)
  - Enhanced API endpoints to support web interface operations
  - Added new routes for:
    - Chat interactions
    - Pattern management
    - Session handling
    - Storage operations
    - Configuration management

  ### CLI Updates
  - Modified `cli.go` to support web interface integration

  ## Technical Details
  - **Framework**: SvelteKit chosen for its:
    - Component-based architecture
    - Built-in routing
    - Excellent developer experience
    - Small bundle size
    - Server-side rendering capabilities

  ## Related issues
  N/A

  ## Screenshots
  ![image](https://github.com/user-attachments/assets/8eaaf87b-e343-4b34-9578-32b33726d770)

commits:
  [{"SHA":"f2cc718f4975610f6b3849b24c4d027a60a0a172","Message":"Update version to v..1 and commit","Author":"github-actions[bot]"},{"SHA":"7043f78f1f315e866c77acd478805b4358319a90","Message":"john 2024-11-26 08:40:21","Author":"John"},{"SHA":"e7f2d484375dfde80879dd78b1c2d03d9779557b","Message":"john 2024-11-26 08:44:20","Author":"John"},{"SHA":"23b495c8f7391b39cd2c22c6c36944e07a240d3c","Message":"Update version to v..1 and commit","Author":"github-actions[bot]"},{"SHA":"30f37ea633daa8af761acbcb6fd287c2eda47f3f","Message":"john 2024-11-26 08:53:48","Author":"John"},{"SHA":"097b3eb0baad50bd1e0a1e5a69b0feb63382f7d9","Message":"Update Obsidian.md","Author":"John Connor"},{"SHA":"a3ea63c1f9e60e5ab8019dbf8eaa1c25ee040838","Message":"Update Obsidian.md","Author":"John Connor"},{"SHA":"9fa863408344ddaee731bec6f0b2d3d9e9fb5700","Message":"Update README.md","Author":"John Connor"}]


author: dependabot
author_url: https://github.com/apps/dependabot
author_type: bot
url: https://github.com/danielmiessler/Fabric/pull/1166
merged_at: 2024-11-26 21:44:55+00:00
created_at: 2025-07-16 04:25:34
title:
  build(deps-dev): bump @sveltejs/kit from 2.6.1 to 2.8.4 in /web in the npm_and_yarn group across 1 directory

body:
  Bumps the npm_and_yarn group with 1 update in the /web directory: [@sveltejs/kit](https://github.com/sveltejs/kit/tree/HEAD/packages/kit).

  Updates `@sveltejs/kit` from 2.6.1 to 2.8.4
  <details>
  <summary>Release notes</summary>
  <p><em>Sourced from <a href="https://github.com/sveltejs/kit/releases"><code>@​sveltejs/kit</code>'s releases</a>.</em></p>
  <blockquote>
  <h2><code>@​sveltejs/kit</code><a href="https://github.com/2"><code>@​2</code></a>.8.4</h2>
  <h3>Patch Changes</h3>
  <ul>
  <li>fix: update inline css url generation for FOUC prevention in dev (<a href="https://redirect.github.com/sveltejs/kit/pull/13007">#13007</a>)</li>
  </ul>
  <h2><code>@​sveltejs/kit</code><a href="https://github.com/2"><code>@​2</code></a>.8.3</h2>
  <h3>Patch Changes</h3>
  <ul>
  <li>
  <p>fix: ensure error messages are escaped (<a href="https://redirect.github.com/sveltejs/kit/pull/13050">#13050</a>)</p>
  </li>
  <li>
  <p>fix: escape values included in dev 404 page (<a href="https://redirect.github.com/sveltejs/kit/pull/13039">#13039</a>)</p>
  </li>
  </ul>
  <h2><code>@​sveltejs/kit</code><a href="https://github.com/2"><code>@​2</code></a>.8.2</h2>
  <h3>Patch Changes</h3>
  <ul>
  <li>
  <p>fix: prevent duplicate fetch request when using Request with load function's fetch (<a href="https://redirect.github.com/sveltejs/kit/pull/13023">#13023</a>)</p>
  </li>
  <li>
  <p>fix: do not override default cookie decoder to allow users to override the <code>cookie</code> library version (<a href="https://redirect.github.com/sveltejs/kit/pull/13037">#13037</a>)</p>
  </li>
  </ul>
  <h2><code>@​sveltejs/kit</code><a href="https://github.com/2"><code>@​2</code></a>.8.1</h2>
  <h3>Patch Changes</h3>
  <ul>
  <li>
  <p>fix: only add nonce to <code>script-src-elem</code>, <code>style-src-attr</code> and <code>style-src-elem</code> CSP directives when <code>unsafe-inline</code> is not present (<a href="https://redirect.github.com/sveltejs/kit/pull/11613">#11613</a>)</p>
  </li>
  <li>
  <p>fix: support HTTP/2 in dev and production. Revert the changes from <a href="https://redirect.github.com/sveltejs/kit/pull/12907">#12907</a> to downgrade HTTP/2 to TLS as now being unnecessary (<a href="https://redirect.github.com/sveltejs/kit/pull/12989">#12989</a>)</p>
  </li>
  </ul>
  <h2><code>@​sveltejs/kit</code><a href="https://github.com/2"><code>@​2</code></a>.8.0</h2>
  <h3>Minor Changes</h3>
  <ul>
  <li>feat: add helper to identify <code>ActionFailure</code> objects (<a href="https://redirect.github.com/sveltejs/kit/pull/12878">#12878</a>)</li>
  </ul>
  <h2><code>@​sveltejs/kit</code><a href="https://github.com/2"><code>@​2</code></a>.7.7</h2>
  <h3>Patch Changes</h3>
  <ul>
  <li>fix: update link in JSDoc (<a href="https://redirect.github.com/sveltejs/kit/pull/12963">#12963</a>)</li>
  </ul>
  <h2><code>@​sveltejs/kit</code><a href="https://github.com/2"><code>@​2</code></a>.7.6</h2>
  <h3>Patch Changes</h3>
  <ul>
  <li>fix: update broken links in JSDoc (<a href="https://redirect.github.com/sveltejs/kit/pull/12960">#12960</a>)</li>
  </ul>
  <h2><code>@​sveltejs/kit</code><a href="https://github.com/2"><code>@​2</code></a>.7.5</h2>
  <h3>Patch Changes</h3>
  <ul>
  <li>fix: warn on invalid cookie name characters (<a href="https://redirect.github.com/sveltejs/kit/pull/12806">#12806</a>)</li>
  </ul>
  <!-- raw HTML omitted -->
  </blockquote>
  <p>... (truncated)</p>
  </details>
  <details>
  <summary>Changelog</summary>
  <p><em>Sourced from <a href="https://github.com/sveltejs/kit/blob/main/packages/kit/CHANGELOG.md"><code>@​sveltejs/kit</code>'s changelog</a>.</em></p>
  <blockquote>
  <h2>2.8.4</h2>
  <h3>Patch Changes</h3>
  <ul>
  <li>fix: update inline css url generation for FOUC prevention in dev (<a href="https://redirect.github.com/sveltejs/kit/pull/13007">#13007</a>)</li>
  </ul>
  <h2>2.8.3</h2>
  <h3>Patch Changes</h3>
  <ul>
  <li>
  <p>fix: ensure error messages are escaped (<a href="https://redirect.github.com/sveltejs/kit/pull/13050">#13050</a>)</p>
  </li>
  <li>
  <p>fix: escape values included in dev 404 page (<a href="https://redirect.github.com/sveltejs/kit/pull/13039">#13039</a>)</p>
  </li>
  </ul>
  <h2>2.8.2</h2>
  <h3>Patch Changes</h3>
  <ul>
  <li>
  <p>fix: prevent duplicate fetch request when using Request with load function's fetch (<a href="https://redirect.github.com/sveltejs/kit/pull/13023">#13023</a>)</p>
  </li>
  <li>
  <p>fix: do not override default cookie decoder to allow users to override the <code>cookie</code> library version (<a href="https://redirect.github.com/sveltejs/kit/pull/13037">#13037</a>)</p>
  </li>
  </ul>
  <h2>2.8.1</h2>
  <h3>Patch Changes</h3>
  <ul>
  <li>
  <p>fix: only add nonce to <code>script-src-elem</code>, <code>style-src-attr</code> and <code>style-src-elem</code> CSP directives when <code>unsafe-inline</code> is not present (<a href="https://redirect.github.com/sveltejs/kit/pull/11613">#11613</a>)</p>
  </li>
  <li>
  <p>fix: support HTTP/2 in dev and production. Revert the changes from <a href="https://redirect.github.com/sveltejs/kit/pull/12907">#12907</a> to downgrade HTTP/2 to TLS as now being unnecessary (<a href="https://redirect.github.com/sveltejs/kit/pull/12989">#12989</a>)</p>
  </li>
  </ul>
  <h2>2.8.0</h2>
  <h3>Minor Changes</h3>
  <ul>
  <li>feat: add helper to identify <code>ActionFailure</code> objects (<a href="https://redirect.github.com/sveltejs/kit/pull/12878">#12878</a>)</li>
  </ul>
  <h2>2.7.7</h2>
  <h3>Patch Changes</h3>
  <ul>
  <li>fix: update link in JSDoc (<a href="https://redirect.github.com/sveltejs/kit/pull/12963">#12963</a>)</li>
  </ul>
  <h2>2.7.6</h2>
  <h3>Patch Changes</h3>
  <ul>
  <li>fix: update broken links in JSDoc (<a href="https://redirect.github.com/sveltejs/kit/pull/12960">#12960</a>)</li>
  </ul>
  <!-- raw HTML omitted -->
  </blockquote>
  <p>... (truncated)</p>
  </details>
  <details>
  <summary>Commits</summary>
  <ul>
  <li><a href="https://github.com/sveltejs/kit/commit/7246a54968649d1bea0e608a72968f8bdc7c2e5c"><code>7246a54</code></a> Version Packages (<a href="https://github.com/sveltejs/kit/tree/HEAD/packages/kit/issues/13052">#13052</a>)</li>
  <li><a href="https://github.com/sveltejs/kit/commit/efb9019f2171d603c44c150f650b637af4438a1f"><code>efb9019</code></a> fix: update inline css url in dev (<a href="https://github.com/sveltejs/kit/tree/HEAD/packages/kit/issues/13007">#13007</a>)</li>
  <li><a href="https://github.com/sveltejs/kit/commit/429bfb74fe823ea13a5fa0547dcf4cd6bb358a93"><code>429bfb7</code></a> Version Packages (<a href="https://github.com/sveltejs/kit/tree/HEAD/packages/kit/issues/13049">#13049</a>)</li>
  <li><a href="https://github.com/sveltejs/kit/commit/134e36343ef57ed7e6e2b3bb9e7f05ad37865794"><code>134e363</code></a> fix: ensure error messages are escaped (<a href="https://github.com/sveltejs/kit/tree/HEAD/packages/kit/issues/13050">#13050</a>)</li>
  <li><a href="https://github.com/sveltejs/kit/commit/d338d4635a7fd947ba5112df6ee632c4a0979438"><code>d338d46</code></a> fix: escape values included in dev 404 page (<a href="https://github.com/sveltejs/kit/tree/HEAD/packages/kit/issues/13039">#13039</a>)</li>
  <li><a href="https://github.com/sveltejs/kit/commit/5f8399d88fd9461a6111e03e6168067fba42e2c1"><code>5f8399d</code></a> Version Packages (<a href="https://github.com/sveltejs/kit/tree/HEAD/packages/kit/issues/13024">#13024</a>)</li>
  <li><a href="https://github.com/sveltejs/kit/commit/1358cccd52190df3c74bdd8970dbfb06ffc4ec72"><code>1358ccc</code></a> fix: use default cookie decoder (<a href="https://github.com/sveltejs/kit/tree/HEAD/packages/kit/issues/13037">#13037</a>)</li>
  <li><a href="https://github.com/sveltejs/kit/commit/570562b74d9e9f295d9b617478088a650f51e96b"><code>570562b</code></a> fix: handle empty Headers when serialising Request passed to fetch (<a href="https://github.com/sveltejs/kit/tree/HEAD/packages/kit/issues/13023">#13023</a>)</li>
  <li><a href="https://github.com/sveltejs/kit/commit/435984bf61b047d1e1a8efe88354ca7ac4e9109f"><code>435984b</code></a> Version Packages (<a href="https://github.com/sveltejs/kit/tree/HEAD/packages/kit/issues/12992">#12992</a>)</li>
  <li><a href="https://github.com/sveltejs/kit/commit/0bd4426944ce9995b86199900e39c8d3929fa2f2"><code>0bd4426</code></a> fix: support custom servers using HTTP/2 in production (<a href="https://github.com/sveltejs/kit/tree/HEAD/packages/kit/issues/12989">#12989</a>)</li>
  <li>Additional commits viewable in <a href="https://github.com/sveltejs/kit/commits/@sveltejs/kit@2.8.4/packages/kit">compare view</a></li>
  </ul>
  </details>
  <br />


  [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@sveltejs/kit&package-manager=npm_and_yarn&previous-version=2.6.1&new-version=2.8.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

  Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

  [//]: # (dependabot-automerge-start)
  [//]: # (dependabot-automerge-end)

  ---

  <details>
  <summary>Dependabot commands and options</summary>
  <br />

  You can trigger Dependabot actions by commenting on this PR:
  - `@dependabot rebase` will rebase this PR
  - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
  - `@dependabot merge` will merge this PR after your CI passes on it
  - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
  - `@dependabot cancel merge` will cancel a previously requested merge and block automerging
  - `@dependabot reopen` will reopen this PR if it is closed
  - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
  - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
  - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
  - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
  - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency
  - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions
  You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/danielmiessler/fabric/network/alerts).

  </details>

commits:
  [{"SHA":"63b357168eb30d7d8125fec4d02be9a8eebad3a5","Message":"build(deps-dev): bump @sveltejs/kit\n\nBumps the npm_and_yarn group with 1 update in the /web directory: [@sveltejs/kit](https://github.com/sveltejs/kit/tree/HEAD/packages/kit).\n\n\nUpdates `@sveltejs/kit` from 2.6.1 to 2.8.4\n- [Release notes](https://github.com/sveltejs/kit/releases)\n- [Changelog](https://github.com/sveltejs/kit/blob/main/packages/kit/CHANGELOG.md)\n- [Commits](https://github.com/sveltejs/kit/commits/@sveltejs/kit@2.8.4/packages/kit)\n\n---\nupdated-dependencies:\n- dependency-name: \"@sveltejs/kit\"\n  dependency-type: direct:development\n  dependency-group: npm_and_yarn\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e","Author":"dependabot[bot]"}]


title: Update README.md
author: johnconnor-sec
author_url: https://github.com/johnconnor-sec
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1168
merged_at: 2024-11-27 00:19:46+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Adds info about the 'Web_Interface' feature with instructions for installation and usage. 

commits:
  [{"SHA":"ba56c33cf6903d986f58956ec98daf9f71161fd6","Message":"Update README.md","Author":"John Connor"},{"SHA":"3f8bca87284426b64f11cf1c1d584de72fc6338d","Message":"Update README.md","Author":"John Connor"}]


title: Curly brace templates
body:
  Fixes segfault iss if pattern is used with no user input.

  ./fabric -p foo

author: mattjoyce
author_url: https://github.com/mattjoyce
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1174
merged_at: 2024-12-05 09:33:17+00:00
created_at: 2025-07-16 04:25:34
commits:
  [{"SHA":"a7d6de1661a320598ac74db8e1151658088d97cc","Message":"Fix pattern file usage without stdin\n\nWhen using pattern files with variables but no stdin input, ensure proper\ntemplate processing by initializing an empty message. This allows patterns\nlike:\n  ./fabric -p pattern.txt -v=name:value\n\nto work without requiring stdin input, while maintaining compatibility\nwith existing stdin usage:\n  echo \"input\" | ./fabric -p pattern.txt -v=name:value\n\nChanges:\n- Add empty message initialization in BuildSession when Message is nil\n- Remove redundant template processing of message content\n- Let pattern processing handle all template resolution\n\nThis simplifies the template processing flow while supporting both\nstdin and non-stdin use cases.","Author":"Matt Joyce"},{"SHA":"efd363d5fb976cf34b01f2ccad0b7531ed80ee33","Message":"Revert \"Fix pattern file usage without stdin\"\n\nThis reverts commit 744ec0824be60ab39337d8cc92ea0552fcc2c31c.","Author":"Matt Joyce"},{"SHA":"fc67dea243f032e6db92a07856c2712d43dd8f04","Message":"fixed : if there is no stdin, then a nil message was passed to pattern.go resulting in segfault.\nnow we make user input ' ', before processing.","Author":"Matt Joyce"}]


title: added a new pattern create_newsletter_entry
author: sluosapher
author_url: https://github.com/sluosapher
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1179
merged_at: 2024-12-05 09:32:23+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  This PR adds a new patter to create a newsletter section on the input text

  ## Related issues
  Please reference any open issues this PR relates to in here.
  If it closes an issue, type `closes #[ISSUE_NUMBER]`.

  ## Screenshots
  Provide any screenshots you may find relevant to facilitate us understanding your PR.

commits:
  [{"SHA":"fdd1d614b2da7319f23160e5e6814c3082a482f2","Message":"added a new pattern create_newsletter_entry","Author":"Song Luo"}]


title: Bugfix/1169 symlinks
author: mattjoyce
author_url: https://github.com/mattjoyce
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1181
merged_at: 2024-12-07 11:23:53+00:00
created_at: 2025-07-16 04:25:34
body:
  Fix Symlink Handling in GetNames and Path Normalization
  Problem

  The GetNames method in the PatternsEntity had a bug where it failed to include symlinked directories when listing patterns. This caused issues in scenarios where symlinked directories were expected to be processed but were excluded from the results.

  Additionally, path normalization throughout the project was inconsistent, leading to potential errors when dealing with relative paths, ~, ./, ../, or symlinks.
  Solution

  This branch addresses the symlink bug in GetNames and improves overall path handling by introducing robust fixes and enhancements:

      Fix in GetNames:
          Updated GetNames to detect symlinked directories and include them when listing patterns.
          Added the IsSymlinkToDir helper function to identify symlinks that point to directories.

      Enhanced GetAbsolutePath:
          Refined the GetAbsolutePath function in common to handle:
              Path normalization (~, ./, ../).
              Symlink resolution where applicable.
              Graceful handling of non-existent paths.

      Comprehensive Testing:
          Added utils_test.go to validate the behavior of GetAbsolutePath and IsSymlinkToDir across a wide range of scenarios, including:
              Valid paths (relative, absolute).
              Non-existent paths.
              Symlinked directories and files.
              Broken symlinks.

      Integration:
          Updated all affected areas of the project to ensure consistent usage of the updated GetNames and GetAbsolutePath.

  Changes

      Bug Fix:
          Fixed symlink handling in GetNames to ensure symlinked directories are included.
      Refactoring:
          Introduced IsSymlinkToDir in common for reusable symlink detection.
      Enhancements:
          Improved GetAbsolutePath for robust path normalization.
      Testing:
          Added comprehensive unit tests for both GetAbsolutePath and IsSymlinkToDir.

  Impact

      Bug Resolution:
          Symlinked directories are now correctly handled in GetNames.
      Improved Path Handling:
          Consistent and reliable path normalization across the project.
      Better Test Coverage:
          New tests ensure robustness and future-proofing of critical utilities.

  Testing

      Verified all test cases pass, including:
          TestGetAbsolutePath.
          TestIsSymlinkToDir.
          Integration scenarios involving GetNames and symlinked directories.
   

commits:
  [{"SHA":"ec5ed689bb3a90bbc74c68b4d8f3f3da6b47d01b","Message":"Update version to v..1 and commit","Author":"github-actions[bot]"},{"SHA":"09fb9132791ab6cbbc6ac982b32fc280da1a42f4","Message":"Fix #1169: Add robust handling for paths and symlinks in GetAbsolutePath","Author":"Matt Joyce"},{"SHA":"0320e17652fd26f6862ad98b8e130b67daad2105","Message":"Revert \"Update version to v..1 and commit\"\n\nThis reverts commit ec5ed689bb3a90bbc74c68b4d8f3f3da6b47d01b.","Author":"Matt Joyce"}]


title: analyze_risk pattern
author: jessefmoore
author_url: https://github.com/jessefmoore
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1182
merged_at: 2024-12-07 22:57:02+00:00
created_at: 2025-07-16 04:25:34
body:
  Created a pattern to analyze 3rd party vendor risk.

  ## What this Pull Request (PR) does
  Created a folder called analyze_risk within the  pattern directory and then added system.md of pattern to analyze 3rd party vendor risk.

  ## Related issues
  NONE

  ## Screenshots
  It ends up looking like this:
  ![image](https://github.com/user-attachments/assets/a952551f-6215-49ec-a632-35a835fd4f5a)

commits:
  [{"SHA":"9226e95d189dbc2b1c5a8d71c3aa2e1edf984267","Message":"analyze_risk pattern\n\nCreated a pattern to analyze 3rd party vendor risk.","Author":"Jesse Moore"}]


title: Add --input-has-vars flag to control variable substitution in input
author: mattjoyce
author_url: https://github.com/mattjoyce
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1189
merged_at: 2024-12-10 12:22:17+00:00
created_at: 2025-07-16 04:25:34
body:
  Make template variable substitution in input opt-in via --input-has-vars flag

  ## Problem
  When users paste Ansible, Jekyll, or other content containing {{variable}} syntax into fabric, 
  our template processor attempts to resolve these variables, leading to unwanted variable 
  substitution and errors about missing variables.

  ## Solution
  - Added new --input-has-vars flag
  - Template variable substitution in user input only occurs when flag is set
  - All other template processing (patterns, etc.) remains unchanged
  - Preserves literal curly braces by default

  ## Testing
  ```bash
  # Without flag - preserves template syntax
  echo "Hello my name is {{name}}" | ./fabric -v=name:Matt
  > Hello! It looks like there might have been a small error...

  # With flag - performs substitution
  echo "Hello my name is {{name}}" | ./fabric -v=name:Matt --input-has-vars
  > Hello Matt! How can I assist you today?

  Relates to : 
  https://github.com/danielmiessler/fabric/issues/1184
  https://github.com/danielmiessler/fabric/issues/1171

commits:
  [{"SHA":"01519d748671e449d5e5292ecbedb5d5bce7eb37","Message":"Add --input-has-vars flag to control variable substitution in input\n\n- Add InputHasVars field to ChatRequest struct\n- Only process template variables in user input when flag is set\n- Fixes issue with Ansible/Jekyll templates that use {{var}} syntax\n\nThis change makes template variable substitution in user input opt-in\nvia the --input-has-vars flag, preserving literal curly braces by\ndefault.","Author":"Matt Joyce"}]


title: Fix: Mask input token to prevent var substitution in patterns
author: mattjoyce
author_url: https://github.com/mattjoyce
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1200
merged_at: 2024-12-13 21:16:38+00:00
created_at: 2025-07-16 04:25:34
body:
  Fix recursive variable resolution of {{input}} in patterns

  This PR fixes an issue where the recursive template variable resolution system would process {{input}} placeholders prematurely during pattern processing.

  The fix:
  - Introduces a sentinel token approach to protect {{input}} during variable resolution
  - Temporarily replaces all {{input}} occurrences with a unique sentinel string
  - Processes all other template variables normally
  - Restores the user input in place of each sentinel at the end

  This ensures that:
  1. Pattern variables are fully resolved
  2. All {{input}} placements are preserved
  3. User input is inserted at each {{input}} location
  4. No unintended recursive processing occurs

  The change is contained to the pattern processing logic and maintains compatibility with the `--input-has-vars` flag behavior introduced in #1157.

commits:
  [{"SHA":"e795055d138edbf03766c49e92f0dbac2bd9b3c7","Message":"Fix: Mask input token to prevent var substitution in patterns","Author":"Matt Joyce"}]


title: feat: Add YAML configuration support
author: mattjoyce
author_url: https://github.com/mattjoyce
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1201
merged_at: 2024-12-14 15:01:42+00:00
created_at: 2025-07-16 04:25:34
body:
  ## Overview
  This PR adds YAML configuration support to Fabric, allowing users to persist commonly used settings and share configurations. The implementation focuses on maintainability and extensibility while preserving all existing CLI functionality.

  ## Key Features
  - Load settings from YAML configuration files
  - Maintain proper precedence (CLI flags override YAML values)
  - Type-safe parsing with reflection
  - Easy extensibility through struct tags


  ## Implementation Details
  - Added yaml tags to supported Flags struct fields
  - Uses reflection to safely handle YAML-to-struct mapping
  - Maintains backward compatibility with existing CLI
  - Early parsing of --config flag to support proper override order

  ## Testing
  Added test cases covering:
  - Basic YAML configuration loading
  - CLI override behavior
  - Type conversion handling
  - Error cases

  ## Documentation
  Added README documentation covering:
  - Usage instructions
  - Supported options
  - Extension guidelines
  - Debugging support

  ## Future Considerations
  - May add support for additional configuration options as needed
  - Could add support for multiple config files or profiles in future

  ## Testing Notes
  Test config

  ```yaml
  model: phi3:latest
  model: gpt-4
  temperature: 0.8
  pattern: ai
  stream: true
  topp: 0.95
  properties:
    key1: value1
    key2: value2
  tags:
    - tag1
    - tag2
  presencepenalty: 0.1
  frequencypenalty: 0.2
  dry-run: false
  ```

  `echo "may name is matt" | ./fabric --config config.yaml`

commits:
  [{"SHA":"89153dd235687c87571a8f55fa93659fded19c5f","Message":"feat: Add YAML configuration support\n\nAdd support for persistent configuration via YAML files. Users can now specify\ncommon options in a config file while maintaining the ability to override with\nCLI flags. Currently supports core options like model, temperature, and pattern\nsettings.\n\n- Add --config flag for specifying YAML config path\n- Support standard option precedence (CLI \u003e YAML \u003e defaults)\n- Add type-safe YAML parsing with reflection\n- Add tests for YAML config functionality","Author":"Matt Joyce"}]


title: Fix: Issue with the custom message and added example config file.
author: mattjoyce
author_url: https://github.com/mattjoyce
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1208
merged_at: 2024-12-20 11:16:34+00:00
created_at: 2025-07-16 04:25:34
body:
  This fixes an issue introduced in the last feature, where the custom message was incorrectly handled.
  In this usage 
  echo "foo" | ./fabric --pattern ai "custom message" --dry-run

  it would erroneously append --dry-run to the user input.



  Added example.yaml and readme

commits:
  [{"SHA":"8f4aab4f619a6100746849fb580d145255fc804b","Message":"Fix: Issue with the custom message and added example config file.","Author":"Matt Joyce"}]


title: Significant updates to Duke and Socrates
author: wrochow
author_url: https://github.com/wrochow
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1212
merged_at: 2024-12-22 14:56:50+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  The updates provide the two chatbots with more direction and create a more realistic experience.

  ## Related issues
  n/a

  ## Screenshots
  n/a

  Both chatbots are live at [innoLab.ca](www.innoLab.ca/chat)

commits:
  [{"SHA":"621b64c89f3c4d0be82efa7be39af487b400d889","Message":"Significant thematic rewrite.\n\nIngested the following documents, and then extracted themes and examples of how Socrates interacted with those around him.\n* Apology by Plato\n* Phaedrus by Plato\n* Symposium by Plato\n* The Republic by Plato\n* The Economist by Xenophon\n* The Memorabilia by Xenophon\n* The Memorable Thoughts of Socrates by Xenophon\n* The Symposium by Xenophon\n\nMany thanks to \u003ca href=\"https://www.gutenberg.org/\"\u003eProject Gutenberg\u003c/a\u003e for the source materials.","Author":"Waldo Rochow"},{"SHA":"3b1b0385e1c9ac7494cdeab9067da2d8929261c1","Message":"Significant update\n\nAdded specific steps for research, analysis, and code reviews.","Author":"Waldo Rochow"},{"SHA":"95f0c95832971fd6a28336cea7353d86c929cd57","Message":"Merge branch 'main' into main","Author":"Waldo Rochow"},{"SHA":"9a9990f78c8f8b786abd1e39559130272e1f6e1c","Message":"Update version to v..1 and commit","Author":"github-actions[bot]"},{"SHA":"ac1fc4b1d6939746df4c138bf63639706279627a","Message":"Merge branch 'main' into main","Author":"Waldo Rochow"},{"SHA":"1e7ae9790c99fbb348f1fef6498c02cb85959ce7","Message":"Update version to v..1 and commit","Author":"github-actions[bot]"},{"SHA":"4100ace659a121dfa85ce0befbce0d8950408206","Message":"Don't quite know how I screwed this up, I wasn't even working there.","Author":"Waldo Rochow"},{"SHA":"c53f160ab8cda244dc2a26fd07e4db4db7242e8b","Message":"Update version to v..1 and commit","Author":"github-actions[bot]"},{"SHA":"811e4c84abb7381ff79003f08fca665c4dca7533","Message":"Update version.go","Author":"Eugen Eisler"},{"SHA":"1977c6260a4b52cf98eee0cc99b5488ced712394","Message":"Update version to v..1 and commit","Author":"github-actions[bot]"},{"SHA":"ce2d6def36466d79ab4e0abd5b777bb4efc0466d","Message":"Merge branch 'main' into main","Author":"Eugen Eisler"}]


title: Spelling Fixes
author: AnirudhG07
author_url: https://github.com/AnirudhG07
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1213
merged_at: 2024-12-21 13:59:21+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Please briefly describe what this PR does.
  Hi! I found couple of spelling issues in README and patterns. Hope that can be fixed in the repo, if you find them relevant.

  ## Related issues
  Please reference any open issues this PR relates to in here.
  If it closes an issue, type `closes #[ISSUE_NUMBER]`.
  NA

  ## Screenshots
  Provide any screenshots you may find relevant to facilitate us understanding your PR.
  NA

commits:
  [{"SHA":"a7ed257fe393c9b7c57695ded3fdde67f3d62e30","Message":"Spelling fixes in patterns","Author":"AnirudhG07"},{"SHA":"2ba294f4d613dce3877cea3f45fc3d68c5133d79","Message":"Spelling fix in READEME","Author":"AnirudhG07"},{"SHA":"b008d17b6e0c12c30cb8b097f7450b0e76631493","Message":"Spelling fixes in create_quiz pattern","Author":"AnirudhG07"}]


title: Fix the typo in the sentence
body:
  ## What this Pull Request (PR) does

  Fixes a typo

  ## Related issues

  —

  ## Screenshots

  —

author: iliaross
author_url: https://github.com/iliaross
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1214
merged_at: 2024-12-21 13:59:48+00:00
created_at: 2025-07-16 04:25:34
commits:
  [{"SHA":"53ea7ab126066fd5bc5b0c7f4c9ea46c5ab2dc2a","Message":"Fix the typo in the sentence","Author":"Ilia Ross"}]


title: Add Endpoints to facilitate Ollama based chats
author: infosecwatchman
author_url: https://github.com/infosecwatchman
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1215
merged_at: 2024-12-21 14:00:52+00:00
created_at: 2025-07-16 04:25:34
body:
  Add Endpoints to facilitate Ollama based chats. Include another flag to serve additional endpoints. 

  Built to use with Open WebUI

commits:
  [{"SHA":"103388ececa9ac9cf16f21a9a8f8a43d5a5ab951","Message":"Add Endpoints to facilitate Ollama based chats\n\nAdd Endpoints to facilitate Ollama based chats.\n\nBuilt to use with Open WebUI","Author":"InfosecWatchman"}]


title: streamlit ui
author: sosacrazy126
author_url: https://github.com/sosacrazy126
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1218
merged_at: 2024-12-23 20:51:36+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does

  This PR introduces a Streamlit-based user interface for fabric, providing a comprehensive GUI for managing and executing patterns. The interface focuses on making pattern creation, execution, and analysis more accessible while maintaining fabric's powerful functionality.

  ### Key Components

  1. **Pattern Management**
     - Pattern creation with simple/advanced editing options
     - Pattern validation and structure checking
     - Bulk editing capabilities
     - loads ptoviders   that are configured  and gets models
     - 2. **Pattern Execution**
     - Single and multi-pattern execution
     - Pattern chaining support
     - Input handling from clipboard/manual entry

  3. **Output Management**
     - Persistent storage for outputs
     - Star/favorite system
     - Output analysis dashboard

  4. **Technical Implementation**
     - Robust logging system with console/file handlers
     - Session state management
     - Input validation and sanitization
     - Error handling and debugging support

  ### Future Enhancements
  - Advanced output analysis and comparison tools
  - Integration with create_pattern for the wizard
  - UI/UX improvements including logo integration
  - Cross-platform testing and optimization
  - a section to add new model provider  that properly flows with existing codebase
  ### Testing
  - Basic functionality tested on Linux
  - Requires additional testing on different OS platforms
  - Interacts with fabric through CLI interface
  - a pattern db thats managed by a agent / obsidian plugin 
  ### Notes
  - Uses streamlit, pandas, matplotlib, seaborn, and python-dotenv
  - Requires fabric to be properly installed and configured  
  - let me know what to add next or fix or if i should scratch  it 
  ![image](https://github.com/user-attachments/assets/66e5613b-dca3-49b2-b757-16b8a50035b7)
  ![image](https://github.com/user-attachments/assets/87cbb8b4-bc14-4408-9498-826cbe1e7d2e)

commits:
  [{"SHA":"978731f38578bb6a15b540381b75c2a850a1ec0c","Message":"Add files via upload\n\nStreamlit application for managing and executing patterns, with a focus on pattern creation, execution, and analysis. Below is a breakdown of the key components and functionality of the application:\r\nKey Components and Functionality\r\n\r\n    Logging Configuration:\r\n\r\n        The application sets up logging with both console and file handlers.\r\n\r\n        The console logs are color-coded for better readability, and the file logs are more detailed for debugging purposes.\r\n\r\n    Session State Initialization:\r\n\r\n        The initialize_session_state() function initializes the session state with default values for various configuration and UI states.\r\n\r\n        It also loads saved outputs from persistent storage.\r\n\r\n    Pattern Management:\r\n\r\n        Pattern Creation: The create_pattern() function allows creating new patterns with either simple or advanced editing options.\r\n\r\n        Pattern Deletion: The delete_pattern() function allows deleting existing patterns.\r\n\r\n        Pattern Editing: The pattern_editor() function provides an interface for editing existing patterns.\r\n\r\n    Pattern Execution:\r\n\r\n        Pattern Execution: The execute_patterns() function executes selected patterns and captures their outputs.\r\n\r\n        Pattern Chain Execution: The execute_pattern_chain() function executes a sequence of patterns in a chain, passing output from each pattern to the next.\r\n\r\n    Output Management:\r\n\r\n        Saving Outputs: The save_output_log() function saves pattern execution logs.\r\n\r\n        Starring Outputs: The star_output() and unstar_output() functions allow users to star/favorite outputs for quick access.\r\n\r\n    Configuration and Model Selection:\r\n\r\n        Model and Provider Selection: The load_models_and_providers() function fetches and displays available models and providers for selection.\r\n\r\n        Configuration Loading: The load_configuration() function loads environment variables and initializes the configuration.\r\n\r\n    UI Components:\r\n\r\n        Pattern Creation UI: The pattern_creation_ui() and pattern_creation_wizard() functions provide UI components for creating new patterns.\r\n\r\n        Pattern Management UI: The pattern_management_ui() function provides UI components for managing patterns.\r\n\r\n        Output Analysis UI: The application includes tabs for displaying all outputs and starred outputs, with options to copy or star outputs.\r\n\r\n    Error Handling and Validation:\r\n\r\n        Input Validation: The validate_input_content() and sanitize_input_content() functions validate and sanitize input content to ensure it is safe for processing.\r\n\r\n        Pattern Validation: The validate_pattern() function validates the structure and content of a pattern.\r\n\r\n    Main Function:\r\n\r\n        The main() function orchestrates the entire application, setting up the Streamlit page, initializing session state, and handling the main navigation between different views (Run Patterns, Pattern Management, Analysis Dashboard).\r\n\r\nUsage and Features\r\n\r\n    Pattern Creation: Users can create new patterns using either a simple text editor or an advanced wizard.\r\n\r\n    Pattern Execution: Users can select patterns to run, provide input, and execute them either individually or in a chain.\r\n\r\n    Output Analysis: Users can view and analyze the outputs of executed patterns, star favorite outputs, and copy outputs to the clipboard.\r\n\r\n    Pattern Management: Users can edit, delete, and bulk edit patterns.\r\n\r\n    Configuration: Users can select different models and providers for pattern execution.\r\n\r\nError Handling and Logging\r\n\r\n    The application includes robust error handling and logging to ensure that any issues are logged and displayed to the user.\r\n\r\n    Logging is done both to the console and to a file for debugging purposes.\r\n\r\nFuture Enhancements\r\n\r\n    Enhanced Pattern Validation: More comprehensive validation of pattern content and structure.\r\n\r\n    Advanced Analysis: Adding more advanced analysis features, such as sentiment analysis or keyword extraction on pattern outputs.\r\n\r\n    Integration with External APIs: Integrating with external APIs for additional functionality, such as sending outputs via email or storing them in a database.","Author":"Zo6"},{"SHA":"575f83954d15a8ce8376de7f43758737a9c31824","Message":"Refactor pattern management and enhance error handling\n\n- Improved pattern creation, editing, and deletion functionalities.\n- Enhanced logging configuration for better debugging and user feedback.\n- Updated input validation and sanitization processes to ensure safe pattern processing.\n- Streamlined session state initialization for improved performance.\n- Added new UI components for better user experience in pattern management and output analysis.","Author":"zo6"},{"SHA":"61027f30a4fbb07bb9385391a8d082e625a34c81","Message":"Update README.md","Author":"Zo6"},{"SHA":"f5ac7fd92c8d144faa39de77a4c3758ce2ddcff4","Message":"Delete patternstudio.py","Author":"Zo6"},{"SHA":"79b23f3106264a6961b12cdc2a193ca0143e21b7","Message":"Merge branch 'main' into main","Author":"Zo6"}]


title: Fix cross-filesystem file move in to_pdf plugin (issue 1221)
author: wmahfoudh
author_url: https://github.com/wmahfoudh
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1222
merged_at: 2024-12-22 14:52:13+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  This PR resolves a bug in the `to_pdf` plugin where it fails to move files across different filesystems. The issue arises from the use of the `os.Rename` function, which does not support cross-device file moves. The fix replaces `os.Rename` with a combination of `io.Copy` and `os.Remove`, ensuring compatibility with environments where /tmp and the current working directory are on different filesystems.

  ## Related issues
  closes #[1221]

  ## Screenshots
  None

commits:
  [{"SHA":"fce06b5294e8984eebddb0167ce06f501f114ba0","Message":"Fix cross-filesystem file move in to_pdf plugin (issue 1221)","Author":"Walid"}]


title: Added Humanize Pattern
author: wmahfoudh
author_url: https://github.com/wmahfoudh
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1225
merged_at: 2024-12-23 11:07:32+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Proposing a new pattern for Fabric: **Humanize** 
  This pattern aims to help make AI generated text sound more like a real person wrote it.

  ## Related issues
  None

  ## Screenshots
  None

commits:
  [{"SHA":"72ec02bfd42e9c7689b215fb2a81a9b113ec8eea","Message":"Added Humanize Pattern","Author":"Walid"}]


title: Feature/template extensions
author: mattjoyce
author_url: https://github.com/mattjoyce
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1227
merged_at: 2024-12-26 20:06:26+00:00
created_at: 2025-07-16 04:25:34
body:
  This PR extends the templating system, and introduces external plugins; extensions
  As described by : https://github.com/danielmiessler/fabric/issues/1158

commits:
  [{"SHA":"160703210b0ea9fc97af3056d38d5b75b048cf09","Message":"emplemented stdout template extensions","Author":"Matt Joyce"},{"SHA":"43597e416883994f8e616cf2ac65254d6b62a4aa","Message":"Extension Registry Refinement\n- Successfully implemented path-based registry storage\n- Moved to storing paths instead of full configurations\n- Implemented proper hash verification for both configs and executables\n- Registry format now clean and minimal.\n\nFile-Based Output Implementation\n- Successfully implemented file-based output handling\n- Demonstrated clean interface requiring only path output\n- Properly handles cleanup of temporary files\n- Verified working with both local and remote operations","Author":"Matt Joyce"},{"SHA":"b31f094e9bcc4a1889ba485030ee7d6f9cb21864","Message":"Added better messages when adding and listing extensions\nFix issuse with listextension where it would fail if any hash had changed, now says hash failed.","Author":"Matt Joyce"},{"SHA":"744ec0824be60ab39337d8cc92ea0552fcc2c31c","Message":"Fix pattern file usage without stdin\n\nWhen using pattern files with variables but no stdin input, ensure proper\ntemplate processing by initializing an empty message. This allows patterns\nlike:\n  ./fabric -p pattern.txt -v=name:value\n\nto work without requiring stdin input, while maintaining compatibility\nwith existing stdin usage:\n  echo \"input\" | ./fabric -p pattern.txt -v=name:value\n\nChanges:\n- Add empty message initialization in BuildSession when Message is nil\n- Remove redundant template processing of message content\n- Let pattern processing handle all template resolution\n\nThis simplifies the template processing flow while supporting both\nstdin and non-stdin use cases.","Author":"Matt Joyce"},{"SHA":"db2ba460992d07d72db0d065a2acf98d715a5684","Message":"Revert \"Fix pattern file usage without stdin\"\n\nThis reverts commit 744ec0824be60ab39337d8cc92ea0552fcc2c31c.","Author":"Matt Joyce"},{"SHA":"da6f9748873b466da1e558abc62430a5ca235485","Message":"fixed : if there is no stdin, then a nil message was passed to pattern.go resulting in segfault.\nnow we make user input ' ', before processing.","Author":"Matt Joyce"},{"SHA":"d17afc1fbaa45c2c208b3be3bc2ea59e835a66f8","Message":"Merge branch 'curly-brace-templates' into feature/template-extensions","Author":"Matt Joyce"},{"SHA":"6fc75282e8802c16948376f06012e0daf4ccaa7f","Message":"added tests for extension manager, registration and execution.","Author":"Matt Joyce"},{"SHA":"c49f47ecabaa58e0da3066b340b01459cd483d63","Message":"check extension names don't have spoaces","Author":"Matt Joyce"},{"SHA":"d8671ea03afdd4aeae80b51d0d5ab1991b5cdd23","Message":"Added example files and tutorial","Author":"Matt Joyce"},{"SHA":"ca55f2375db94330734e20910831baa5c45fd5c6","Message":"actually added tutorial","Author":"Matt Joyce"},{"SHA":"373c1d0858f11639caac7c1009128a993e78eec9","Message":"added test pattern","Author":"Matt Joyce"},{"SHA":"edb4490c8649851e79430383fa795c38b4b4e312","Message":"Merge branch 'main' into feature/template-extensions","Author":"Matt Joyce"},{"SHA":"ad561248fde806c3f5a265a85e82d5c18af472df","Message":"fix:properly instatiated extensionManager var\nfix:added timeout value validation","Author":"Matt Joyce"},{"SHA":"a5929fcad683d3ff87ab5af27f4e26e5f91b9708","Message":"Fix tests to handle NewPluginRegistry returning error","Author":"Matt Joyce"},{"SHA":"7a260124575dcf1c2e55b2fb8a86e12ad76d56a0","Message":"Updated extension readme","Author":"Matt Joyce"}]


title: Update translate pattern to use curly braces
author: iqbalabd
author_url: https://github.com/iqbalabd
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1230
merged_at: 2024-12-27 13:44:29+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Updates the pattern for translation to use curly braces so we can insert the target language as a parameter on the command line, i.e

  `$ cat my-english-text.md | fabric -v=lang_code:ja-jp -p translate` 

  ## Related issues
  Resending my PR that removes the version files reference [here].(https://github.com/danielmiessler/fabric/pull/1219)

commits:
  [{"SHA":"fb416c26eadfc2c549a69597fd44df2356006e35","Message":"Update translate pattern to use curly braces","Author":"Iqbal Abdullah"}]


title: Updates: ./web
author: johnconnor-sec
author_url: https://github.com/johnconnor-sec
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1240
merged_at: 2025-01-03 20:52:36+00:00
created_at: 2025-07-16 04:25:34
body:
  This pull request includes several updates and improvements to the Fabric web app, including changes to documentation, package updates, and new API functionalities. The changes focus on enhancing the user experience, better code organization, and new features. All self-serving references have been removed in favor of the user. The most important changes are summarized below:

  ### Documentation Updates:
  * [`web/README.md`](diffhunk://#diff-4a534cf0dab53faad7a19d1926cb05f63ebf793e827bdf11a4a19e0e654ef639L1-R26): Revised the app description and installation instructions, added a new "Tips" section, and updated the image preview path.
  * [`web/SECURITY.md`](diffhunk://#diff-fa4873aebf3990a0f102abc19296c3dd87e2881381baa9cc3ebd2a98d0485f04L1-L21): Removed the security policy documentation.

  ### Package Updates:
  * `web/package.json` and `web/package-lock.json`: Updated the project name from "terminal-blog" to "fabric", and upgraded several dependencies including `@sveltejs/kit`, `mdsvex`, and added new dependencies like `eslint-plugin-svelte` and `rehype-autolink-headings`. [[1]](diffhunk://#diff-3ebf69f247f3231fd796e60555489b4a1ed684e3ad4cb0ace460a2ed07d53a95L2-R8) [[2]](diffhunk://#diff-3ebf69f247f3231fd796e60555489b4a1ed684e3ad4cb0ace460a2ed07d53a95L29-R29) [[3]](diffhunk://#diff-3ebf69f247f3231fd796e60555489b4a1ed684e3ad4cb0ace460a2ed07d53a95L821-R830) [[4]](diffhunk://#diff-3ebf69f247f3231fd796e60555489b4a1ed684e3ad4cb0ace460a2ed07d53a95L847-R857) [[5]](diffhunk://#diff-3ebf69f247f3231fd796e60555489b4a1ed684e3ad4cb0ace460a2ed07d53a95L4930-R4944) [[6]](diffhunk://#diff-3ebf69f247f3231fd796e60555489b4a1ed684e3ad4cb0ace460a2ed07d53a95R4953-R4960) [[7]](diffhunk://#diff-b861012a5dd72b8a9f3281b7cf09f5a779c98569d040b1bbc1db50f1b15e7cceL2-R2) [[8]](diffhunk://#diff-b861012a5dd72b8a9f3281b7cf09f5a779c98569d040b1bbc1db50f1b15e7cceR16-R40) [[9]](diffhunk://#diff-b861012a5dd72b8a9f3281b7cf09f5a779c98569d040b1bbc1db50f1b15e7cceR54-R78)

  ### API Enhancements:
  The following were moved from the `lib/types` folder to `lib/api`:
  * [`web/src/lib/api/base.ts`](diffhunk://#diff-70e684dd71f0680b3c0ee5b6c34e9a444a5ccacee59e9744f813a98b7f35c1c5R1-R98): Introduced a new base API object with methods for fetching, posting, putting, deleting, and streaming data, as well as a function to create storage API for different entities.
  * [`web/src/lib/api/config.ts`](diffhunk://#diff-7a575d21b4c8fa79c1fb1359cdeab944238fa5e1aa586355d36d411792db19c5R1-R27): Added a new API for fetching model configuration with default settings.
  * [`web/src/lib/api/contexts.ts`](diffhunk://#diff-e45c026abf39c668ff7e0ae7ca5b99f739b860694baa116e4b6e2161c7635b0dR1-R13): Added a new API for fetching available contexts.
  * [`web/src/lib/api/models.ts`](diffhunk://#diff-1b37e580b616f8e66cd206e7d1da390a9ed12b0579468fec5fb1fe45b70e3f42R1-R24): Added a new API for fetching available models from different vendors.

  ### Component Updates:
  * [`web/src/lib/components/chat/Chat.svelte`](diffhunk://#diff-fed47a66128d40fb0c4c40131918f968cb99ca1b4040b7a9e065d8a1b7d5625fR1-R25): Added new components for chat input, messages, model configuration, and patterns, and structured the chat interface layout.

  ## New Features
  - Added a note drawer component for improved content organization and accessibility
  - Implemented blog templates for rapid content creation
  - Enhanced styling system and added more themes

  ## Screenshots
  ![image](https://github.com/user-attachments/assets/a0fab3cc-aa2f-4843-b54a-3025de38785e)
  ![image](https://github.com/user-attachments/assets/cd1037f0-2df7-4416-a8ca-b334a876aff6)
  ![image](https://github.com/user-attachments/assets/bc373c53-510f-4e16-bff4-bea728b7cd5a)


  ## Future Improvements
  - Add JinaAI button
  - Better mobile version
  - Production build
  - Implement sessions and contexts properly (current solution is handling context via file upload. Sessions are handled via file upload as well, though the session history is not passed on to the model (WIP))

commits:
  [{"SHA":"f33ebb7e25ee5a00a904932c4d96e54b0e7057f1","Message":"Moved pattern loader to ModelConfig. Editing styles in chat/. Added page fly transitions. Tidying. Removed - ChatHeader, unused modal from Transcripts, FlyandScaleParams from lib/types/utils.","Author":"John"},{"SHA":"4888f8cb78266780adaaf2d290cd72797b4460ac","Message":"style: updates to ui components (components/ui)","Author":"John"},{"SHA":"faa83f9a49adabbf33f3d2c79f46378c137ab301","Message":"Style: modified chat/+layout display. Update Header buttons","Author":"John"},{"SHA":"b9a5501f9d21bb888675f3ad6a3c9fdd9680e4b1","Message":"Style: Reordered columns. Improved responsive layout","Author":"John"},{"SHA":"0302e49ebd560810191a2651802aff9d11a4ee62","Message":"Merge remote-tracking branch 'refs/remotes/origin/main'","Author":"John"},{"SHA":"1b97a57cba3841da421742e355369cc5e1281f33","Message":"Merge pull request #3 from danielmiessler/main\n\nUpdate","Author":"John Connor"},{"SHA":"6deb4d69c06b561ebec1dfe1a38cd2cccb9dc890","Message":"Update version to v..1 and commit","Author":"github-actions[bot]"},{"SHA":"79b27253cdab641cb68d683e8b9a8a74b9fd3f71","Message":"build(deps-dev): bump @sveltejs/kit\n\nBumps the npm_and_yarn group with 1 update in the /web directory: [@sveltejs/kit](https://github.com/sveltejs/kit/tree/HEAD/packages/kit).\n\n\nUpdates `@sveltejs/kit` from 2.8.4 to 2.9.0\n- [Release notes](https://github.com/sveltejs/kit/releases)\n- [Changelog](https://github.com/sveltejs/kit/blob/main/packages/kit/CHANGELOG.md)\n- [Commits](https://github.com/sveltejs/kit/commits/@sveltejs/kit@2.9.0/packages/kit)\n\n---\nupdated-dependencies:\n- dependency-name: \"@sveltejs/kit\"\n  dependency-type: direct:development\n  dependency-group: npm_and_yarn\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e","Author":"dependabot[bot]"},{"SHA":"f4885c5cdd127328c45501041b889693c71e2182","Message":"Update: packages, main page, styles","Author":"John"},{"SHA":"2579d4e87d8648f21fc2321ae37e9e7894041ba7","Message":"Add cards component","Author":"John"},{"SHA":"aef4a1a5d494ff72d49a2fd67bb84b2685c0111e","Message":"merging","Author":"John"},{"SHA":"197f0e5c0d376efb1be830450ea7ec6753e2ad2b","Message":"Merge branch 'danielmiessler-main'","Author":"John"},{"SHA":"9dfb911d4ab85492aab3e78f8b98c6c9fecf9a34","Message":"Update version to v..1 and commit","Author":"github-actions[bot]"},{"SHA":"0eab7860305b3d6c5d49b1421ac9e5eec5686595","Message":"removed arcanum gif","Author":"John"},{"SHA":"daf1259556e979d4fc248064a97968e584c15176","Message":"Update version.go to reflect upstream/main","Author":"John Connor"},{"SHA":"565fea97cf3e4e439997a3616febb02dd132b9a5","Message":"Update version to v..1 and commit","Author":"github-actions[bot]"},{"SHA":"fcf073febd28fd061fc40a1e0e40d7f3cebb6013","Message":"Update version.nix to reflect upstream/main","Author":"John Connor"},{"SHA":"5fb18077ebc250264001330212f85d821110d90c","Message":"Update version to v..1 and commit","Author":"github-actions[bot]"},{"SHA":"0bc220949ac7853eaae221f7b042a8ed847c4f25","Message":"Update +page.svelte","Author":"John Connor"},{"SHA":"4c0ed0a5f0ac8309fc1b8885c0d351bfea0af9a9","Message":"Merge pull request #4 from johnconnor-sec/dependabot/npm_and_yarn/web/npm_and_yarn-06d0dd15d9\n\nbuild(deps-dev): bump @sveltejs/kit from 2.8.4 to 2.9.0 in /web in the npm_and_yarn group across 1 directory","Author":"John Connor"},{"SHA":"9b38c8d5aa9c898049e17b6bb9f8da3a30b75db4","Message":"Updates","Author":"John"},{"SHA":"86b76faa5b82608a748aaf7a6e4856f709dae01e","Message":"Update imports","Author":"John"},{"SHA":"cbd2ffe81dff7861482e359c71470e3079813063","Message":"Updated POSTS to make main 24-12-08","Author":"John"},{"SHA":"8c68ebc0eeab7dedfb4a4cb160767ad2392e58ed","Message":"WIP: Notes Drawer. Updated default theme to rocket","Author":"John"},{"SHA":"f8f892bfe065a412146240aa16c6e69bea907e81","Message":"WIP: Notes Drawer text color","Author":"John"},{"SHA":"b8a285bbbc9b9da785a6593e70aa1b28a1945738","Message":"Removed styling from /routes/chat/*.svelte","Author":"John"},{"SHA":"75aad67a2259944caeef29a854237905c5391027","Message":"Add: NotesDrawer to header","Author":"John"},{"SHA":"4be9cf42b4cb83e91f27a07c9ba1e896bd4a31d3","Message":"Deleted: Moved Components from /home to respective dirs","Author":"John"},{"SHA":"002e87ffbb35701d93f4a2a178db01db03d6cc57","Message":"Moved NotesDrawer to ModelConfig component","Author":"John"},{"SHA":"84e3ff9386c945a4620e3eff793484803bab5010","Message":"Indented Main page","Author":"John"},{"SHA":"9d8d5ca924c9fc1a19eb11d0f1ef60c6a0b1d246","Message":"WIP: Restyling Chat page","Author":"John"},{"SHA":"eae691aa8c9ddfe74b1366012115b87341c462fb","Message":"Update: NotesDrawer now saves notes to lib/content/inbox","Author":"John"},{"SHA":"1f1b51edcf8aa4a079df66837951afde5428fbc3","Message":"Remove: Docs in Posts","Author":"John"},{"SHA":"2a450cf1bef8213ca92e0ac5f634ecc633b3179b","Message":"Minor styling improvements","Author":"John"},{"SHA":"b701c767fcb32e85bfe0cd572030271f00353629","Message":"Update: Post page styling and layout\n\nIndented unused Search.svelte file","Author":"John"},{"SHA":"65bb9fee84f57d21f7d31a182473b5413e4fafa6","Message":"Update version.nix","Author":"John Connor"},{"SHA":"a7b4a7160ad2108b73361328d372c841cdcf3603","Message":"Update version to v..1 and commit","Author":"github-actions[bot]"},{"SHA":"b10455ff7648c1070d55b7a7b1da023e60b421cc","Message":"Update version.go","Author":"John Connor"},{"SHA":"157b0a6109c5d3e51fdcfc4ffa43350a5b0d7b01","Message":"Update version to v..1 and commit","Author":"github-actions[bot]"},{"SHA":"5a63c6b2607b0f16df71116819b7bf1041bf156c","Message":"Update version.nix","Author":"John Connor"},{"SHA":"fc54f0e32e139eab7c626c9335cc5ba54a66127f","Message":"Update version to v..1 and commit","Author":"github-actions[bot]"},{"SHA":"013c6cb1e537df1389756d5a464c6dc91ad67870","Message":"Update version.go","Author":"John Connor"},{"SHA":"55c11a3861325e885c1c7e9db8bf9a1c10fe3339","Message":"Update version.nix","Author":"John Connor"},{"SHA":"ac3e0b5ba0b17024a576ba9cc040d3a6195a0c0c","Message":"Merge pull request #9 from danielmiessler/main\n\nAnother merge nightmare. This one wasn't so bad","Author":"John Connor"},{"SHA":"343cbba5eccddc125bdb38b176eeef46b3fbff14","Message":"Update version.nix\n\nUpdate version to v..1 and commit\n\nUpdate version.go\n\nUpdate version to v..1 and commit\n\nUpdate version.nix\n\nUpdate version to v..1 and commit\n\nUpdate version.go\n\nUpdate version.nix","Author":"John Connor"},{"SHA":"eb8d40dfb6f8837327ba5a42ff9cd0e072cd1091","Message":"Merge pull request #9 from danielmiessler/main\n\nAnother merge nightmare. This one wasn't so bad","Author":"John Connor"},{"SHA":"f8f39b92c3382757d47b2093f826585d1c9ddc40","Message":"Deleted lib/layouts/files. Renamed lib/store/theme\n\nlib/layouts/files are not longer in use. Renamed lib/store/theme to\nadhere to current naming convention","Author":"John"},{"SHA":"00a706eb360e9dfcc5fe5d60acc4bd0b7b63701a","Message":"Merge pull request #10 from danielmiessler/main\n\nMerge Main to my fork","Author":"John Connor"},{"SHA":"4094296a4c4197a3301f50affc07a680c6a13c35","Message":"Rename `noteStore` to `note-store`","Author":"John"},{"SHA":"74a134eec04e7b4b8995dbb0aa8e3c092dd138b3","Message":"Rename `chat.ts` to `chat-store.ts`","Author":"John"},{"SHA":"ed7c28958feb6144f88647e80a81b8351ca61fb5","Message":"Update: ui/button component","Author":"John"},{"SHA":"3797b7ac6a14758f0311d3cceeec9cd415b353e1","Message":"Update: removed grid from PostContent","Author":"John"},{"SHA":"574bb2c4507a0629fe8d4bd403a136b329272432","Message":"Fix: Obsidian Card. Indented app.html","Author":"John"},{"SHA":"d42ba42bb290bb48342208dea153f012bc391489","Message":"Add: Templates for posts","Author":"John"},{"SHA":"229287510a9b9678ccd725281453d232d168b511","Message":"Indentation","Author":"John"},{"SHA":"85891f010601df4b109f5dec27f25c59e8f5cb07","Message":"Updated copy","Author":"John"},{"SHA":"5da749f9941d0461c27182775f672d446bf184c5","Message":"Update: Contact page","Author":"John"},{"SHA":"2d3ebcd09c2c989e5fd8b7006bb950bb67eda7d5","Message":"House Keeping: Fixing Indentation","Author":"John"},{"SHA":"ec31f11abf0a797c3026373dddcd1fba77fed8de","Message":"Update README to reflect current @12-30-24","Author":"John"},{"SHA":"78bae7a6e7453cbc33ec5c1e9e1cc82daaa3b46d","Message":"House Keeping: Added missing png. Removed more unused","Author":"John"},{"SHA":"e42be193475bf9debd8e44f546c549930e2199f6","Message":"Edit: `type/note` to `note`\n\ntype/note was causing problems.","Author":"John"},{"SHA":"416cee4f54ef226ddd2298ce689246e64bea9495","Message":"Update: References\n\nMoved\n- `lib/types/interfaces` to `lib/interfaces`.\n- `components/ui/side-nav` to `components/ui/toc`.\n- `components/ui/terminal` to `components/terminal`.\n- `types/markdown` to `utils/markdown`\n- `lib/types/chat` to `lib/api`","Author":"John"},{"SHA":"643403192a5459e9e5fda8be2172fdaf7b94ec0b","Message":"Added: blinking cursor to Terminal. Removed / added comments\n\nRemoved from ChatMessages\nAdded to api/context","Author":"John"},{"SHA":"58a6f0404aebd3df358287fa3f978336ec1dc08a","Message":"Indented Toc","Author":"John"},{"SHA":"a3da84f4597c7f1021abb77f2a8760976a21a066","Message":"Edit: styling on Posts page","Author":"John"},{"SHA":"fc0fd00e16982fa89ff268946503bbc78608dd7b","Message":"!!CHAT IS NOW CENTERED IN VIEWPORT!!\n\n!Chat is now centered in the viewport!","Author":"John"},{"SHA":"025dc8ed13b583d7dd039cd24ddd857da7cd4e12","Message":"!NOTEDRAWER IS NOW CENTERED IN VIEWPORT!","Author":"John"},{"SHA":"7f808bcf430d7f1376dc1bb1ddb61a322e16fe94","Message":"Deleting old files that were moved or renamed\n\nFolders deleted:\n- `types`. The folders contained are now `lib/interfaces` and `lib/api`\n- `types/markdown` now in `utils/markdown`\n- `components/ui/{side-nav,terminal}` now `components/ui/toc` and\n`terminal`","Author":"John"},{"SHA":"7288001a014029e40175af69d288175cb4da228d","Message":"Updated tags page to use Frontmatter instead of PostMetadata\n\nbuffer issues","Author":"John"},{"SHA":"f911de41b51396fb10f450eb90e0598aef46f9e2","Message":"Fix: NoteDrawer textarea sizing","Author":"John"},{"SHA":"ce7fc78076ca420a82dc971c31b259ca5d181483","Message":"Fix: Chat.svelte indentation\n\nRemoved backup files","Author":"John"},{"SHA":"d3e8ce5120363c5949e7fc7efa8b518c87b01e2d","Message":"Added: Only dates are required for Posts now.","Author":"John"},{"SHA":"71b049bffd094724d36d4e1ada47a8e005c66b32","Message":"Fixing indentation again\n\nRemoved backup side-nav and terminal.\nupdated toast for transcripts","Author":"John"},{"SHA":"c107cce22eb9c1de13ac55cdb18a119627e26916","Message":"Updates for BUILD","Author":"John"},{"SHA":"2aebc84c66ab9b5c49d8638e3b935e98abb7c419","Message":"Update README","Author":"John"},{"SHA":"3931098aad94623e6701acb4eeeb915147605d62","Message":"Merge branch 'main' of https://github.com/johnconnor-sec/fabric","Author":"John"},{"SHA":"87b55148faa28b4313c604513fcfdd1c2511efd5","Message":"Merge pull request #11 from danielmiessler/main\n\nUpdates from main","Author":"John Connor"},{"SHA":"46a77de9e86fb52f56649906d07a6560cd9d9cda","Message":"Remove inbox note","Author":"John"},{"SHA":"12e4611d9aa87abbeceec4562f6d22a1b402dab8","Message":"Update README","Author":"John"}]


title: Adding youtube --metadata flag
author: CuriouslyCory
author_url: https://github.com/CuriouslyCory
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1242
merged_at: 2025-01-03 20:40:58+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Added metadata lookup to the YouTube helper.

  ## Related issues
  None

  ## ~~Screenshots~~ Examples
  ```bash
  fabric -y "https://www.youtube.com/watch?v=wPEyyigh10g" --metadata
  {
    "id": "wPEyyigh10g",
    "title": "Introducing Fabric — A Human AI Augmentation Framework",
    "description": "This video introduces Fabric—an open-source project for augmenting humans using AI. It provides a modular framework for solving specific problems using a crowdsourced set of AI prompts that can be used anywhere.\n\nTOPICS:\n\n00:00:00 Introduction to Fabric\n00:01:24 Human-Centric AI Approach\n00:02:22 Challenges and Solutions\n00:03:59 Fabric Project Overview\n00:04:34 Structure and Components\n00:05:10 Patterns and Prompts\n00:07:11 Extracting Article Wisdom\n00:08:06 Open Source Collaboration\n00:09:02 Analyzing Video Content\n00:11:05 Extract Wisdom Pattern\n00:14:56 Write Essay Pattern\n00:17:19 Stitching Patterns Together\n00:19:58 Label and Rate Quality\n00:22:10 Enhancing Role-Playing Games\n00:25:13 Installation Guide\n00:26:03 Philosophy and Invitation\n\nREFERENCED VIDEOS:\n\n📹 Riva Tez on David Perell: https://www.youtube.com/watch?v=lQVcbY52_gY\n📹 Neri Oxman on Lex Fridman: https://www.youtube.com/watch?v=XbPHojL_61U\n\n🔥My 9,000-word Illustrated Essay on Where I Think AI is Heading\nhttps://danielmiessler.com/p/ai-predictable-path-7-components-2024\n\nThe Fabric Project:\n⚙️ https://github.com/danielmiessler/fabric\n\nFollow on X:\n🆇 https://x.com/danielmiessler\n\nFollow my work:\n✉️ https://danielmiessler.com/subscribe",
    "publishedAt": "2024-02-22T23:00:37Z",
    "channelId": "UCnCikd0s4i9KoDtaHPlK-JA",
    "channelTitle": "Unsupervised Learning",
    "categoryId": "28",
    "tags": null,
    "viewCount": 727124,
    "likeCount": 3648
  }
  ```

  Metadata Struct
  ```go
  type VideoMetadata struct {
  	Id           string   `json:"id"`
  	Title        string   `json:"title"`
  	Description  string   `json:"description"`
  	PublishedAt  string   `json:"publishedAt"`
  	ChannelId    string   `json:"channelId"`
  	ChannelTitle string   `json:"channelTitle"`
  	CategoryId   string   `json:"categoryId"`
  	Tags         []string `json:"tags"`
  	ViewCount    uint64   `json:"viewCount"`
  	LikeCount    uint64   `json:"likeCount"`
  }
  ```

commits:
  [{"SHA":"b4b8b962609febb7af4c89f545e9b21603f7bd83","Message":"Added metadata lookup to youtube helper","Author":"Cory Sougstad"},{"SHA":"1629f36c595a3b98d460a486b9316b4b6d1c14d2","Message":"Better metadata","Author":"Cory Sougstad"}]


title: Update suggest_pattern: refine summaries and add recently added patterns
author: kevnk
author_url: https://github.com/kevnk
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1247
merged_at: 2025-01-10 11:57:58+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  It updates summaries and adds recently added patterns to the suggest_pattern user.md

  ## Related issues
  n/a

commits:
  [{"SHA":"02aa41e6aa35b7fcb964637b471f3a4d043d9732","Message":"Update summaries and add recently added patterns","Author":"Kevin Kirchner"}]


title: Update README.md: Add PowerShell aliases
author: jeffmcjunkin
author_url: https://github.com/jeffmcjunkin
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1252
merged_at: 2025-01-10 11:57:00+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Adds instructions for creating fabric aliases on Windows hosts using PowerShell.

  ## Screenshots
  ![image](https://github.com/user-attachments/assets/41673d1b-56fb-409f-9d22-8cb5adee5a0c)

commits:
  [{"SHA":"f312ad0364e4527f9939a1d327f7c8f678faaef5","Message":"Update README.md: Add PowerShell aliases","Author":"Jeff McJunkin"}]


title: Fixed few typos that I could find
author: abassel
author_url: https://github.com/abassel
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1253
merged_at: 2025-01-10 11:56:25+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Please briefly describe what this PR does.

  ## Related issues
  Please reference any open issues this PR relates to in here.
  If it closes an issue, type `closes #[ISSUE_NUMBER]`.

  ## Screenshots
  Provide any screenshots you may find relevant to facilitate us understanding your PR.

commits:
  [{"SHA":"021d2738e4325d719fadc78bcf00fcf69888853d","Message":"Fixed few typos that I could find","Author":"Alexandre Bassel"}]


title: Update README.md
author: JOduMonT
author_url: https://github.com/JOduMonT
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1256
merged_at: 2025-01-13 11:02:25+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  ### Change
  1. Windows Command: Because actually curl does not exist natively on Windows
  2. Syntax: Because like this; it makes the “click, cut and paste” easier

commits:
  [{"SHA":"03dfa03f460c872aa789ce45dc7675905a6b7d2b","Message":"Update README.md\n\n## Change\r\n1. Windows Command: Because actually curl does not exist natively on Windows\r\n2. Syntax: Because like this; it makes the “click, cut and paste” easier","Author":"Jonathan DUMONT"}]


title: Create analyze_threat_report_cmds
author: jessefmoore
author_url: https://github.com/jessefmoore
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1257
merged_at: 2025-01-13 12:31:52+00:00
created_at: 2025-07-16 04:25:34
body:
  Create pattern to extract commands from videos or threat reports to obtain commands so pentesters or red teams or threat hunters can use to either threat hunt or simulate the threat actor.

  ## What this Pull Request (PR) does
  Please briefly describe what this PR does.
  Extracts commands from videos and threat reports so pentesters and threat hunters can copy and paste the commands to use later.

  ## Related issues
  None, I tested with an Ippsec youtube video and CISA advisory report that had commands in it.

  ## Screenshots
  Provide any screenshots you may find relevant to facilitate us understanding your PR.

  <img width="911" alt="image" src="https://github.com/user-attachments/assets/0634f322-a72c-432f-b5bf-176420e0217a" />

  <img width="1160" alt="image" src="https://github.com/user-attachments/assets/cf6ccdb3-a2aa-4f26-aa2d-90a8f8b9e02a" />

  <img width="1143" alt="image" src="https://github.com/user-attachments/assets/29da68cf-da43-44fa-afb9-98b477704733" />

commits:
  [{"SHA":"2daf0d90ced286d454d02724f259faa26e9ef51b","Message":"Create system.md\n\nCreate pattern to extract commands from videos and threat reports to obtain commands so pentesters or red teams or Threat hunters can use to either threat hunt or simulate the threat actor.","Author":"Jesse Moore"}]


title: Minor README fix and additional Example
body:
  ## What this Pull Request (PR) does
  Fixed the pattern claim. Adds web scraping example.

author: tuergeist
author_url: https://github.com/tuergeist
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1258
merged_at: 2025-01-18 18:35:42+00:00
created_at: 2025-07-16 04:25:34
commits:
  [{"SHA":"1c05b37c76a8e19f9c176adf82ca35af937d0362","Message":"doc: Custom patterns also work with Claude models","Author":"Christoph Becker"},{"SHA":"e558d535dfa439dfa3875ce2a63a8e9325ca6320","Message":"doc: Add scrape URL example. Fix Example 4","Author":"Christoph Becker"}]


title: Fixing typo
body:
  ## What this Pull Request (PR) does
  Fixing typo

author: bluPhy
author_url: https://github.com/bluPhy
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1260
merged_at: 2025-02-25 22:04:42+00:00
created_at: 2025-07-16 04:25:34
commits:
  [{"SHA":"f522f6b3bd919e49f00a7b5ce0cc084b3a57274a","Message":"Typos correction","Author":"bluPhy"},{"SHA":"6e0f7b5192fdb0fc12e23386f95b5c90db5d076f","Message":"Update version to v1.4.79 and commit","Author":"github-actions[bot]"},{"SHA":"ca83506089f991a7cbe8e5e634811c7875fdfe81","Message":"Revert \"Update version to v1.4.79 and commit\"\n\nThis reverts commit 6e0f7b5192fdb0fc12e23386f95b5c90db5d076f.","Author":"bluPhy"},{"SHA":"d56dcb8b1633183ea4ff123c66e4acf234deee5f","Message":"Update version to v1.4.80 and commit","Author":"github-actions[bot]"},{"SHA":"1980edbe1caaa7a2794e6ac6a6bcc85c96878fc3","Message":"Merge branch 'main' into main","Author":"Eugen Eisler"}]


title: feat: implement support for exolab
body: Implement support for https://github.com/exo-explore/exo
author: eugeis
author_url: https://github.com/eugeis
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1264
merged_at: 2025-02-26 08:52:13+00:00
created_at: 2025-07-16 04:25:34
commits:
  [{"SHA":"d25be21939a5ef65bf0e7cb9978f863f4a9adb35","Message":"feat: implement support for https://github.com/exo-explore/exo","Author":"Eugen Eisler"},{"SHA":"ea6c0b9025c1b01510a3a7046a838323b5917f89","Message":"Merge branch 'main' into feat/exolab","Author":"Eugen Eisler"}]


title: Added output filename support for to_pdf
author: wmahfoudh
author_url: https://github.com/wmahfoudh
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1270
merged_at: 2025-01-30 00:49:25+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Revamp CLI argument handling and output naming logic: Rewrote command-line argument handling to support intuitive input/output resolution, added automatic `.tex` file discovery, and improved output filename generation.

  ### Changes
  - **Smart Argument Resolution**  
    ```go
    // New logic
    switch argCount {
      case 0: // stdin → output.pdf
      case 1: // Detect if arg is .tex input/.pdf output/name stub
      case 2: // Input (with .tex fallback) + output name
    }

  ## Related issues
  Question #171

  ## Screenshots
  No screenshots

commits:
  [{"SHA":"3e8aaed2685e78bbcf59d75ca31472b8e3b58d7a","Message":"Added output filename support for to_pdf","Author":"Walid"}]


title: Adding deepseek support
author: wmahfoudh
author_url: https://github.com/wmahfoudh
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1271
merged_at: 2025-01-30 00:48:10+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does
  Adding Deepseek AI Vendor support
  Deepseek is fully compatible with OpenAI. Both models are available: deepseek-chat and deepseek-reasoner

  ## Related issues
  None

  ## Screenshots
  ![image](https://github.com/user-attachments/assets/91c055c8-8238-442a-95ce-8ab9d92700d4)

commits:
  [{"SHA":"a77efada0e55f5543c4a9f92e985daa9e3559ab9","Message":"feat: Added Deepseek AI integration","Author":"Walid"}]


title: feat(anthropic): enable custom API base URL support
author: aicharles
author_url: https://github.com/aicharles
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1278
merged_at: 2025-02-02 13:49:37+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does

  This PR adds support for custom API base URLs in the Anthropic plugin:
  - Enable and improve custom API base URL configuration
  - Add proper handling of v1 endpoint for UUID-containing URLs
  - Implement URL formatting logic for consistent endpoint structure
  - Clean up commented code and improve configuration flow

  Testing:
  - Verified base URL configuration with default endpoint
  - Tested custom endpoint with UUID handling
  - Confirmed proper v1 endpoint appending

  ## Related issues
  Please reference any open issues this PR relates to in here.
  If it closes an issue, type `closes #[ISSUE_NUMBER]`.

  ## Screenshots
  Provide any screenshots you may find relevant to facilitate us understanding your PR.

commits:
  [{"SHA":"731ecc6b3c6bfd823470999161ed5e046bb35a1a","Message":"feat(anthropic): enable custom API base URL support\n\n- Enable and improve custom API base URL configuration\n- Add proper handling of v1 endpoint for UUID-containing URLs\n- Implement URL formatting logic for consistent endpoint structure\n- Clean up commented code and improve configuration flow","Author":"aicharles"}]


title: Add the ability to grab YouTube video transcript with timestamps
author: thevops
author_url: https://github.com/thevops
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1289
merged_at: 2025-02-11 22:22:51+00:00
created_at: 2025-07-16 04:25:34
body:
  ## What this Pull Request (PR) does

  This PR adds the ability to grab the transcript of a YouTube video with timestamps. The timestamps are formatted as `HH:MM:SS` and are prepended to each line of the transcript. The feature is enabled by the new `--transcript-with-timestamps` flag, so it's similar to the existing `--transcript` flag.

  ### Example future use-case

  Providing a summary of a video that includes timestamps for quick navigation to specific parts of the video.

  ## Related issues
  Please reference any open issues this PR relates to in here - not applicable.

  ## Screenshots/examples
  Provide any screenshots you may find relevant to facilitate us understanding your PR.

  ```
  ❯ ./fabric -y "https://www.youtube.com/watch?v=5DgHDANmP9M" --transcript-with-timestamps             
  [00:00:07 - 00:00:10] hi uh hi everybody good afternoon thank
  [00:00:09 - 00:00:13] you so much for coming to my talk I'm
  [00:00:10 - 00:00:15] tram founder of Igan lay uh today I'm
  [00:00:13 - 00:00:18] going to talk about the state of the aan
  [00:00:15 - 00:00:19] universe so you may have seen some of my
  [00:00:18 - 00:00:21] earlier talks where I mostly talk about
  [00:00:19 - 00:00:23] the future today I'm going to talk about
  [00:00:21 - 00:00:27] the present and what we've done till now
  [00:00:23 - 00:00:29] okay so firstly what are we all about
  ...
  ..
  ```

  The output can be easily used as input for patterns.

  ## Caveats

  The output containing timestamps significantly increases the length of the prompt sent to a model. This can lead to rate limiting. We may mitigate that issue by changing the timestamps' format.
  I'm wondering about skipping seconds and concatenating lines under the same timestamp `HH:MM`.

commits:
  [{"SHA":"f3a1982e30211da69fdbc289aa2c827cdc07b3bc","Message":"Add the ability to grab YouTube video transcript with timestamps\n\nThis commit adds the ability to grab the transcript\nof a YouTube video with timestamps. The timestamps\nare formatted as HH:MM:SS and are prepended to\neach line of the transcript. The feature is enabled\nby the new `--transcript-with-timestamps` flag,\nso it's similar to the existing `--transcript` flag.\n\nExample future use-case:\n\nProviding summary of a video that includes timestamps\nfor quick navigation to specific parts of the video.","Author":"Krzysztof Łuczak"}]


title: Improved unit-test coverage from 0 to 100 (AI module) using Keploy's agent
author: TvisharajiK
author_url: https://github.com/TvisharajiK
author_type: user
url: https://github.com/danielmiessler/Fabric/pull/1294
merged_at: 2025-02-11 22:21:12+00:00
created_at: 2025-07-16 04:25:34
body:
  ### Unit Test Enhancements for Go Codebase using Keploy agent
  I've added new unit tests while testing the Keploy AI testing agent. These tests improve coverage, eliminate flaky tests, and ensure overall test stability.  

  #### **Key Improvements:**  
  ✅ Ensures new tests build without errors  
  ✅ Confirms no flaky tests are introduced  
  ✅ Enhances coverage for previously untested areas  

  ### **Coverage Breakdown**  
  **Total Coverage Increased: 0% → X%**  

  | File                                   | Coverage Before | Coverage After | Coverage Increase |
  |----------------------------------------|----------------|---------------|-------------------|
  | `plugins/ai/gemini`                    | 0%             | 9.7%          | +9.7%            |
  | `plugins/ai/groq`                      | 0%             | 100.0%        | +100.0%          |
  | `plugins/ai/openai`                    | 0%             | 26.2%         | +26.2%           |
  | `plugins/ai/openrouter`                | 0%             | 0.0%          | 0%               |
  | `plugins/ai/anthropic`                 | 0%             | 23.9%         | +23.9%           |
  | `plugins/ai/azure`                     | 0%             | 100.0%        | +100.0%          |
  | `plugins/ai/deepseek`                  | 0%             | 100.0%        | +100.0%          |
  | **Total Coverage**                      | 0%             | 51.4%         | +51.4%           |

  Would love your feedback! Does this look good to merge, or do you have any suggestions? 🚀

commits:
  [{"SHA":"7a678dc1756f0989aad8263cde7b8e30a5110dd2","Message":"Feat: Increase unit test coverage from 0 to 100% in the AI module using Keploy's Agent","Author":"TvisharajiK"},{"SHA":"5246a9699a8c83636030c26ea90ed895cbb75b44","Message":"Merge pull request #1 from TvisharajiK/unittests\n\nImproved unit-test coverage from 0 to 100% using Keploy AI Agent","Author":"Tvisha"}]


title: Bump github.com/go-git/go-git/v5 from 5.12.0 to 5.13.0 in the go_modules group across 1 directory
author: dependabot
author_url: https://github.com/apps/dependabot
author_type: bot
url: https://github.com/danielmiessler/Fabric/pull/1296
merged_at: 2025-02-24 20:24:05+00:00
created_at: 2025-07-16 04:25:34
body:
  Bumps the go_modules group with 1 update in the / directory: [github.com/go-git/go-git/v5](https://github.com/go-git/go-git).

  Updates `github.com/go-git/go-git/v5` from 5.12.0 to 5.13.0
  <details>
  <summary>Release notes</summary>
  <p><em>Sourced from <a href="https://github.com/go-git/go-git/releases">github.com/go-git/go-git/v5's releases</a>.</em></p>
  <blockquote>
  <h2>v5.13.0</h2>
  <h2>What's Changed</h2>
  <ul>
  <li>build: bump github.com/go-git/go-git/v5 from 5.11.0 to 5.12.0 in /cli/go-git by <a href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1065">go-git/go-git#1065</a></li>
  <li>build: bump golang.org/x/net from 0.22.0 to 0.23.0 by <a href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1068">go-git/go-git#1068</a></li>
  <li>build: bump golang.org/x/net from 0.23.0 to 0.24.0 by <a href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1071">go-git/go-git#1071</a></li>
  <li>Properly support skipping of non-mandatory extensions  by <a href="https://github.com/codablock"><code>@​codablock</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1066">go-git/go-git#1066</a></li>
  <li>git: Refine some codes in test and non-test. by <a href="https://github.com/onee-only"><code>@​onee-only</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1077">go-git/go-git#1077</a></li>
  <li>plumbing: protocol/packp, client-side filter capability support by <a href="https://github.com/edigaryev"><code>@​edigaryev</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1000">go-git/go-git#1000</a></li>
  <li>build: bump golang.org/x/net from 0.22.0 to 0.23.0 in /cli/go-git by <a href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1078">go-git/go-git#1078</a></li>
  <li>plumbing: fix sideband demux on flush by <a href="https://github.com/aymanbagabas"><code>@​aymanbagabas</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1084">go-git/go-git#1084</a></li>
  <li>storage: dotgit, head reference usually comes first by <a href="https://github.com/aymanbagabas"><code>@​aymanbagabas</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1085">go-git/go-git#1085</a></li>
  <li>build: bump golang.org/x/text from 0.14.0 to 0.15.0 by <a href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1091">go-git/go-git#1091</a></li>
  <li>build: bump golang.org/x/crypto from 0.22.0 to 0.23.0 by <a href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1094">go-git/go-git#1094</a></li>
  <li>build: bump golang.org/x/net from 0.24.0 to 0.25.0 by <a href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1093">go-git/go-git#1093</a></li>
  <li>git: Added an example for Repository.Branches by <a href="https://github.com/johnmatthiggins"><code>@​johnmatthiggins</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1088">go-git/go-git#1088</a></li>
  <li>git: worktree_commit, Modify checking empty commit. Fixes <a href="https://redirect.github.com/go-git/go-git/issues/723">#723</a> by <a href="https://github.com/onee-only"><code>@​onee-only</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1050">go-git/go-git#1050</a></li>
  <li>plumbing: transport/http, Wrap http errors to return reason. Fixes <a href="https://redirect.github.com/go-git/go-git/issues/1097">#1097</a> by <a href="https://github.com/ggambetti"><code>@​ggambetti</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1100">go-git/go-git#1100</a></li>
  <li>build: bump golang.org/x/sys from 0.20.0 to 0.21.0 by <a href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1106">go-git/go-git#1106</a></li>
  <li>build: bump golang.org/x/text from 0.15.0 to 0.16.0 by <a href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1107">go-git/go-git#1107</a></li>
  <li>Bumps Go versions and go-billy by <a href="https://github.com/pjbgf"><code>@​pjbgf</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1056">go-git/go-git#1056</a></li>
  <li>_examples: Fixed a dead link COMPATIBILITY.md by <a href="https://github.com/gecko655"><code>@​gecko655</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1109">go-git/go-git#1109</a></li>
  <li>build: bump github.com/jessevdk/go-flags from 1.5.0 to 1.6.1 in /cli/go-git by <a href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1115">go-git/go-git#1115</a></li>
  <li>build: bump github.com/elazarl/goproxy from v0.0.0-20230808193330-2592e75ae04a to v0.0.0-20240618083138-03be62527ccb by <a href="https://github.com/hbelmiro"><code>@​hbelmiro</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1124">go-git/go-git#1124</a></li>
  <li>build: bump golang.org/x/net from 0.25.0 to 0.26.0 by <a href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1104">go-git/go-git#1104</a></li>
  <li>Add option approximating <code>git clean -x</code> flag. by <a href="https://github.com/msuozzo"><code>@​msuozzo</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/995">go-git/go-git#995</a></li>
  <li>Revert &quot;Add option approximating <code>git clean -x</code> flag.&quot; by <a href="https://github.com/pjbgf"><code>@​pjbgf</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1129">go-git/go-git#1129</a></li>
  <li>Fix reference updated concurrently error for the filesystem storer by <a href="https://github.com/Javier-varez"><code>@​Javier-varez</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1116">go-git/go-git#1116</a></li>
  <li>build: bump golang.org/x/net from 0.26.0 to 0.27.0 by <a href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1134">go-git/go-git#1134</a></li>
  <li>utils: merkletrie, Align error message with upstream by <a href="https://github.com/pjbgf"><code>@​pjbgf</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1142">go-git/go-git#1142</a></li>
  <li>plumbing: transport/file, Change paths to absolute by <a href="https://github.com/pjbgf"><code>@​pjbgf</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1141">go-git/go-git#1141</a></li>
  <li>plumbing: gitignore, Fix loading of ignored .gitignore files. by <a href="https://github.com/Achilleshiel"><code>@​Achilleshiel</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1114">go-git/go-git#1114</a></li>
  <li>build: bump github.com/skeema/knownhosts from 1.2.2 to 1.3.0 by <a href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1147">go-git/go-git#1147</a></li>
  <li>plumbing: transport/ssh, Add support for SSH <a href="https://github.com/cert-authority"><code>@​cert-authority</code></a>. by <a href="https://github.com/Javier-varez"><code>@​Javier-varez</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1157">go-git/go-git#1157</a></li>
  <li>build: run example tests during CI workflow by <a href="https://github.com/crazybolillo"><code>@​crazybolillo</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1030">go-git/go-git#1030</a></li>
  <li>storage: filesystem, Fix object cache not working due to uninitialised objects being put into cache by <a href="https://github.com/SatelliteMind"><code>@​SatelliteMind</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1138">go-git/go-git#1138</a></li>
  <li>git: Fix fetching missing commits by <a href="https://github.com/AriehSchneier"><code>@​AriehSchneier</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1032">go-git/go-git#1032</a></li>
  <li>plumbing: format/packfile, remove duplicate checks in findMatch() by <a href="https://github.com/edigaryev"><code>@​edigaryev</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1152">go-git/go-git#1152</a></li>
  <li>git: worktree, Fix file reported as <code>Untracked</code> while it is committed by <a href="https://github.com/rodrigocam"><code>@​rodrigocam</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1023">go-git/go-git#1023</a></li>
  <li>build: bump golang.org/x/sys from 0.22.0 to 0.23.0 by <a href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1160">go-git/go-git#1160</a></li>
  <li>plumbing: filemode, Remove check for setting size of .git/index file  by <a href="https://github.com/nicholasSUSE"><code>@​nicholasSUSE</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1159">go-git/go-git#1159</a></li>
  <li>build: bump golang.org/x/net from 0.27.0 to 0.28.0 by <a href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1163">go-git/go-git#1163</a></li>
  <li>Fix some lint warning and increase stalebot to 180 days by <a href="https://github.com/pjbgf"><code>@​pjbgf</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1128">go-git/go-git#1128</a></li>
  <li>adjust path extracted from file: url on Windows by <a href="https://github.com/tomqwpl"><code>@​tomqwpl</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/416">go-git/go-git#416</a></li>
  <li>build: bump golang.org/x/sys from 0.23.0 to 0.24.0 by <a href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1164">go-git/go-git#1164</a></li>
  <li>Add RestoreStaged to Worktree that mimics the behaviour of git restore --staged <!-- raw HTML omitted -->... by <a href="https://github.com/ben-tbotlabs"><code>@​ben-tbotlabs</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/493">go-git/go-git#493</a></li>
  <li>plumbing: signature, support the same x509 signature formats as git by <a href="https://github.com/yoavamit"><code>@​yoavamit</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1169">go-git/go-git#1169</a></li>
  <li>fix: allow discovery of non bare repos in fsLoader by <a href="https://github.com/jakobmoellerdev"><code>@​jakobmoellerdev</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1170">go-git/go-git#1170</a></li>
  <li>build: bump golang.org/x/sys from 0.24.0 to 0.25.0 by <a href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1178">go-git/go-git#1178</a></li>
  <li>build: bump golang.org/x/text from 0.17.0 to 0.18.0 by <a href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1179">go-git/go-git#1179</a></li>
  <li>build: bump golang.org/x/net from 0.28.0 to 0.29.0 by <a href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a href="https://redirect.github.com/go-git/go-git/pull/1184">go-git/go-git#1184</a></li>
  </ul>
  <!-- raw HTML omitted -->
  </blockquote>
  <p>... (truncated)</p>
  </details>
  <details>
  <summary>Commits</summary>
  <ul>
  <li><a href="https://github.com/go-git/go-git/commit/94bd4af1deb15a64e90c6287eaf9e9f09b192a1f"><code>94bd4af</code></a> Merge pull request <a href="https://redirect.github.com/go-git/go-git/issues/1261">#1261</a> from BeChris/issue680</li>
  <li><a href="https://github.com/go-git/go-git/commit/8b7f5ba6f0cade1a25c5c4ca9e4d07a95c639945"><code>8b7f5ba</code></a> Merge pull request <a href="https://redirect.github.com/go-git/go-git/issues/1262">#1262</a> from go-git/dependabot/go_modules/github.com/elazarl...</li>
  <li><a href="https://github.com/go-git/go-git/commit/41d80a059a481d4c623bc8185c41ce82ed8ce985"><code>41d80a0</code></a> build: bump github.com/elazarl/goproxy</li>
  <li><a href="https://github.com/go-git/go-git/commit/499814044f111480b2a17a07c5a7a4c523ce5b87"><code>4998140</code></a> git: worktree_commit, sanitize author and commiter name and email before crea...</li>
  <li><a href="https://github.com/go-git/go-git/commit/9049625b98bd05edb9f1d00e7ff5da763afc0745"><code>9049625</code></a> Merge pull request <a href="https://redirect.github.com/go-git/go-git/issues/1260">#1260</a> from go-git/dependabot/github_actions/github/codeql-...</li>
  <li><a href="https://github.com/go-git/go-git/commit/dae48b4340d1cc6b562ade40b54049584075991f"><code>dae48b4</code></a> build: bump github/codeql-action from 3.27.9 to 3.28.0</li>
  <li><a href="https://github.com/go-git/go-git/commit/7d6fbc2c2a05eb6327b298b816bc0c4f854820a6"><code>7d6fbc2</code></a> Merge pull request <a href="https://redirect.github.com/go-git/go-git/issues/1220">#1220</a> from BeChris/accept_uppercase_hexa_in_pktline_length</li>
  <li><a href="https://github.com/go-git/go-git/commit/62a77b7d343dc1ed08d1d691efa13d81788cbc29"><code>62a77b7</code></a> plumbing: Fix invalid reference name error while cloning branches containing ...</li>
  <li><a href="https://github.com/go-git/go-git/commit/5e11196652708f339737b31bf9639373610dd7d1"><code>5e11196</code></a> plumbing: format/pktline, accept upercase hexadecimal value as pktline length...</li>
  <li><a href="https://github.com/go-git/go-git/commit/65f5e1ade083cfabacc2de4aaa68f7880e22b642"><code>65f5e1a</code></a> Merge pull request <a href="https://redirect.github.com/go-git/go-git/issues/1256">#1256</a> from go-git/dependabot/go_modules/golang-org-232a611e2d</li>
  <li>Additional commits viewable in <a href="https://github.com/go-git/go-git/compare/v5.12.0...v5.13.0">compare view</a></li>
  </ul>
  </details>
  <br />


  [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/go-git/go-git/v5&package-manager=go_modules&previous-version=5.12.0&new-version=5.13.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

  Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

  [//]: # (dependabot-automerge-start)
  [//]: # (dependabot-automerge-end)

  ---

  <details>
  <summary>Dependabot commands and options</summary>
  <br />

  You can trigger Dependabot actions by commenting on this PR:
  - `@dependabot rebase` will rebase this PR
  - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
  - `@dependabot merge` will merge this PR after your CI passes on it
  - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
  - `@dependabot cancel merge` will cancel a previously requested merge and block automerging
  - `@dependabot reopen` will reopen this PR if it is closed
  - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
  - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
  - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
  - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
  - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency
  - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions
  You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/danielmiessler/fabric/network/alerts).

  </details>

commits:
  [{"SHA":"98fe1fbae2d9f39cc7de48a4006792c80b976464","Message":"Bump github.com/go-git/go-git/v5\n\nBumps the go_modules group with 1 update in the / directory: [github.com/go-git/go-git/v5](https://github.com/go-git/go-git).\n\n\nUpdates `github.com/go-git/go-git/v5` from 5.12.0 to 5.13.0\n- [Release notes](https://github.com/go-git/go-git/releases)\n- [Commits](https://github.com/go-git/go-git/compare/v5.12.0...v5.13.0)\n\n---\nupdated-dependencies:\n- dependency-name: github.com/go-git/go-git/v5\n  dependency-type: direct:production\n  dependency-group: go_modules\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e","Author":"dependabot[bot]"}]


