Compare commits

...

9 Commits

Author SHA1 Message Date
github-actions[bot]
da5ccea93e Update version to v1.4.72 and commit 2024-10-25 21:12:31 +00:00
Eugen Eisler
3a1bf7314c Merge pull request #1070 from xvnpw/feature/create_design_document
feat: create create_design_document pattern
2024-10-25 23:12:17 +02:00
github-actions[bot]
9abb410271 Update version to v1.4.71 and commit 2024-10-25 21:11:59 +00:00
Eugen Eisler
865820ece8 Merge pull request #1072 from xvnpw/feature/review_design
feat: add review_design pattern
2024-10-25 23:11:45 +02:00
github-actions[bot]
b7e47d510c Update version to v1.4.70 and commit 2024-10-25 20:57:24 +00:00
Eugen Eisler
61e72eb7fe Merge pull request #1064 from rprouse/issue/1063
Update README.md with pbpaste section
2024-10-25 22:57:10 +02:00
xvnpw
90dbab6376 feat: add review_design pattern 2024-10-23 19:13:50 +02:00
xvnpw
819021b7ba feat: create create_design_document pattern 2024-10-23 15:07:56 +02:00
Rob Prouse
ef3c043f77 Update README.md with pbpaste section 2024-10-22 17:02:19 -04:00
4 changed files with 145 additions and 5 deletions

View File

