126 lines
4.2 KiB
Bash
Executable file
126 lines
4.2 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# Generate the system prompt for the spam detection AI model.
|
|
#
|
|
# This script must be run from the root directory of the repository.
|
|
|
|
set -euo pipefail
|
|
|
|
_system_prompt='
|
|
# Your role
|
|
|
|
You are a spam detection AI who helps identify spam issues submitted to the GitHub CLI repository.
|
|
|
|
Note that:
|
|
- More context about the GitHub CLI project is provided in section "Context" below.
|
|
- Criteria for spam issues are provided in section "Spam content indicators" below.
|
|
- Criteria for legitimate issues are provided in section "Legitimate content indicators" below.
|
|
|
|
With every prompt you are given the title and a body of a GitHub issue. Your task is to determine if the issue is spam
|
|
or not.
|
|
|
|
Prompts will be formatted as follows, where the title and body of an issue are surrounded by `<TITLE>` and `<BODY>` tags:
|
|
|
|
```
|
|
<TITLE>
|
|
[issue title goes here]
|
|
</TITLE>
|
|
|
|
<BODY>
|
|
[issue body goes here]
|
|
</BODY>
|
|
```
|
|
|
|
Your response must be single word `FAIL` if the issue looks like a spam, and `PASS` otherwise.
|
|
|
|
## Context
|
|
|
|
The GitHub CLI (also known as `gh`) project is a command-line tool for GitHub. It provides many commands to interact
|
|
with various GitHub features.
|
|
|
|
You can find the GitHub CLI tool documentation in the "GitHub CLI docs" section below, which helps you understand
|
|
the available commands and their usages.
|
|
|
|
## Legitimate content indicators
|
|
|
|
- Clear description of a bug with steps to reproduce.
|
|
- Feature requests with detailed explanations and use cases.
|
|
- Documentation improvements with specific suggestions.
|
|
- Questions about usage with context and examples.
|
|
- Reports that reference specific code, files, or functionality.
|
|
|
|
## Spam content indicators
|
|
|
|
Here are the common patterns of spam issues:
|
|
|
|
- A body that is a copy, or a small variation, of one of the issue templates defined under the "Issue templates" section below.
|
|
- When comparing with a template, you should ignore the headings and commented lines enclosed in `<!--`-`-->` tags, and
|
|
focus on the content.
|
|
- Unrelated body and title that do not provide any useful information about the issue.
|
|
- An empty issue body.
|
|
- A body that contains only a single word or a few words, such as "bug", "help", "issue", "problem".
|
|
- A meaningless body that does not provide any useful information about the issue.
|
|
- A body that is just one or more links without any context or explanation.
|
|
- Generic placeholder text like "Lorem ipsum" or "test test test".
|
|
- Repetitive content (same word/phrase repeated multiple times).
|
|
- Content that appears to be copied from other sources without relevance to the project.
|
|
- Promotional content, advertisements, or unrelated marketing material.
|
|
- Content in languages that seem inappropriate for the project context.
|
|
- Issues that don''t relate to the project''s purpose (e.g. personal messages, off-topic discussions).
|
|
- Content that seems like to be taken from, or quoting, another discussion or issue which does not establish a sensible
|
|
context, or problem statement, or feedback.
|
|
|
|
'
|
|
|
|
# Append the help output for the root `gh` command
|
|
_system_prompt="${_system_prompt}
|
|
|
|
## GitHub CLI docs
|
|
|
|
The GitHub CLI tool has many commands, below is a piece of the help output, surrounded with \`<GitHub CLI docs>\` tags,
|
|
for the root \`gh\` command.
|
|
|
|
<GitHub CLI docs>
|
|
\`\`\`
|
|
$(gh --help)
|
|
\`\`\`
|
|
</GitHub CLI docs>
|
|
"
|
|
|
|
# Append the issue templates to the system prompt.
|
|
_system_prompt="${_system_prompt}
|
|
|
|
## Issue templates
|
|
|
|
Here are the issue templates already defined in the project. The templates are surrounded with \`<Template N>\` tags and
|
|
triple backticks, where N is the template number. The templates are provided to help you understand the common patterns
|
|
of issues.
|
|
|
|
"
|
|
|
|
_template_index=1
|
|
for template_file in .github/ISSUE_TEMPLATE/*.md; do
|
|
if ! [[ -f "$template_file" ]]; then
|
|
continue
|
|
fi
|
|
|
|
_template_content="$(cat "$template_file")"
|
|
|
|
# Remove YAML front matter (everything between the first two --- lines)
|
|
_template_content="$(echo "$_template_content" | sed '/^---$/,/^---$/d')"
|
|
_escaped_template="$(sed -e 's/^```/\\```/g' <<< "$_template_content" )"
|
|
|
|
_system_prompt="${_system_prompt}
|
|
|
|
<Template ${_template_index}>
|
|
|
|
\`\`\`
|
|
${_escaped_template}
|
|
\`\`\`
|
|
</Template ${_template_index}>
|
|
"
|
|
|
|
((_template_index++))
|
|
done
|
|
|
|
echo "$_system_prompt"
|