ЁЯПЧя╕П QA рдмреЙрдЯ рд╕реЗ рдЯрд╛рд╕реНрдХ рдПрдЬреЗрдВрдЯ рддрдХ: рдПрдХ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдЧрд╛рдЗрдб
TL;DR: рдРрд╕реЗ рдЪреИрдЯрдмреЙрдЯ рдмрдирд╛рдирд╛ рдмрдВрдж рдХрд░реЗрдВ рдЬреЛ рдХреЗрд╡рд▓ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рджреЗрддреЗ рд╣реИрдВред рдЯрд╛рд╕реНрдХ рдПрдЬреЗрдВрдЯ рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
рдпрд╣ рдЧрд╛рдЗрдб рдореЛрдиреЛрд▓рд┐рдерд┐рдХ QA рдмреЙрдЯреНрд╕ рд╕реЗ рдЯрд╛рд╕реНрдХ рдПрдЬреЗрдВрдЯреНрд╕ рдореЗрдВ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд▓ рдмрджрд▓рд╛рд╡ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реНрдЯреЗрдЯрд┐рдХ рд░реВрд▓реНрд╕, рдбрд╛рдпрдиреЗрдорд┐рдХ рд╕реНрдХрд┐рд▓реНрд╕ рдФрд░ рдбрд┐рдЯрд░рдорд┐рдирд┐рд╕реНрдЯрд┐рдХ рд╣реБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ тАФ рдареЛрд╕ рдХреЛрдб рдЙрджрд╛рд╣рд░рдгреЛрдВ рдФрд░ рдУрдкрди-рд╕реЛрд░реНрд╕ рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рд╕рд╛рдеред