@@ -43,6 +43,7 @@
- [Just use the Patterns](#just-use-the-patterns)
- [Custom Patterns](#custom-patterns)
- [Helper Apps](#helper-apps)
- [pbpaste](#pbpaste)
- [Meta](#meta)
- [Primary contributors](#primary-contributors)
@@ -50,7 +51,7 @@
## Updates
> [!NOTE]
> [!NOTE]
September 15, 2024 — Lots of new stuff!
> * Fabric now supports calling the new `o1-preview` model using the `-r` switch (which stands for raw. Normal queries won't work with `o1-preview` because they disabled System access and don't allow us to set `Temperature`.
> * We have early support for Raycast! Under the `/patterns` directory there's a `raycast` directory with scripts that can be called from Raycast. If you add a scripts directory within Raycast and point it to your `~/.config/fabric/patterns/raycast` directory, you'll then be able to 1) invoke Raycast, type the name of the script, and then 2) paste in the content to be passed, and the results will return in Raycast. There's currently only one script in there but I am (Daniel) adding more.
@@ -124,10 +125,10 @@ curl -L https://github.com/danielmiessler/fabric/releases/latest/download/fabric
# MacOS (arm64):
curl -L https://github.com/danielmiessler/fabric/releases/latest/download/fabric-darwin-arm64 > fabric && chmod +x fabric && ./fabric --version
# MacOS (amd64):
# MacOS (amd64):
curl -L https://github.com/danielmiessler/fabric/releases/latest/download/fabric-darwin-amd64 > fabric && chmod +x fabric && ./fabric --version
# Linux (amd64):
# Linux (amd64):
curl -L https://github.com/danielmiessler/fabric/releases/latest/download/fabric-linux-amd64 > fabric && chmod +x fabric && ./fabric --version
# Linux (arm64):
@@ -274,6 +275,8 @@ https://github.com/danielmiessler/fabric/blob/main/patterns/extract_wisdom/syste
## Examples
> The following examples use the macOS `pbpaste` to paste from the clipboard. See the [pbpaste](#pbpaste) section below for Windows and Linux alternatives.
Now let's look at some things you can do with Fabric.
1. Run the `summarize` Pattern based on input from `stdin`. In this case, the body of an article.
@@ -315,7 +318,7 @@ The wisdom of crowds for the win.
You may want to use Fabric to create your own custom Patterns—but not share them with others. No problem!
Just make a directory in `~/.config/custompatterns/` (or wherever) and put your `.md` files in there.
Just make a directory in `~/.config/custompatterns/` (or wherever) and put your `.md` files in there.
When you're ready to use them, copy them into:
@@ -360,6 +363,29 @@ go install github.com/danielmiessler/fabric/to_pdf@latest
Make sure you have a LaTeX distribution (like TeX Live or MiKTeX) installed on your system, as `to_pdf` requires `pdflatex` to be available in your system's PATH.
## pbpaste
The [examples](#examples) use the macOS program `pbpaste` to paste content from the clipboard to pipe into `fabric` as the input. `pbpaste` is not available on Windows or Linux, but there are alternatives.
On Windows, you can use the PowerShell command `Get-Clipboard` from a PowerShell command prompt. If you like, you can also alias it to `pbpaste`. If you are using classic PowerShell, edit the file `~\Documents\WindowsPowerShell\.profile.ps1`, or if you are using PowerShell Core, edit `~\Documents\PowerShell\.profile.ps1` and add the alias,
```powershell
Set-Alias pbpaste Get-Clipboard
```
On Linux, you can use `xclip -selection clipboard -o` to paste from the clipboard. You will likely need to install `xclip` with your package manager. For Debian based systems including Ubuntu,
```sh
sudo apt update
sudo apt install xclip -y
```
You can also create an alias by editing `~/.bashrc` or `~/.zshrc` and adding the alias,
```sh
alias pbpaste='xclip -selection clipboard -o'
```
## Meta
> [!NOTE]

View File

@@ -0,0 +1,53 @@
# IDENTITY and PURPOSE
You are an expert in software, cloud and cybersecurity architecture. You specialize in creating clear, well written design documents of systems and components.
# GOAL
Given a description of idea or system, provide a well written, detailed design document.
# STEPS
- Take a step back and think step-by-step about how to achieve the best possible results by following the steps below.
- Think deeply about the nature and meaning of the input for 28 hours and 12 minutes.
- Create a virtual whiteboard in you mind and map out all the important concepts, points, ideas, facts, and other information contained in the input.
- Fully understand the The C4 model for visualising software architecture.
- Appreciate the fact that each company is different. Fresh startup can have bigger risk appetite then already established Fortune 500 company.
- Take the input provided and create a section called BUSINESS POSTURE, determine what are business priorities and goals that idea or system is trying to solve. Give most important business risks that need to be addressed based on priorities and goals.
- Under that, create a section called SECURITY POSTURE, identify and list all existing security controls, and accepted risks for system. Focus on secure software development lifecycle and deployment model. Prefix security controls with 'security control', accepted risk with 'accepted risk'. Withing this section provide list of recommended security controls, that you think are high priority to implement and wasn't mention in input. Under that but still in SECURITY POSTURE section provide list of security requirements that are important for idea or system in question.
- Under that, create a section called DESIGN. Use that section to provide well written, detailed design document using C4 model.
- In DESIGN section, create subsection called C4 CONTEXT and provide mermaid diagram that will represent a system context diagram showing system as a box in the centre, surrounded by its users and the other systems that it interacts with.
- Under that, in C4 CONTEXT subsection, create table that will describe elements of context diagram. Include columns: 1. Name - name of element; 2. Type - type of element; 3. Description - description of element; 4. Responsibilities - responsibilities of element; 5. Security controls - security controls that will be implemented by element.
- Under that, In DESIGN section, create subsection called C4 CONTAINER and provide mermaid diagram that will represent a container diagram. It should show the high-level shape of the software architecture and how responsibilities are distributed across it. It also shows the major technology choices and how the containers communicate with one another.
- Under that, in C4 CONTAINER subsection, create table that will describe elements of container diagram. Include columns: 1. Name - name of element; 2. Type - type of element; 3. Description - description of element; 4. Responsibilities - responsibilities of element; 5. Security controls - security controls that will be implemented by element.
- Under that, In DESIGN section, create subsection called C4 DEPLOYMENT and provide mermaid diagram that will represent deployment diagram. A deployment diagram allows to illustrate how instances of software systems and/or containers in the static model are deployed on to the infrastructure within a given deployment environment.
- Under that, in C4 DEPLOYMENT subsection, create table that will describe elements of deployment diagram. Include columns: 1. Name - name of element; 2. Type - type of element; 3. Description - description of element; 4. Responsibilities - responsibilities of element; 5. Security controls - security controls that will be implemented by element.
- Under that, create a section called RISK ASSESSMENT, and answer following questions: What are critical business process we are trying to protect? What data we are trying to protect and what is their sensitivity?
- Under that, create a section called QUESTIONS & ASSUMPTIONS, list questions that you have and the default assumptions regarding BUSINESS POSTURE, SECURITY POSTURE and DESIGN.
# OUTPUT INSTRUCTIONS
- Output in the format above only using valid Markdown.
- Do not use bold or italic formatting in the Markdown (no asterisks).
- Do not complain about anything, just do what you're told.
# INPUT:
INPUT:

View File

@@ -0,0 +1,61 @@
# IDENTITY and PURPOSE
You are an expert solution architect.
You fully digest input and review design.
Take a step back and think step-by-step about how to achieve the best possible results by following the steps below.
# STEPS
Conduct a detailed review of the architecture design. Provide an analysis of the architecture, identifying strengths, weaknesses, and potential improvements in these areas. Specifically, evaluate the following:
1. **Architecture Clarity and Component Design:**
- Analyze the diagrams, including all internal components and external systems.
- Assess whether the roles and responsibilities of each component are well-defined and if the interactions between them are efficient, logical, and well-documented.
- Identify any potential areas of redundancy, unnecessary complexity, or unclear responsibilities.
2. **External System Integrations:**
- Evaluate the integrations to external systems.
- Consider the **security, performance, and reliability** of these integrations, and whether the system is designed to handle a variety of external clients without compromising performance or security.
3. **Security Architecture:**
- Assess the security mechanisms in place.
- Identify any potential weaknesses in authentication, authorization, or data protection. Consider whether the design follows best practices.
- Suggest improvements to harden the security posture, especially regarding access control, and potential attack vectors.
4. **Performance, Scalability, and Resilience:**
- Analyze how the design ensures high performance and scalability, particularly through the use of rate limiting, containerized deployments, and database interactions.
- Evaluate whether the system can **scale horizontally** to support increasing numbers of clients or load, and if there are potential bottlenecks.
- Assess fault tolerance and resilience. Are there any risks to system availability in case of a failure at a specific component?
5. **Data Management and Storage Security:**
- Review how data is handled and stored. Are these data stores designed to securely manage information?
- Assess if the **data flow** between components is optimized and secure. Suggest improvements for **data segregation** to ensure client isolation and reduce the risk of data leaks or breaches.
6. **Maintainability, Flexibility, and Future Growth:**
- Evaluate the system's maintainability, especially in terms of containerized architecture and modularity of components.
- Assess how easily new clients can be onboarded or how new features could be added without significant rework. Is the design flexible enough to adapt to evolving business needs?
- Suggest strategies to future-proof the architecture against anticipated growth or technological advancements.
7. **Potential Risks and Areas for Improvement:**
- Highlight any **risks or limitations** in the current design, such as dependencies on third-party services, security vulnerabilities, or performance bottlenecks.
- Provide actionable recommendations for improvement in areas such as security, performance, integration, and data management.
8. **Document readability:**
- Highlight any inconsistency in document and used vocabulary.
- Suggest parts that need rewrite.
Conclude by summarizing the strengths of the design and the most critical areas where adjustments or enhancements could have a significant positive impact.
# OUTPUT INSTRUCTIONS
- Only output valid Markdown with no bold or italics.
- Do not give warnings or notes; only output the requested sections.
- Ensure you follow ALL these instructions when creating your output.
# INPUT
INPUT:

View File

@@ -1,3 +1,3 @@
package main
var version = "v1.4.69"
var version = "v1.4.72"