diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 00000000..5083a399
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,35 @@
+---
+name: Bug Report
+about: Create a report to help us improve
+title: '[Bug]:'
+labels: 'bug'
+assignees: ''
+
+---
+
+**OpenJudge is an open-source project. To involve a broader community, we recommend asking your questions in English.**
+
+**Describe the bug**
+A clear and concise description of what the bug is.
+
+**To Reproduce**
+Steps to reproduce the behavior:
+
+1. Code snippet that causes the bug:
+2. Steps to execute the code:
+3. Error message or unexpected behavior observed:
+
+**Expected behavior**
+A clear and concise description of what you expected to happen.
+
+**Error messages**
+Detailed error messages.
+
+**Environment (please complete the following information):**
+
+- OpenJudge Version: [e.g. 1.0.0 via `print(openjudge.__version__)`]
+- Python Version: [e.g. 3.10]
+- OS: [e.g. macos, windows]
+
+**Additional context**
+Add any other context about the problem here.
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/custom.md b/.github/ISSUE_TEMPLATE/custom.md
new file mode 100644
index 00000000..82a8b2da
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/custom.md
@@ -0,0 +1,12 @@
+---
+name: Custom issue template
+about: Describe this issue template's purpose here.
+title: ''
+labels: ''
+assignees: ''
+
+---
+
+**OpenJudge is an open-source project. To involve a broader community, we recommend asking your questions in English.**
+
+**Please describe your issue or question in detail below:**
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
new file mode 100644
index 00000000..41841191
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -0,0 +1,23 @@
+---
+name: Feature Request
+about: Suggest an idea for this project
+title: '[Feature]: '
+labels: 'enhancement'
+assignees: ''
+
+---
+
+**OpenJudge is an open-source project. To involve a broader community, we recommend asking your questions in English.**
+
+
+**Is your feature request related to a problem? Please describe.**
+A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
+
+**Describe the solution you'd like**
+A clear and concise description of what you want to happen.
+
+**Describe alternatives you've considered**
+A clear and concise description of any alternative solutions or features you've considered.
+
+**Additional context**
+Add any other context or screenshots about the feature request here.
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 00000000..e14086ac
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,17 @@
+## OpenJudge Version
+
+[The version of OpenJudge you are working on, e.g. `import openjudge; print(openjudge.__version__)`]
+
+## Description
+
+[Please describe the background, purpose, changes made, and how to test this PR]
+
+## Checklist
+
+Please check the following items before code is ready to be reviewed.
+
+- [ ] Code has been formatted with `pre-commit run --all-files` command
+- [ ] All tests are passing
+- [ ] Docstrings are in Google style
+- [ ] Related documentation has been updated (e.g. links, examples, etc.)
+- [ ] Code is ready for review
\ No newline at end of file