Skip to content

Commit 168467d

Browse files
authored
Merge pull request #57 from microsoft/copilot/add-agents-md-file
Add AGENTS.md file to repository root
2 parents ea94c06 + 215d65e commit 168467d

File tree

1 file changed

+358
-0
lines changed

1 file changed

+358
-0
lines changed

AGENTS.md

Lines changed: 358 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,358 @@
1+
# AGENTS.md
2+
3+
## Project Overview
4+
5+
**Security-101** is a beginner-friendly cybersecurity curriculum created by Microsoft. The project is a documentation-based learning resource that teaches fundamental cybersecurity concepts through structured modules. It is vendor-agnostic and designed to be completed in small lessons (30-60 minutes each).
6+
7+
**Key Technologies:**
8+
- Markdown for content
9+
- Docsify for static site generation
10+
- GitHub Pages for hosting
11+
- Co-op Translator for multi-language support (50+ languages)
12+
- GitHub Actions for CI/CD
13+
14+
**Architecture:**
15+
- Educational content organized in 8 main modules, each with sub-lessons
16+
- Static HTML site with Docsify rendering Markdown content
17+
- Automated translation workflow using Azure AI services
18+
- No build tools or package managers required for core content
19+
20+
## Repository Structure
21+
22+
```
23+
/
24+
├── README.md # Main entry point with curriculum overview
25+
├── index.html # Docsify site entry point
26+
├── [1-8].[1-4] *.md # Curriculum modules and lessons
27+
├── CODE_OF_CONDUCT.md # Community guidelines
28+
├── SECURITY.md # Security policy
29+
├── SUPPORT.md # Support information
30+
├── LICENSE # MIT License
31+
├── images/ # Image assets for lessons
32+
├── translated_images/ # Translated image assets
33+
├── translations/ # Translated versions (50+ languages)
34+
└── .github/
35+
├── workflows/
36+
│ ├── co-op-translator.yml # Automated translation workflow
37+
│ ├── deploy.yaml # GitHub Pages deployment
38+
│ └── jekyll-gh-pages.yml # Jekyll site generation
39+
└── ISSUE_TEMPLATE/ # Issue templates
40+
```
41+
42+
## Setup Commands
43+
44+
This is a documentation project with no dependencies to install. To work with the content:
45+
46+
```bash
47+
# Clone the repository
48+
git clone https://github.com/microsoft/Security-101.git
49+
cd Security-101
50+
51+
# View content locally - any Markdown viewer works
52+
# OR serve with a simple HTTP server to use Docsify rendering
53+
python -m http.server 8000
54+
# Then visit http://localhost:8000 in your browser
55+
```
56+
57+
## Development Workflow
58+
59+
### Viewing Content Locally
60+
61+
The project uses Docsify for rendering. To preview changes:
62+
63+
```bash
64+
# Option 1: Use Python's built-in HTTP server
65+
python -m http.server 8000
66+
67+
# Option 2: Use Node.js http-server (if available)
68+
npx http-server -p 8000
69+
70+
# Option 3: View Markdown files directly in any Markdown editor
71+
```
72+
73+
### Content Structure
74+
75+
Modules are numbered sequentially:
76+
- **Module 1:** Basic security concepts (1.1-1.7)
77+
- **Module 2:** Identity & access management (2.1-2.4)
78+
- **Module 3:** Network security (3.1-3.4)
79+
- **Module 4:** Security operations (4.1-4.4)
80+
- **Module 5:** Application security (5.1-5.3)
81+
- **Module 6:** Infrastructure security (6.1-6.3)
82+
- **Module 7:** Data security (7.1-7.3)
83+
- **Module 8:** AI security (8.1-8.4)
84+
85+
Each module ends with a quiz file (e.g., "1.7 End of module quiz.md").
86+
87+
### Making Content Changes
88+
89+
1. Edit Markdown files directly in the root directory
90+
2. Follow existing naming convention: `[module].[lesson] [Title].md`
91+
3. Update README.md table if adding/removing modules
92+
4. Add images to `/images/` directory
93+
5. Reference images using relative paths: `![Description](images/filename.png)`
94+
95+
## Translation Workflow
96+
97+
**Automated Translation:**
98+
- Translations are handled automatically by the Co-op Translator GitHub Action
99+
- When you push changes to `main` branch, the workflow translates content to 50+ languages
100+
- Translated files are stored in `/translations/[language_code]/`
101+
- Translation metadata is preserved in YAML frontmatter
102+
103+
**Supported Languages:** Arabic, Bengali, Bulgarian, Burmese, Chinese (Simplified, Traditional), Croatian, Czech, Danish, Dutch, Estonian, Finnish, French, German, Greek, Hebrew, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Lithuanian, Malay, Marathi, Nepali, Norwegian, Persian, Polish, Portuguese, Punjabi, Romanian, Russian, Serbian, Slovak, Slovenian, Spanish, Swahili, Swedish, Tagalog, Tamil, Thai, Turkish, Ukrainian, Urdu, Vietnamese, and more.
104+
105+
**Do NOT manually edit translation files** - they will be overwritten by the automated workflow.
106+
107+
## Code Style Guidelines
108+
109+
### Markdown Conventions
110+
111+
- Use standard Markdown syntax
112+
- Headings: Use `#` for main title, `##` for sections, `###` for subsections
113+
- Lists: Use `-` or `*` for unordered lists, `1.` for ordered lists
114+
- Links: Use descriptive text with full GitHub URLs for cross-references
115+
- Images: Store in `/images/` directory, use descriptive alt text
116+
- Code blocks: Use triple backticks with language identifier when applicable
117+
118+
### Content Guidelines
119+
120+
- Keep lessons focused and concise (30-60 minute read time)
121+
- Use clear, beginner-friendly language
122+
- Avoid vendor-specific tool instructions (curriculum is vendor-agnostic)
123+
- Include learning objectives at the start of each module
124+
- Link to external Microsoft Learn resources where appropriate
125+
- Ensure content is educational, not promotional
126+
127+
### File Naming
128+
129+
- Use format: `[Module].[Lesson] [Title].md`
130+
- Example: `1.1 The CIA triad and other key concepts.md`
131+
- Quiz files: `[Module].[Last] End of module quiz.md`
132+
- Use spaces in filenames (existing convention)
133+
134+
## GitHub Workflows
135+
136+
### Co-op Translator (co-op-translator.yml)
137+
138+
**Trigger:** Push to `main` branch
139+
**Purpose:** Automatically translates new/modified Markdown files to 50+ languages
140+
141+
**Environment Variables Required:**
142+
- Azure AI Service credentials (AZURE_AI_SERVICE_API_KEY, AZURE_AI_SERVICE_ENDPOINT)
143+
- Azure OpenAI credentials (optional alternative)
144+
- OpenAI credentials (optional alternative)
145+
146+
### Deploy (deploy.yaml)
147+
148+
**Trigger:** Push to `main` branch when README.md changes
149+
**Purpose:** Deploys static site to GitHub Pages
150+
**Output:** Updates GitHub Pages site
151+
152+
### Jekyll GitHub Pages (jekyll-gh-pages.yml)
153+
154+
**Trigger:** Push to configured branch
155+
**Purpose:** Builds and deploys site using Jekyll
156+
157+
## Pull Request Guidelines
158+
159+
### Before Submitting
160+
161+
1. **Content Review:** Ensure accuracy and clarity of cybersecurity concepts
162+
2. **Formatting:** Verify Markdown formatting renders correctly
163+
3. **Links:** Test all internal and external links
164+
4. **Images:** Ensure all images load and have descriptive alt text
165+
5. **Consistency:** Follow existing content structure and style
166+
167+
### PR Title Format
168+
169+
Use descriptive titles:
170+
- `Add: [New content description]`
171+
- `Update: [Module/Lesson] - [Brief description]`
172+
- `Fix: [Issue description]`
173+
- `Docs: [Documentation changes]`
174+
175+
### Required Checks
176+
177+
- Content accuracy (manual review)
178+
- Markdown formatting validation
179+
- Link verification
180+
- Translation workflow completion (for `main` branch merges)
181+
182+
### Review Process
183+
184+
1. At least one maintainer review required
185+
2. Focus on technical accuracy of security concepts
186+
3. Verify accessibility and beginner-friendliness
187+
4. Ensure vendor neutrality is maintained
188+
189+
## Common Tasks
190+
191+
### Adding a New Lesson
192+
193+
```bash
194+
# 1. Create new Markdown file with proper naming
195+
touch "[Module].[Lesson] [Title].md"
196+
197+
# 2. Add content following template structure
198+
# 3. Update README.md module table with new entry
199+
# 4. Add entry to module overview table
200+
# 5. Ensure quiz file numbering is correct
201+
202+
# 6. Commit changes
203+
git add "[Module].[Lesson] [Title].md" README.md
204+
git commit -m "Add: [Module].[Lesson] - [Title]"
205+
git push
206+
```
207+
208+
### Updating Existing Content
209+
210+
```bash
211+
# 1. Edit the relevant Markdown file
212+
# 2. Verify formatting and links
213+
# 3. Commit with descriptive message
214+
git add "[Module].[Lesson] [Title].md"
215+
git commit -m "Update: [Module].[Lesson] - [Brief description of changes]"
216+
git push
217+
```
218+
219+
### Adding Images
220+
221+
```bash
222+
# 1. Add image to /images/ directory
223+
cp new-image.png images/
224+
225+
# 2. Reference in Markdown
226+
# ![Descriptive alt text](images/new-image.png)
227+
228+
# 3. Commit both content and image
229+
git add "images/new-image.png" "[Module].[Lesson] [Title].md"
230+
git commit -m "Add: Image for [description]"
231+
git push
232+
```
233+
234+
## Testing and Validation
235+
236+
### Content Validation
237+
238+
Since this is a documentation project, testing focuses on:
239+
240+
1. **Markdown Rendering:** View changes locally using Docsify
241+
2. **Link Validation:** Manually click through all links
242+
3. **Image Loading:** Verify all images display correctly
243+
4. **Translation:** Check that files are picked up by translator workflow (automated)
244+
5. **Accessibility:** Ensure proper heading hierarchy and alt text
245+
246+
### Local Preview
247+
248+
```bash
249+
# Serve locally to test Docsify rendering
250+
python -m http.server 8000
251+
252+
# Visit http://localhost:8000
253+
# Click through navigation to verify all links work
254+
# Check that images load properly
255+
# Verify Markdown formatting renders correctly
256+
```
257+
258+
### Pre-commit Checklist
259+
260+
- [ ] Markdown files use correct syntax
261+
- [ ] All links are valid and use HTTPS where possible
262+
- [ ] Images have descriptive alt text
263+
- [ ] Content is beginner-friendly and accurate
264+
- [ ] Vendor-neutral language is maintained
265+
- [ ] README.md updated if adding/removing modules
266+
- [ ] File naming follows conventions
267+
268+
## Security Considerations
269+
270+
- **No secrets in content:** Never commit API keys, passwords, or sensitive data
271+
- **Link validation:** Ensure all external links are to trusted sources
272+
- **Image content:** Verify images don't contain sensitive information
273+
- **Translation workflow:** Uses Azure AI services with proper authentication
274+
- **SECURITY.md:** Follow vulnerability reporting process in SECURITY.md
275+
276+
## Additional Resources
277+
278+
### Related Microsoft Courses
279+
280+
This curriculum is part of a larger collection of Microsoft educational resources:
281+
- Generative AI for Beginners
282+
- AI for Beginners
283+
- Data Science for Beginners
284+
- ML for Beginners
285+
- Web Dev for Beginners
286+
- IoT for Beginners
287+
288+
### External Learning Paths
289+
290+
After completing Security-101:
291+
- [Microsoft Security, Compliance, and Identity Fundamentals](https://learn.microsoft.com/training/paths/describe-concepts-of-security-compliance-identity/)
292+
- [Exam SC-900: Microsoft Security, Compliance, and Identity Fundamentals](https://learn.microsoft.com/credentials/certifications/exams/sc-900/)
293+
294+
## Contributing
295+
296+
1. **Fork the repository** on GitHub
297+
2. **Create a feature branch** for your changes
298+
3. **Make your changes** following the guidelines above
299+
4. **Test locally** to ensure everything renders correctly
300+
5. **Submit a pull request** with a clear description of changes
301+
6. **Respond to feedback** from maintainers
302+
303+
## Common Issues and Troubleshooting
304+
305+
### Translations Not Working
306+
307+
- Ensure changes are pushed to `main` branch
308+
- Check GitHub Actions tab for workflow status
309+
- Verify translation workflow secrets are configured
310+
- Translation happens automatically; do not manually edit translation files
311+
312+
### Images Not Loading
313+
314+
- Verify image path uses forward slashes: `images/filename.png`
315+
- Check that image file is committed to repository
316+
- Ensure image filename matches exactly (case-sensitive)
317+
- Use relative paths, not absolute URLs
318+
319+
### Docsify Not Rendering
320+
321+
- Check that `index.html` is present in root
322+
- Verify Docsify CDN links are accessible
323+
- Ensure Markdown files use standard syntax
324+
- Check browser console for JavaScript errors
325+
326+
### Links Not Working
327+
328+
- Use full GitHub URLs for cross-references between lessons
329+
- Format: `https://github.com/microsoft/Security-101/blob/main/[file].md`
330+
- Test links in rendered view, not just in raw Markdown
331+
332+
## Project Maintenance
333+
334+
### Regular Tasks
335+
336+
- Review and merge community contributions
337+
- Update content for accuracy as security landscape evolves
338+
- Monitor translation workflow for errors
339+
- Respond to issues and discussions
340+
- Keep external links up to date
341+
342+
### Version Control
343+
344+
- `main` branch is protected and requires PR reviews
345+
- All changes go through pull request process
346+
- Translation files are auto-generated, do not edit manually
347+
- Use meaningful commit messages
348+
349+
## Notes for AI Coding Agents
350+
351+
- **This is a documentation project** - focus on content quality, not code
352+
- **Do not modify translation files** - they are auto-generated
353+
- **Preserve file naming conventions** - use spaces in filenames as per existing pattern
354+
- **Update README.md** when adding/removing modules to keep table in sync
355+
- **Test locally** before submitting PRs to ensure Markdown renders correctly
356+
- **Follow existing content style** - maintain beginner-friendly, vendor-neutral tone
357+
- **No build process required** - simple HTTP server is sufficient for local development
358+
- **Respect the module structure** - each module has consistent numbering and organization

0 commit comments

Comments
 (0)