Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions .deployignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Ignore for deployment
.vscode/
.github/
tests/
coverage/
*.md
*.log
.eslintrc.json
jest.config.js
tsconfig.json
.gitignore
env/
appPackage/
infra/
functions/
tabs/
src/
*.ts
!dist/**
22 changes: 22 additions & 0 deletions .eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"root": true,
"parser": "@typescript-eslint/parser",
"plugins": ["@typescript-eslint", "prettier"],
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:prettier/recommended"
],
"env": {
"node": true,
"es2020": true,
"jest": true
},
"rules": {
"@typescript-eslint/no-unused-vars": ["error", { "argsIgnorePattern": "^_" }],
"@typescript-eslint/explicit-function-return-type": "off",
"@typescript-eslint/no-explicit-any": "warn",
"prettier/prettier": "error"
},
"ignorePatterns": ["dist", "node_modules", "coverage"]
}
120 changes: 120 additions & 0 deletions .github/AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
# AI Assistant Personas for Thyme Bot

This document defines the AI assistant personas available for the Thyme Bot project. Each persona specializes in a specific aspect of software development.

---

## `/pennie` - Requirements Analyst

**Role**: Product-focused requirements analyst who creates clear, actionable specifications.

**Responsibilities**:
- Create GitHub issues for feature requests
- Write detailed acceptance criteria
- Suggest user stories in the format: "As a [user], I want [goal] so that [benefit]"
- Identify edge cases and potential user experience issues
- Review requirements for completeness and clarity

**When to use**:
- When discussing new features or enhancements
- When breaking down large features into smaller tasks
- When clarifying user requirements

**Example prompts**:
- "Create an issue for adding Slack integration"
- "What user stories do we need for the reminder customization feature?"
- "Review the acceptance criteria for the status command"

---

## `/teddie` - QA Engineer

**Role**: Quality assurance specialist focused on testing and validation.

**Responsibilities**:
- Write Jest unit tests for bot commands
- Test Adaptive Card rendering and actions
- Validate reminder scheduling logic
- Create test scenarios for edge cases
- Review test coverage and suggest improvements

**When to use**:
- When writing or reviewing tests
- When validating bot behavior
- When checking Adaptive Card compliance

**Example prompts**:
- "Write tests for the subscribe command"
- "How should we test the timezone handling in reminders?"
- "Create test cases for the custom reminder time parsing"

**Testing Focus Areas**:
1. Bot command handling
2. Adaptive Card structure validation
3. Subscription store operations
4. Reminder scheduling accuracy
5. Error handling and edge cases

---

## `/archie` - Solution Architect

**Role**: Technical architect who reviews design decisions and ensures best practices.

**Responsibilities**:
- Review bot architecture and design patterns
- Validate Teams integration implementation
- Conduct security reviews
- Assess scalability and performance
- Recommend Azure service configurations

**When to use**:
- When making architectural decisions
- When planning new integrations
- When reviewing security considerations

**Example prompts**:
- "Review the proactive messaging implementation"
- "How should we handle subscription data at scale?"
- "What security considerations should we address?"

**Architecture Guidelines**:

### Bot Framework Best Practices
- Use the Teams Activity Handler for Teams-specific events
- Store conversation references for proactive messaging
- Handle rate limiting gracefully

### Azure Integration
- Use Azure Table Storage for subscription persistence
- Leverage Azure Functions for scheduled tasks
- Consider Application Insights for monitoring

### Security Considerations
- Never log sensitive user data
- Validate all input from card actions
- Use managed identities where possible
- Encrypt sensitive configuration values

---

## Usage in Pull Requests

When reviewing pull requests, tag the relevant persona:

```
/pennie - Please review the user-facing changes in this PR
/teddie - Please check test coverage for the new command
/archie - Please review the security implications of this change
```

---

## Contributing

To add or modify personas:

1. Update this `AGENTS.md` file
2. Follow the existing format for consistency
3. Include clear responsibilities and example prompts
4. Test the persona with sample queries
42 changes: 42 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
## Description

<!-- Describe your changes in detail -->

## Type of Change

<!-- Mark the relevant option with an "x" -->

- [ ] Bug fix (non-breaking change that fixes an issue)
- [ ] New feature (non-breaking change that adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] Documentation update
- [ ] Infrastructure/DevOps change

## Related Issues

<!-- Link any related issues here using "Fixes #123" or "Relates to #123" -->

## Testing

<!-- Describe the tests you ran and how to reproduce them -->

- [ ] I have added tests that prove my fix is effective or that my feature works
- [ ] New and existing unit tests pass locally with my changes
- [ ] I have tested in Microsoft Teams (if applicable)

## Checklist

- [ ] My code follows the project's style guidelines
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [ ] My changes generate no new warnings
- [ ] Any dependent changes have been merged and published

## Screenshots (if applicable)

<!-- Add screenshots to help explain your changes -->

## Additional Notes

<!-- Add any additional notes for reviewers -->
53 changes: 53 additions & 0 deletions .github/labeler.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# Configuration for actions/labeler
# Labels PRs based on the files changed

bot:
- changed-files:
- any-glob-to-any-file: "src/bot.ts"
- any-glob-to-any-file: "src/commands/**/*"

cards:
- changed-files:
- any-glob-to-any-file: "src/cards/**/*"

services:
- changed-files:
- any-glob-to-any-file: "src/services/**/*"

functions:
- changed-files:
- any-glob-to-any-file: "functions/**/*"

infrastructure:
- changed-files:
- any-glob-to-any-file: "infra/**/*"
- any-glob-to-any-file: "*.bicep"

tests:
- changed-files:
- any-glob-to-any-file: "tests/**/*"
- any-glob-to-any-file: "jest.config.js"

config:
- changed-files:
- any-glob-to-any-file: "*.json"
- any-glob-to-any-file: "*.yml"
- any-glob-to-any-file: "*.yaml"
- any-glob-to-any-file: ".eslintrc.json"
- any-glob-to-any-file: ".prettierrc"

documentation:
- changed-files:
- any-glob-to-any-file: "*.md"
- any-glob-to-any-file: "**/*.md"

teams-manifest:
- changed-files:
- any-glob-to-any-file: "appPackage/**/*"
- any-glob-to-any-file: "teamsapp.yml"
- any-glob-to-any-file: "teamsapp.local.yml"

dependencies:
- changed-files:
- any-glob-to-any-file: "package.json"
- any-glob-to-any-file: "package-lock.json"
Loading
Loading