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

1. рдХреЛрд░ рд╢рд┐рдлреНрдЯ: QA рдмреЙрдЯ тЖТ рдХрд╛рд░реНрдп рдПрдЬреЗрдВрдЯ
рдЖрдЬ рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдПрдЖрдИ рд╕рд┐рд╕реНрдЯрдо рдЕрднреА рднреА рд╕рдВрджрд░реНрдн-рднрд░реЗ QA рдмреЙрдЯ рд╣реИрдВ:
тАв рд╡реЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдЕрдЪреНрдЫрд╛ рдЙрддреНрддрд░ рджреЗрддреЗ рд╣реИрдВ
тАв рд╡реЗ рджрдмрд╛рд╡ рдореЗрдВ рднреНрд░рд╛рдВрддрд┐рдпрд╛рдБ рдкреИрджрд╛ рдХрд░рддреЗ рд╣реИрдВ
тАв рд╡реЗ рдирд┐рд╖реНрдкрд╛рджрди, рд╕реБрд░рдХреНрд╖рд╛ рдФрд░ рд╕реНрдерд┐рд░рддрд╛ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдЧрд╛рд░рдВрдЯреА рдХреА рдХрдореА рд░рдЦрддреЗ рд╣реИрдВ
ЁЯТб рдореБрдЦреНрдп рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐: рд╕рдВрджрд░реНрдн рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рди рдХрд░реЗрдВред рдЗрд╕реЗ рд╕рдВрд░рдЪрдирд╛ рджреЗрдВред
2. рддреАрди-рд╕реНрддрд░реАрдп рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░
ЁЯз▒ 1. рд╕реНрдерд┐рд░ рд╕рдВрджрд░реНрдн тАФ рдирд┐рдпрдо (рд╣рдореЗрд╢рд╛ рдЪрд╛рд▓реВ)
- тАврдорд╛рдирд╕рд┐рдХ рдореЙрдбрд▓: рдХрд░реНрдордЪрд╛рд░реА рд╣реИрдВрдбрдмреБрдХ
- тАврд╣рдореЗрд╢рд╛ рд▓реЛрдбреЗрдб
- тАврдкрд╣рдЪрд╛рди, рдХреЛрдбрд┐рдВрдЧ рдорд╛рдирдХ, рд╡реНрдпрд╡рд╣рд╛рд░рд╛рддреНрдордХ рд╕реАрдорд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ
- тАврднреНрд░рдордг рдФрд░ рд╢реИрд▓реА рдХреЗ рдкреНрд░рд╡рд╛рд╣ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ
- тАврдЫреЛрдЯрд╛, рд╕реНрдерд┐рд░, рдорд╛рдирд╡-рд╕рдВрдкрд╛рджрдиреАрдп
ЁЯЫая╕П 2. рдЧрддрд┐рд╢реАрд▓ рд╕рдВрджрд░реНрдн тАФ рдХреМрд╢рд▓ (рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░)
- тАврдорд╛рдирд╕рд┐рдХ рдореЙрдбрд▓: рдЯреВрд▓рдмреЙрдХреНрд╕
- тАврдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдиреЗ рдкрд░ рд▓реЛрдбреЗрдб
- тАврдкреНрд░рддреНрдпреЗрдХ рдХреМрд╢рд▓ рдПрдХ рдЖрддреНрдо-contained рдХреНрд╖рдорддрд╛ рд╣реИ
- тАврд╕рдВрджрд░реНрдн рд╡рд┐рдВрдбреЛ рдХреЛ рд╕рд╛рдл рд░рдЦрддрд╛ рд╣реИ
тЪУ 3. рдирд┐рд░реНрдзрд╛рд░рдХ рд╣реБрдХ тАФ рдЧрд╛рд░реНрдбрд░реЗрд▓
- тАврдорд╛рдирд╕рд┐рдХ рдореЙрдбрд▓: рд╕реБрд░рдХреНрд╖рд╛ + рдЕрдиреБрдкрд╛рд▓рди рдкрд░рдд
- тАврд╕рдВрднрд╛рд╡реНрдп рдирд╣реАрдВ
- тАвLLM рддрд░реНрдХ рд╕реЗ рдкрд╣рд▓реЗ / рдмрд╛рдж рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИ
- тАврдРрд╕реЗ рдирд┐рдпрдо рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрднреА рд╡рд┐рдлрд▓ рдирд╣реАрдВ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП
3. рдЕрдиреБрд╢рдВрд╕рд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрд░рдЪрдирд╛
my-task-agent/ тФЬтФАтФА .cursorrules тФЬтФАтФА main.py тФЬтФАтФА tools/ тФВ тФФтФАтФА linear_mcp.py тФФтФАтФА README.md
4. рд╕реНрдерд┐рд░ рд╕рдВрджрд░реНрдн рдЙрджрд╛рд╣рд░рдг: .cursorrules
# рднреВрдорд┐рдХрд╛ рдЖрдк рдПрдХ рд╡рд░рд┐рд╖реНрда рдкрд╛рдпрдерди рдЗрдВрдЬреАрдирд┐рдпрд░ рд╣реИрдВ рдЬреЛ рдЙрддреНрдкрд╛рджрди-рдЧреНрд░реЗрдб рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред # рдирд┐рдпрдо - рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХрднреА рднреА print() рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ - рд╣рдореЗрд╢рд╛ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдк-рд╣рд┐рдВрдЯ рдХрд░реЗрдВ - рдпрджрд┐ 3 рд╕реЗ рдЕрдзрд┐рдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЫреВрдирд╛ рд╣реИ рддреЛ рдПрдХ рдпреЛрдЬрдирд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд░реЗрдВ # рд╡реНрдпрд╡рд╣рд╛рд░ - рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░рд╣реЗрдВ - рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╢реНрди рдкреВрдЫреЗрдВ рд╕рдВрджрд░реНрдн: 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"Created ticket {ticket_id} with priority={priority}"
if __name__ == "__main__":
mcp.run()
рд╕рдВрджрд░реНрдн: https://github.com/modelcontextprotocol/python-sdk6. рдирд┐рд░реНрдзрд╛рд░рдХ рд╣реБрдХ рдЙрджрд╛рд╣рд░рдг
def compliance_check_hook(state):
user_input = state["messages"][-1].content.lower()
if "password" in user_input or "api_key" in user_input:
return {"error": "рд╕реБрд░рдХреНрд╖рд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛"}
return agent_node(state)
рд╕рдВрджрд░реНрдн: https://langchain-ai.github.io/langgraph/рдпрджрд┐ рдЖрдкрдХрд╛ рдПрдЬреЗрдВрдЯ рдХреЗрд╡рд▓ рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдЙрддреНрддрд░ рджреЗрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рдЪреИрдЯрдмреЙрдЯ рд╣реИред рдпрджрд┐ рдпрд╣ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рдХрд╛рд░реНрдп рдПрдЬреЗрдВрдЯ рд╣реИред
Take the next step
Putting what you read into practice.
рд╕рдВрдмрдВрдзрд┐рдд рд▓реЗрдЦ
DS & AI Engineering
рд╣рдордиреЗ рдПрдХ AI рд╕рд╛рдордЧреНрд░реА рдЙрддреНрдкрд╛рджрди рдкреНрд░рдгрд╛рд▓реА рдХреИрд╕реЗ рдмрдирд╛рдИ (рд╕рд┐рд░реНрдл рдЙрдкрдХрд░рдг рдирд╣реАрдВ)

Practical AI Platform: How Mid-Sized Tech Companies Win with AI