1. рдореБрдЦреНрдп рдмрджрд▓рд╛рд╡: QA рдмреЙрдЯ тЖТ рдЯрд╛рд╕реНрдХ рдПрдЬреЗрдВрдЯ
рдЖрдЬ рдЕрдзрд┐рдХрд╛рдВрд╢ AI рд╕рд┐рд╕реНрдЯрдо рдЕрднреА рднреА рд╕рдВрджрд░реНрдн-рднрд░реЗ QA рдмреЙрдЯ рд╣реИрдВ:
тАв рд╡реЗ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рдЕрдЪреНрдЫреА рддрд░рд╣ рджреЗрддреЗ рд╣реИрдВ
тАв рд╡реЗ рджрдмрд╛рд╡ рдореЗрдВ рднреНрд░рдорд┐рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ
тАв рдЙрдирдХреЗ рдкрд╛рд╕ рдирд┐рд╖реНрдкрд╛рджрди, рд╕реБрд░рдХреНрд╖рд╛ рдФрд░ рд╕реНрдерд┐рд░рддрд╛ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЧрд╛рд░рдВрдЯреА рдХреА рдХрдореА рд╣реИ
ЁЯТб рдореБрдЦреНрдп рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐: рд╕рдВрджрд░реНрдн рдХреЛ рд╕реНрдХреЗрд▓ рди рдХрд░реЗрдВред рдЗрд╕реЗ рд╕рдВрд░рдЪрд┐рдд рдХрд░реЗрдВред
2. рддреАрди-рд╕реНрддрд░реАрдп рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░
ЁЯз▒ 1. рд╕реНрдЯреЗрдЯрд┐рдХ рд╕рдВрджрд░реНрдн тАФ рдирд┐рдпрдо (рд╣рдореЗрд╢рд╛ рдЪрд╛рд▓реВ)
- тАврдорд╛рдирд╕рд┐рдХ рдореЙрдбрд▓: рдХрд░реНрдордЪрд╛рд░реА рдкреБрд╕реНрддрд┐рдХрд╛
- тАврд╣рдореЗрд╢рд╛ рд▓реЛрдб рд░рд╣рддрд╛ рд╣реИ
- тАврдкрд╣рдЪрд╛рди, рдХреЛрдбрд┐рдВрдЧ рдорд╛рдирдХреЛрдВ, рд╡реНрдпрд╡рд╣рд╛рд░рд┐рдХ рдмрд╛рдзрд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ
- тАврднреНрд░рдо рдФрд░ рд╢реИрд▓реА рдмрд╣рд╛рд╡ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ
- тАврдЫреЛрдЯрд╛, рд╕реНрдерд┐рд░, рдорд╛рдирд╡-рд╕рдВрдкрд╛рджрди рдпреЛрдЧреНрдп
ЁЯЫая╕П 2. рдбрд╛рдпрдиреЗрдорд┐рдХ рд╕рдВрджрд░реНрдн тАФ рдХреМрд╢рд▓ (рдорд╛рдВрдЧ рдкрд░)
- тАврдорд╛рдирд╕рд┐рдХ рдореЙрдбрд▓: рдЯреВрд▓рдмреЙрдХреНрд╕
- тАврдХреЗрд╡рд▓ рдЬрд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
- тАврдкреНрд░рддреНрдпреЗрдХ рдХреМрд╢рд▓ рдПрдХ рд╕реНрд╡-рдирд┐рд╣рд┐рдд рдХреНрд╖рдорддрд╛ рд╣реИ
- тАврд╕рдВрджрд░реНрдн рд╡рд┐рдВрдбреЛ рдХреЛ рд╕рд╛рдл рд░рдЦрддрд╛ рд╣реИ
тЪУ 3. рдбрд┐рдЯрд░рдорд┐рдирд┐рд╕реНрдЯрд┐рдХ рд╣реБрдХ тАФ рд░реЗрд▓рд┐рдВрдЧ
- тАврдорд╛рдирд╕рд┐рдХ рдореЙрдбрд▓: рд╕реБрд░рдХреНрд╖рд╛ + рдЕрдиреБрдкрд╛рд▓рди рдкрд░рдд
- тАврд╕рдВрднрд╛рд╡реНрдп рдирд╣реАрдВ
- тАвLLM рддрд░реНрдХ рд╕реЗ рдкрд╣рд▓реЗ / рдмрд╛рдж рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИ
- тАврдЙрди рдирд┐рдпрдореЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрднреА рд╡рд┐рдлрд▓ рдирд╣реАрдВ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП
3. рдЕрдиреБрд╢рдВрд╕рд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрд░рдЪрдирд╛
my-task-agent/ тФЬтФАтФА .cursorrules тФЬтФАтФА main.py тФЬтФАтФА tools/ тФВ тФФтФАтФА linear_mcp.py тФФтФАтФА README.md
4. рд╕реНрдЯреЗрдЯрд┐рдХ рд╕рдВрджрд░реНрдн рдЙрджрд╛рд╣рд░рдг: .cursorrules
# рднреВрдорд┐рдХрд╛\nрдЖрдк рдкреНрд░реЛрдбрдХреНрд╢рди-рдЧреНрд░реЗрдб рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рдПрдХ рд╡рд░рд┐рд╖реНрда Python рдЗрдВрдЬреАрдирд┐рдпрд░ рд╣реИрдВред\n\n# рдирд┐рдпрдо\n- рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХрднреА рднреА print() рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ\n- рдлрд╝рдВрдХреНрд╢рдиреЛрдВ рдореЗрдВ рд╣рдореЗрд╢рд╛ type hints рдЬреЛрдбрд╝реЗрдВ\n- рдпрджрд┐ >3 рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЫреВрдирд╛ рд╣реЛ рддреЛ рдПрдХ рдпреЛрдЬрдирд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд░реЗрдВ\n\n# рд╡реНрдпрд╡рд╣рд╛рд░\n- рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░рд╣реЗрдВ\n- рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдиреЗ рдкрд░ рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╢реНрди рдкреВрдЫреЗрдВ\n\nрд╕рдВрджрд░реНрдн: https://github.com/PatrickJS/awesome-cursorrules
5. рдбрд╛рдпрдиреЗрдорд┐рдХ рд╕реНрдХрд┐рд▓ рдЙрджрд╛рд╣рд░рдг (MCP)
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("DevTools")
@mcp.tool()
def create_linear_ticket(title: str, priority: str = "low") -> str:
ticket_id = f"LIN-{hash(title) % 10000}"
return f"рдкреНрд░рд╛рдердорд┐рдХрддрд╛={priority} рдХреЗ рд╕рд╛рде рдЯрд┐рдХрдЯ {ticket_id} рдмрдирд╛рдпрд╛ рдЧрдпрд╛"
if __name__ == "__main__":
mcp.run()
рд╕рдВрджрд░реНрдн: https://github.com/modelcontextprotocol/python-sdk6. рдбрд┐рдЯрд░рдорд┐рдирд┐рд╕реНрдЯрд┐рдХ рд╣реБрдХ рдЙрджрд╛рд╣рд░рдг
def compliance_check_hook(state):
user_input = state["messages"][-1].content.lower()
if "рдкрд╛рд╕рд╡рд░реНрдб" in user_input or "api_key" in user_input:
return {"error": "рд╕реБрд░рдХреНрд╖рд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛"}
return agent_node(state)
рд╕рдВрджрд░реНрдн: https://langchain-ai.github.io/langgraph/рдпрджрд┐ рдЖрдкрдХрд╛ рдПрдЬреЗрдВрдЯ рдХреЗрд╡рд▓ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рджреЗрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рдЪреИрдЯрдмреЙрдЯ рд╣реИред рдпрджрд┐ рдпрд╣ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рдЯрд╛рд╕реНрдХ рдПрдЬреЗрдВрдЯ рд╣реИред


